Amazon Aurora
Aurora 用户指南 (API 版本 2014-10-31)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 Aurora 只读副本将数据从 PostgreSQL 数据库实例迁移到 Aurora PostgreSQL 数据库集群

Amazon RDS 使用 PostgreSQL 数据库引擎的流式复制功能为源 PostgreSQL 数据库实例创建一个特殊类型的数据库集群,称为 Aurora 只读副本。对源 PostgreSQL 数据库实例的更新将异步复制到 Aurora 只读副本。

我们建议您创建源 PostgreSQL 数据库实例的 Aurora 只读副本,以使用该功能从 Amazon RDS PostgreSQL 数据库实例迁移到 Aurora PostgreSQL 数据库集群。在 PostgreSQL 数据库实例和 Aurora 只读副本之间的副本滞后为 0 时,您可以将 Aurora 只读副本提升为可接受写入负载的单独 Aurora PostgreSQL 数据库集群。准备迁移需要花费一段时间,每 TiB 数据大约需要几小时。在迁移期间,Amazon RDS PostgreSQL 实例将累积提前写入日志段 (WAL)。您应该确保 Amazon RDS 实例具有足够的存储容量来容纳这些段。

有关 Aurora 可用的区域的列表,请参阅 AWS General Reference 中的 Amazon Aurora

在创建 PostgreSQL 数据库实例的 Aurora 只读副本时,Amazon RDS 为源 PostgreSQL 数据库实例创建数据库快照(Amazon RDS 私有,不产生费用)。然后,Amazon RDS 将数据从数据库快照迁移到 Aurora 只读副本。在将数据从数据库快照迁移到新的 Aurora PostgreSQL 数据库集群后,Amazon RDS 在 PostgreSQL 数据库实例和 Aurora PostgreSQL 数据库集群之间开始复制。

一个 PostgreSQL 数据库实例只能有一个 Aurora 只读副本。另外,如果您尝试创建 Amazon RDS PostgreSQL 实例的 Aurora 只读副本,但已具有只读副本,则会拒绝该请求。

注意

由于 Amazon Aurora PostgreSQL 和作为复制主实例的 Amazon RDS PostgreSQL 数据库实例的 PostgreSQL 数据库引擎版本之间的功能不同,可能导致复制问题。您只能从与 Amazon RDS PostgreSQL 版本兼容的 Aurora PostgreSQL 实例中复制。例如,如果支持的 Aurora PostgreSQL 版本为 9.6.3,则 Amazon RDS PostgreSQL 数据库实例必须运行 9.6.1 或更高版本。如果遇到错误,您可以在 Amazon RDS 社区论坛或联系 AWS Support 以获得帮助。

有关 PostgreSQL 只读副本的更多信息,请参阅 Amazon Relational Database Service 用户指南 中的使用 MariaDB、MySQL 和 PostgreSQL 数据库实例的只读副本

准备将数据从 Amazon RDS PostgreSQL 迁移到 Aurora PostgreSQL

在将数据从 Amazon RDS PostgreSQL 实例迁移到 Aurora PostgreSQL 集群之前,您应该确保实例具有足够的存储容量以容纳在迁移期间累积的提前写入日志段 (WAL)。您可以使用几个指标来检查此情况。

指标 描述

可用存储空间

可用存储空间。

单位:字节

OldestReplicationSlotLag

最滞后的副本中的 WAL 数据的滞后大小。

单位:MB

RDSToAuroraPostgreSQLReplicaLag

Aurora PostgreSQL 数据库集群滞后于源 RDS 数据库实例的时间长度,以秒为单位。

TransactionLogsDiskUsage

事务日志使用的磁盘空间。

单位:MB

有关监控 Amazon RDS 实例的更多信息,请参阅监控 Amazon Aurora 数据库集群

创建 Aurora 只读副本

您可以使用控制台或 AWS CLI 为 PostgreSQL 数据库实例创建 Aurora 只读副本。

AWS 管理控制台

从源 PostgreSQL 数据库实例创建 Aurora 只读副本

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 在导航窗格中,选择 Instances

  3. 选择要作为 Aurora 只读副本来源的 PostgreSQL 数据库实例,然后从实例操作中选择创建 Aurora 只读副本

    
                                    创建 Aurora 只读副本
  4. 按照下表所述,选择 Aurora 只读副本要使用的数据库集群规格。

    选项 描述

    数据库实例类

    选择定义数据库集群中主实例的处理和内存要求的数据库实例类。有关数据库实例类选项的更多信息,请参阅选择数据库实例类

    多可用区部署

    选择在其他区域创建副本可在目标区域的另一个可用区中创建新数据库集群的写入方实例。有关多可用区的详细信息,请参阅选择区域和可用区

    数据库实例标识符

    键入 Aurora 只读副本数据库集群中主实例的名称。此标识符在新数据库集群主实例的终端节点地址中使用。

    数据库实例标识符具有以下限制:

    • 它必须包含 1 到 63 个字母数字字符或连字符。

    • 它的第一个字符必须是字母。

    • 它不能以连字符结束或包含两个连续连字符。

    • 它对于每个区域每个 AWS 账户的所有数据库实例必须是唯一的。

    由于 Aurora 只读副本数据库集群是从源数据库实例快照创建的,因此,Aurora 只读副本的主用户名和主密码与源数据库实例的主用户名和主密码相同。

    VPC

    选择将托管数据库集群的 VPC。选择 Create a New VPC 以让 Amazon RDS 为您创建 VPC。有关更多信息,请参阅数据库集群先决条件

    子网组

    选择要用于数据库集群的数据库子网组。选择 Create a New DB Subnet Group 以让 Amazon RDS 为您创建数据库子网组。有关更多信息,请参阅数据库集群先决条件

    公开访问

    选择 Yes 可向数据库集群提供公有 IP 地址;否则,请选择 No。数据库集群可以混合使用公有和私有数据库实例。有关隐藏实例以防止公开访问的更多信息,请参阅从 Internet 隐藏 VPC 中的数据库实例

    可用区

    确定您是否希望指定特定的可用区。有关可用区的更多信息,请参阅选择区域和可用区

    VPC 安全组

    选择一个或多个 VPC 安全组以保护对数据库集群的网络访问。选择 Create a New VPC Security Group 以让 Amazon RDS 为您创建 VPC 安全组。有关更多信息,请参阅数据库集群先决条件

    DB Cluster Identifier

    键入 Aurora 只读副本数据库集群的名称,它对于副本的目标 AWS 区域中的账户是唯一的。此标识符将在数据库集群的集群终端节点地址中使用。有关集群终端节点的信息,请参阅 Amazon Aurora 连接管理

    数据库集群标识符具有以下限制:

    • 它必须包含 1 到 63 个字母数字字符或连字符。

    • 它的第一个字符必须是字母。

    • 它不能以连字符结束或包含两个连续连字符。

    • 它对于每个区域每个 AWS 账户的所有数据库集群必须是唯一的。

    数据库端口

    指定应用程序和实用程序用来访问数据库的端口。Aurora PostgreSQL 数据库集群默认为使用默认 PostgreSQL 端口 5432。有些公司的防火墙不允许连接到此端口。如果您的公司防火墙阻止使用默认端口,请为新数据库集群选择其他端口。

    数据库参数组

    为 Aurora PostgreSQL 数据库集群选择数据库参数组。Aurora 具有一个可使用的默认数据库参数组,您也可以创建自己的数据库参数组。有关数据库参数组的更多信息,请参阅 使用数据库参数组和数据库集群参数组

    数据库集群参数组

    为 Aurora PostgreSQL 数据库集群选择数据库集群参数组。Aurora 具有一个可使用的默认数据库集群参数组,您也可以创建自己的数据库集群参数组。有关数据库集群参数组的更多信息,请参阅 使用数据库参数组和数据库集群参数组

    启用加密

    对于要进行静态加密的新 Aurora 数据库集群,选择 Yes。如果选择 Yes (是),则需要选择一个 AWS KMS 加密密钥作为 Master Key (主密钥) 值。

    优先级

    选择数据库集群的故障转移优先级。如果您未选择值,则默认值为 tier-1。此优先级决定从主实例故障恢复时提升 Aurora 副本的顺序。有关更多信息,请参阅 Aurora 数据库集群的容错能力

    备份保留期

    选择 Aurora 将保留数据库的备份副本的时间长度 (1 到 35 天)。可使用备份副本对数据库执行时间点还原 (PITR),以还原到第二个时间点。

    启用增强监测

    选择 Yes 可实时收集您的数据库集群在其上运行的操作系统的指标。有关更多信息,请参阅增强监测

    监控角色

    用于增强监控的 IAM 角色。有关更多信息,请参阅设置和启用增强监测

    粒度

    只有在启用增强监测设置为Yes时可用。设置为数据库集群收集指标的时间间隔(以秒为单位)。

    自动次要版本升级

    选择 Enable auto minor version upgrade (启用自动次要版本升级) 可让您的 Amazon Aurora PostgreSQL 数据库集群在次要 PostgreSQL 数据库引擎版本升级可用时自动接收这些升级。

    自动次要版本升级选项仅适用于升级到 Amazon Aurora PostgreSQL 数据库集群的 PostgreSQL 次要引擎版本。它不适用于应用于维持系统稳定性的常规修补程序。

    维护时段

    选择可以进行系统维护的每周时间范围。

  5. 选择 Create Read Replica

CLI

要从源 PostgreSQL 数据库实例中创建 Aurora 只读副本,请使用 create-db-cluster create-db-instance AWS CLI 命令创建新的 Aurora PostgreSQL 数据库集群。当您调用 create-db-cluster 命令时,请加入 --replication-source-identifier 参数,识别源 MySQL 数据库实例的 Amazon 资源名称 (ARN)。有关 Amazon RDS ARN 的更多信息,请参阅 Amazon Relational Database Service (Amazon RDS)

不要指定主用户名、主密码或数据库名称,因为 Aurora 只读副本使用和源 PostgreSQL 数据库实例相同的主用户名、主密码和数据库名称。

针对 Linux、OS X 或 Unix:

aws rds create-db-cluster --db-cluster-identifier sample-replica-cluster --engine aurora-postgresql \ --db-subnet-group-name mysubnetgroup --vpc-security-group-ids sg-c7e5b0d2 \ --replication-source-identifier arn:aws-cn:rds:us-west-2:123456789012:db:master-postgresql-instance

对于 Windows:

aws rds create-db-cluster --db-cluster-identifier sample-replica-cluster --engine aurora-postgresql ^ --db-subnet-group-name mysubnetgroup --vpc-security-group-ids sg-c7e5b0d2 ^ --replication-source-identifier arn:aws-cn:rds:us-west-2:123456789012:db:master-postgresql-instance

如果您使用控制台创建 Aurora 只读副本,Amazon RDS 将自动为您的数据库集群 Aurora 只读副本创建主实例。如果您使用 AWS CLI 创建 Aurora 只读副本,则必须明确为数据库集群创建主实例。主实例是在数据库集群中创建的第一个实例。

您可以使用带以下参数的 create-db-instance AWS CLI 命令为数据库集群创建主实例。

  • --db-cluster-identifier

    数据库集群的名称。

  • --db-instance-class

    要用于主实例的数据库实例类的名称。

  • --db-instance-identifier

    主实例的名称。

  • --engine aurora-postgresql

    要使用的数据库引擎。

在该示例中,您将使用 myinstanceclass 中指定的数据库实例类为名为 myreadreplicacluster 的数据库集群创建一个名为 myreadreplicainstance 的主实例。

针对 Linux、OS X 或 Unix:

aws rds create-db-instance \ --db-cluster-identifier myreadreplicacluster \ --db-instance-class myinstanceclass --db-instance-identifier myreadreplicainstance \ --engine aurora-postgresql

对于 Windows:

aws rds create-db-instance \ --db-cluster-identifier myreadreplicacluster \ --db-instance-class myinstanceclass --db-instance-identifier myreadreplicainstance \ --engine aurora-postgresql

API

要从源 PostgreSQL 数据库实例中创建 Aurora 只读副本,请使用 CreateDBClusterCreateDBInstance Amazon RDS API 命令创建新的 Aurora 数据库集群和主实例。不要指定主用户名、主密码或数据库名称,因为 Aurora 只读副本使用和源 PostgreSQL 数据库实例相同的主用户名、主密码和数据库名称。

您可以使用具有以下参数的 CreateDBCluster Amazon RDS API 命令从源 PostgreSQL 数据库实例中为 Aurora 只读副本创建新的 Aurora 数据库集群:

  • DBClusterIdentifier

    要创建的数据库集群的名称。

  • DBSubnetGroupName

    要与该数据库集群关联的数据库子网组的名称。

  • Engine=aurora-postgresql

    要使用的引擎的名称。

  • ReplicationSourceIdentifier

    源 PostgreSQL 数据库实例的 Amazon 资源名称 (ARN)。有关 Amazon RDS ARN 的更多信息,请参阅 Amazon Relational Database Service (Amazon RDS)

  • VpcSecurityGroupIds

    要与该数据库集群关联的 EC2 VPC 安全组列表。

在该示例中,您将从 ARN 设置为 mysqlmasterARN、与名为 mysubnetgroup 的数据库子网组和名为 mysecuritygroup 的 VPC 安全组关联的源 PostgreSQL 数据库实例创建一个名为 myreadreplicacluster 的数据库集群。

https://rds.us-east-1.amazonaws.com/ ?Action=CreateDBCluster &DBClusterIdentifier=myreadreplicacluster &DBSubnetGroupName=mysubnetgroup &Engine=aurora-postgresql &ReplicationSourceIdentifier=mysqlmasterARN &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-10-31 &VpcSecurityGroupIds=mysecuritygroup &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20150927/us-east-1/rds/aws4_request &X-Amz-Date=20150927T164851Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=6a8f4bd6a98f649c75ea04a6b3929ecc75ac09739588391cd7250f5280e716db

如果您使用控制台创建 Aurora 只读副本,Amazon RDS 将自动为您的数据库集群 Aurora 只读副本创建主实例。如果您使用 AWS CLI 创建 Aurora 只读副本,则必须明确为数据库集群创建主实例。主实例是在数据库集群中创建的第一个实例。

您可以使用带以下参数的 CreateDBInstance Amazon RDS API 命令为数据库集群创建主实例:

  • DBClusterIdentifier

    数据库集群的名称。

  • DBInstanceClass

    要用于主实例的数据库实例类的名称。

  • DBInstanceIdentifier

    主实例的名称。

  • Engine=aurora-postgresql

    要使用的引擎的名称。

在该示例中,您将使用 myinstanceclass 中指定的数据库实例类为名为 myreadreplicacluster 的数据库集群创建一个名为 myreadreplicainstance 的主实例。

https://rds.us-east-1.amazonaws.com/ ?Action=CreateDBInstance &DBClusterIdentifier=myreadreplicacluster &DBInstanceClass=myinstanceclass &DBInstanceIdentifier=myreadreplicainstance &Engine=aurora-postgresql &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-09-01 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20140424/us-east-1/rds/aws4_request &X-Amz-Date=20140424T194844Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=bee4aabc750bf7dad0cd9e22b952bd6089d91e2a16592c2293e532eeaab8bc77

提升 Aurora 只读副本

在迁移完成后,您可以将 Aurora 只读副本提升为单独数据库集群,并将客户端应用程序引导到 Aurora 只读副本的终端节点。有关 Aurora 终端节点的更多信息,请参阅Amazon Aurora 连接管理。提升会很快完成。在提升完成之前,您无法删除 PostgreSQL 主数据库实例,或取消数据库实例和 Aurora 只读副本之间的链接。

在提升 Aurora 只读副本之前,禁止任何事务写入到源 PostgreSQL 数据库实例,然后等待 Aurora 只读副本的副本滞后达到 0。

在提升后,通过以下方法确认提升已完成:在导航窗格中选择实例,并确认 Aurora 只读副本具有一个已将只读副本集群提升为单独数据库集群事件。提升完成后,PostgreSQL 主数据库实例和 Aurora 只读副本之间的链接会取消,如果您愿意,可以安全删除数据库实例。

AWS 管理控制台

将 Aurora 只读副本提升为 Aurora 数据库集群

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 在导航窗格中,选择 Instances

  3. 为 Aurora 只读副本选择数据库实例,然后从实例操作中选择提升只读副本

  4. 选择 Promote Read Replica

CLI

要将 Aurora 只读副本提升为独立数据库群集,请使用 promote-read-replica-db-cluster AWS CLI 命令。

针对 Linux、OS X 或 Unix:

aws rds promote-read-replica-db-cluster \ --db-cluster-identifier myreadreplicacluster

对于 Windows:

aws rds promote-read-replica-db-cluster ^ --db-cluster-identifier myreadreplicacluster

相关主题