将数据迁移到与 PostgreSQL 兼容的 Amazon Aurora - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

将数据迁移到与 PostgreSQL 兼容的 Amazon Aurora

对于将数据从现有数据库迁移到 Amazon Aurora PostgreSQL 兼容版 数据库集群,您有多种选择。您的迁移选项还取决于您从中迁移数据的数据库和您迁移数据的规模。以下是您的选择:

使用快照迁移 RDS for PostgreSQL 数据库实例

您可以将数据直接从 RDS for PostgreSQL 数据库快照迁移到 Aurora PostgreSQL 数据库集群。

使用 Aurora 只读副本迁移 RDS for PostgreSQL 数据库实例

也可以通过创建 PostgreSQL 数据库实例的 Aurora PostgreSQL 只读副本从 RDS for PostgreSQL 数据库实例进行迁移。当 RDS for PostgreSQL 数据库实例和 Aurora PostgreSQL 只读副本之间的副本滞后为 0 时,您可以停止复制。此时,您可以将 Aurora 只读副本作为独立的 Aurora PostgreSQL 数据库集群以进行读取和写入。

将 Amazon S3 中的数据导入到 Aurora PostgreSQL

您可以通过将数据从 Amazon S3 导入属于 Aurora PostgreSQL 数据库集群的表来迁移数据。

从与 PostgreSQL 不兼容的数据库迁移

您可以使用 Amazon Database Migration Service (Amazon DMS) 从非 PostgreSQL 兼容数据库中迁移数据。有关 Amazon DMS 的更多信息,请参阅 Amazon Database Migration Service 用户指南中的什么是 AmazonDatabase Migration Service?

有关 Aurora 可用的 Amazon Web Services 区域的列表,请参阅《Amazon Web Services 一般参考》中的 Amazon Aurora

重要

如果您计划在不久的将来将 RDS for PostgreSQL 数据库实例迁移到 Aurora PostgreSQL 数据库集群,我们强烈建议您在迁移规划阶段的早期禁用数据库实例的自动次要版本升级。如果 Aurora PostgreSQL 尚不支持 RDS for PostgreSQL 版本,迁移到 Aurora PostgreSQL 可能会延迟。

有关 Aurora PostgreSQL 版本的信息,请参阅 Amazon Aurora PostgreSQL 的引擎版本

将 RDS for PostgreSQL 数据库的快照迁移到 Aurora PostgreSQL 数据库集群

要创建 Aurora PostgreSQL 数据库集群,您可以迁移 RDS for PostgreSQL 数据库实例的数据库快照。将使用原始 RDS for PostgreSQL 数据库实例中的数据填充新的 Aurora PostgreSQL 数据库集群。有关创建数据库快照的信息,请参阅创建数据库快照

在某些情况下,数据库快照可能不在要查找数据的 Amazon Web Services 区域 中。如果是这样的话,请使用 Amazon RDS 控制台将数据库快照复制到该 Amazon Web Services 区域。有关复制数据库快照的信息,请参阅复制数据库快照

您可以迁移与给定 Amazon Web Services 区域 中可用 Aurora PostgreSQL 版本兼容的 RDS for PostgreSQL 快照。例如,您可以将 RDS for PostgreSQL 11.1 数据库实例中的快照迁移到美国西部(加利福尼亚北部)区域中的 Aurora PostgreSQL 版本 11.4、11.7、11.8 或 11.9。您可以将 RDS for PostgreSQL 10.11 快照迁移到 Aurora PostgreSQL 10.11、10.12、10.13 和 10.14。换言之,RDS for PostgreSQL 快照必须使用与 Aurora PostgreSQL 相同的版本或较低的次要版本。

您还可以选择使用 Amazon KMS key 静态加密新的 Aurora PostgreSQL 数据库集群。该选项仅适用于未加密的数据库快照。

要将 RDS for PostgreSQL 数据库快照迁移到 Aurora PostgreSQL 数据库集群,您可以使用 Amazon Web Services Management Console、Amazon CLI 或 RDS API。使用 Amazon Web Services Management Console 时,控制台将执行必要的操作创建数据库集群和主实例。

使用 RDS 控制台迁移 PostgreSQL 数据库快照
  1. 登录Amazon Web Services Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 选择 Snapshots

  3. Snapshots (快照) 页面上,选择要迁移到 Aurora PostgreSQL 数据库集群的 RDS for PostgreSQL 快照。

  4. 选择 Actions(操作),然后选择 Migrate snapshot(迁移快照)。

  5. Migrate Database(迁移数据库)页面上设置以下值:

    • DB engine version(数据库引擎版本):选择要用于新迁移实例的数据库引擎版本。

    • DB instance identifier(数据库实例标识符):为数据库集群输入一个名称,该名称在您选择的 Amazon Web Services 区域 中对于您的账户是唯一的。此标识符将在数据库集群中实例的终端节点地址中使用。您可以选择对该名称进行一些巧妙处理,例如,包括选定的 Amazon Web Services 区域 和数据库引擎(例如 aurora-cluster1)。

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

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

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

      • 它不能以连字符结尾,也不能包含两个连续连字符。

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

    • DB instance class (数据库实例类):选择具有数据库所需的存储和容量的数据库实例类,例如 db.r6g.large。Aurora 集群卷随着数据库中数据量的增加自动增大。因此,您只需选择满足当前存储要求的数据库实例类。有关更多信息,请参阅Amazon Aurora 存储概述

    • Virtual Private Cloud (VPC):如果已具有 VPC,您可以选择 VPC 标识符(如 vpc-a464d1c1)以将该 VPC 用于 Aurora PostgreSQL 数据库集群。有关如何创建 VPC 的信息,请参阅教程:创建 VPC 以用于数据库集群(仅限 IPv4)

      否则,可以通过选择 Create a new VPC(新建 VPC),让 Amazon RDS 为您创建 VPC。

    • DB subnet group(数据库子网组):如果已具有子网组,则可通过选择您的子网组标识符(例如 gs-subnet-group1)来将该子网组用于 Aurora PostgreSQL 数据库集群。

    • Public access(公开访问):选择 No(否)可指定数据库集群中的实例只能由 VPC 内的资源访问。选择 Yes (是) 可指定数据库集群中的实例可以由公用网络上的资源访问。

      注意

      您的生产数据库集群可能不需要位于公有子网中,因为仅应用程序服务器将需要访问数据库集群。如果数据库集群不需要位于公有子网中,请将 Public access(公开访问)设置为 No(否)。

    • VPC security group(VPC 安全组):选择 VPC 安全组以允许访问数据库。

    • Availability Zone (可用区):选择为 Aurora PostgreSQL 数据库集群托管主实例的可用区。要让 Amazon RDS 为您选择可用区,请选择 No Preference(无首选项)。

    • Database port(数据库端口):输入在连接到 Aurora PostgreSQL 数据库集群中的实例时使用的默认端口。默认为 5432

      注意

      您可能位于企业防火墙后面,该防火墙不允许访问默认端口 (例如,PostgreSQL 默认端口 5432)。在此情况下,请提供企业防火墙允许的端口值。请记住此端口值,以便在稍后连接到 Aurora PostgreSQL 数据库集群时使用。

    • Enable Encryption(启用加密):为要静态加密的新 Aurora PostgreSQL 数据库集群选择 Enable Encryption(启用加密)。另外,选择 KMS 密钥作为 Amazon KMS key 值。

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

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

  6. 选择 Migrate 以迁移您的数据库快照。

  7. 选择 Databases(数据库)以查看新的数据库集群。选择新的数据库集群以监控迁移进度。迁移完成后,集群的状态为 Available(可用)。在 Connectivity & security(连接和安全性)选项卡上,您可以找到用于连接数据库集群主写入器实例的集群终端节点。有关连接到 Aurora PostgreSQL 数据库集群的更多信息,请参阅连接到 Amazon Aurora 数据库集群

使用 Amazon CLI 将 RDS for PostgreSQL 数据库快照迁移到 Aurora PostgreSQL 涉及两个单独的 Amazon CLI 命令。首先,请使用 restore-db-cluster-from-snapshot Amazon CLI 命令创建新的 Aurora PostgreSQL 数据库集群。然后,使用 create-db-instance 命令在新集群中创建主数据库实例来完成迁移。以下过程创建 Aurora PostgreSQL 数据库集群,其主数据库实例配置与用于创建快照的数据库实例配置相同。

将 RDS for PostgreSQL 数据库快照迁移到 Aurora PostgreSQL 数据库集群
  1. 使用 describe-db-snapshots 命令来获取要迁移的数据库快照的信息。您可以在命令中指定 --db-instance-identifier 参数或 --db-snapshot-identifier。如果未指定参数,则将获得所有快照。

    aws rds describe-db-snapshots --db-instance-identifier <your-db-instance-name>
  2. 该命令返回从指定数据库实例创建的快照的所有配置详细信息。在输出中,找到要迁移的快照及其 Amazon Resource Name (ARN)。要了解有关 Amazon RDS ARN 的更多信息,请参阅 Amazon Relational Database Service (Amazon RDS)。ARN 看上去类似于以下输出。

    “DBSnapshotArn": "arn:aws:rds:aws-region:111122223333:snapshot:<snapshot_name>"

    此外,您还可以在输出中找到 RDS for PostgreSQL 数据库实例的配置详细信息,例如引擎版本、分配的存储空间、数据库实例是否加密,等等。

  3. 使用 restore-db-cluster-from-snapshot 命令启动迁移。指定以下参数:

    • --db-cluster-identifier:要为 Aurora PostgreSQL 数据库集群指定的名称。此 Aurora 数据库集群是数据库快照迁移的目标。

    • --snapshot-identifier:待迁移数据库快照的 Amazon Resource Name (ARN)。

    • --engine:为 Aurora 数据库集群引擎指定 aurora-postgresql

    • --kms-key-id:此可选参数允许您从未加密的数据库快照创建加密的 Aurora PostgreSQL 数据库集群。此参数还允许您为数据库集群选择与数据库快照所用密钥不同的加密密钥。

      注意

      您无法从加密的数据库快照创建未加密的 Aurora PostgreSQL 数据库集群。

    如果没有如下所示指定的 --kms-key-id 参数,restore-db-cluster-from-snapshot Amazon CLI 命令将创建一个空的 Aurora PostgreSQL 数据库集群,该集群将使用与数据库快照相同的密钥加密,如果源数据库快照未加密,则该集群将不会加密。

    对于 Linux、macOS 或 Unix:

    aws rds restore-db-cluster-from-snapshot \ --db-cluster-identifier cluster-name \ --snapshot-identifier arn:aws:rds:aws-region:111122223333:snapshot:your-snapshot-name \ --engine aurora-postgresql

    对于 Windows:

    aws rds restore-db-cluster-from-snapshot ^ --db-cluster-identifier new_cluster ^ --snapshot-identifier arn:aws:rds:aws-region:111122223333:snapshot:your-snapshot-name ^ --engine aurora-postgresql
  4. 该命令将返回为迁移创建的 Aurora PostgreSQL 数据库集群的详细信息。您可以使用 describe-db-clusters Amazon CLI 命令查看 Aurora PostgreSQL 数据库集群的状态。

    aws rds describe-db-clusters --db-cluster-identifier cluster-name
  5. 当数据库集群变为“可用”时,您可以使用 create-db-instance 命令,使用基于 Amazon RDS 数据库快照的数据库实例填充 Aurora PostgreSQL 数据库集群。指定以下参数:

    • --db-cluster-identifier:在前述步骤中创建的新 Aurora PostgreSQL 数据库集群的名称。

    • --db-instance-identifier:要为该数据库实例指定的名称。此实例将成为 Aurora PostgreSQL 数据库集群中的主节点。

    • ----db-instance-class :指定要使用的数据库实例类。从要迁移到的 Aurora PostgreSQL 版本支持的数据库实例类中进行选择。有关更多信息,请参阅 数据库实例类类型数据库实例类支持的数据库引擎

    • --engine:为数据库实例指定 aurora-postgresql

    您还可以使用与源数据库快照不同的配置来创建数据库实例,方法是在 create-db-instance Amazon CLI 命令中传入适当选项。有关更多信息,请参阅 create-db-instance 命令。

    对于 Linux、macOS 或 Unix:

    aws rds create-db-instance \ --db-cluster-identifier cluster-name \ --db-instance-identifier --db-instance-class db.instance.class \ --engine aurora-postgresql

    对于 Windows:

    aws rds create-db-instance ^ --db-cluster-identifier cluster-name ^ --db-instance-identifier --db-instance-class db.instance.class ^ --engine aurora-postgresql

迁移过程完成后,Aurora PostgreSQL 集群拥有已填充的主数据库实例。

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

通过使用 Aurora 只读副本进行迁移过程,您可以使用 RDS for PostgreSQL 数据库实例作为新 Aurora PostgreSQL 数据库集群的基础。Aurora 只读副本选项仅适用于在同一 Amazon Web Services 区域和账户内迁移,并且仅当该区域为 RDS for PostgreSQL 数据库实例提供兼容版本的 Aurora PostgreSQL 时才可用。兼容意味着 Aurora PostgreSQL 版本与 RDS for PostgreSQL 版本相同,或者它是同一主要版本系列中更高的次要版本。

例如,要使用此方法迁移 RDS for PostgreSQL 11.14 数据库实例,该区域必须提供 PostgreSQL 版本 11 系列中的 Aurora PostgreSQL 11.14 版或更高的次要版本。

使用 Aurora 只读副本迁移数据概览

从 RDS for PostgreSQL 数据库实例迁移到 Aurora PostgreSQL 数据库集群是一个多步骤过程。首先,您可创建源 RDS for PostgreSQL 数据库实例的 Aurora 只读副本。这将启动从 RDS for PostgreSQL 数据库实例到特殊用途数据库集群(称为副本集群)的复制过程。副本集群仅由 Aurora 只读副本(读取器实例)组成。

副本集群存在后,您可以监控该集群与源 RDS for PostgreSQL 数据库实例之间的滞后。当副本滞后为零 (0) 时,您可以提升副本集群。复制停止,副本集群将提升为独立的 Aurora 数据库集群,并将读取器提升为集群的写入器实例。然后,您可以将实例添加到 Aurora PostgreSQL 数据库集群,以根据自己的使用案例调整 Aurora PostgreSQL 数据库集群的大小。如果您不再需要 RDS for PostgreSQL 数据库实例,也可以将其删除。

注意

每 TB 数据可能需要几小时才能完成迁移。

如果 RDS for PostgreSQL 数据库实例已有 Aurora 只读副本或已有跨区域只读副本,则无法创建 Aurora 只读副本。

准备使用 Aurora 只读副本迁移数据

在使用 Aurora 只读副本的迁移过程中,对源 RDS for PostgreSQL 数据库实例进行的更新将异步复制到副本集群的 Aurora 只读副本。该过程使用 PostgreSQL 的本机流式复制功能,该功能将预写日志 (WAL) 段存储在源实例上。在开始此迁移过程之前,请检查表中列出的指标的值,确保您的实例具有足够的存储容量。

指标 描述

FreeStorageSpace

可用存储空间。

单位:字节

OldestReplicationSlotLag

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

单位:MB

RDSToAuroraPostgreSQLReplicaLag

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

TransactionLogsDiskUsage

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

单位:MB

有关监控 RDS 实例的更多信息,请参阅 Amazon RDS 用户指南 中的监控

创建 Aurora 只读副本

您可以使用 Amazon Web Services Management Console 或 Amazon CLI 为 RDS for PostgreSQL 数据库实例创建 Aurora 只读副本。仅当 Amazon Web Services 区域提供兼容的 Aurora PostgreSQL 版本时,使用 Amazon Web Services Management Console 创建 Aurora 只读副本的选项才可用。也就是说,仅当 Aurora PostgreSQL 版本与 RDS for PostgreSQL 版本相同或者是同一主要版本系列中更高的次要版本时可用。

从源 PostgreSQL 数据库实例创建 Aurora 只读副本
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases (数据库)

  3. 选择要作为 Aurora 只读副本源的 RDS for PostgreSQL 数据库实例。对于操作,请选择创建 Aurora 只读副本。如果未显示此选项,则意味着该区域中没有兼容的 Aurora PostgreSQL 版本。

    
                                    创建 Aurora 只读副本
  4. 在创建 Aurora 只读副本设置页面上,您可以配置 Aurora PostgreSQL 数据库集群的属性,如下表中所示。副本数据库集群是使用与源相同的“主”用户名和密码从源数据库实例的快照创建的,因此您目前无法更改这些属性。

    选项 描述

    数据库实例类

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

    多可用区部署

    迁移期间不可用

    数据库实例标识符

    输入要为该数据库实例指定的名称。此标识符在新数据库集群主实例的终端节点地址中使用。

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

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

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

    • 它不能以连字符结尾,也不能包含两个连续连字符。

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

    Virtual Private Cloud (VPC)

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

    DB subnet group(数据库子网组)

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

    公开可用性

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

    可用区

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

    VPC 安全组

    选择一个或多个 VPC 安全组以保护对数据库集群的网络访问。选择 Create new VPC security group (新建 VPC 安全组) 以让 Amazon RDS 为您创建 VPC 安全组。有关更多信息,请参阅“数据库集群先决条件”。

    数据库端口

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

    数据库参数组

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

    数据库集群参数组

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

    加密

    为要静态加密的新 Aurora 数据库集群选择启用加密。如果选择启用加密,请也选择一个 KMS 密钥作为 Amazon KMS key 值。

    优先级

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

    备份保留期

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

    增强监控

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

    监控角色

    仅在选择 Enable enhanced monitoring (启用增强监控) 时可用。要用于增强监控的 Amazon Identity and Access Management(IAM)角色。有关更多信息,请参阅“设置和启用增强监控”。

    粒度

    仅在选择 Enable enhanced monitoring (启用增强监控) 时可用。设置为数据库集群收集指标的时间间隔(以秒为单位)。

    自动次要版本升级

    选择 Yes (是) 以使 Aurora PostgreSQL 数据库集群能够在次要 PostgreSQL 数据库引擎版本升级可用时自动接收这些升级。

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

    维护窗口

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

  5. 选择 Create read replica (创建只读副本)

要使用 Amazon CLI 从源 RDS for PostgreSQL 数据库实例创建 Aurora 只读副本,请首先使用 create-db-cluster CLI 命令创建一个空 Aurora 数据库集群。一旦存在数据库集群,您就可以使用 create-db-instance 命令为数据库集群创建主实例。主实例是在 Aurora 数据库集群中创建的第一个实例。在这种情况下,它最初作为 RDS for PostgreSQL 数据库实例的 Aurora 只读副本而创建。当该过程结束时,您的 RDS for PostgreSQL 数据库实例已有效迁移到 Aurora PostgreSQL 数据库集群。

您不需要指定主用户账户(通常为 postgres)、其密码或数据库名称。Aurora 只读副本会自动从您在调用 Amazon CLI 命令时标识的源 RDS for PostgreSQL 数据库实例获取这些信息。

您需要指定要用于 Aurora PostgreSQL 数据库集群和数据库实例的引擎版本。您指定的版本应与源 RDS for PostgreSQL 数据库实例匹配。如果源 RDS for PostgreSQL 数据库实例已加密,您还需要为 Aurora PostgreSQL 数据库集群主实例指定加密。不支持将已加密的实例迁移到未加密的 Aurora 数据库集群。

以下示例创建一个名为 my-new-aurora-cluster 的 Aurora PostgreSQL 数据库集群,该集群将使用未加密的 RDS 数据库源实例。首先,您通过调用 create-db-cluster CLI 命令创建 Aurora PostgreSQL 数据库集群。该示例演示了如何使用可选 --storage-encrypted 参数指定应加密数据库集群。由于源数据库没有加密,因此 --kms-key-id 用于指定要使用的密钥。有关必需参数和可选参数的更多信息,请参阅示例后面的列表。

对于 Linux、macOS 或 Unix:

aws rds create-db-cluster \ --db-cluster-identifier my-new-aurora-cluster \ --db-subnet-group-name my-db-subnet --vpc-security-group-ids sg-11111111 --engine aurora-postgresql \ --engine-version same-as-your-rds-instance-version \ --replication-source-identifier arn:aws:rds:aws-region:111122223333:db/rpg-source-db \ --storage-encrypted \ --kms-key-id arn:aws:kms:aws-region:111122223333:key/11111111-2222-3333-444444444444

对于 Windows:

aws rds create-db-cluster ^ --db-cluster-identifier my-new-aurora-cluster ^ --db-subnet-group-name my-db-subnet ^ --vpc-security-group-ids sg-11111111 ^ --engine aurora-postgresql ^ --engine-version same-as-your-rds-instance-version ^ --replication-source-identifier arn:aws:rds:aws-region:111122223333:db/rpg-source-db ^ --storage-encrypted ^ --kms-key-id arn:aws:kms:aws-region:111122223333:key/11111111-2222-3333-444444444444

在下面的列表中,您可以找到有关示例中所示某些选项的更多信息。除非另有说明,否则这些参数是必需的。

  • --db-cluster-identifier – 您需要为新的 Aurora PostgreSQL 数据库集群命名。

  • --db-subnet-group-name – 在与源数据库实例相同的数据库子网中创建 Aurora PostgreSQL 数据库集群。

  • --vpc-security-group-ids – 指定 Aurora PostgreSQL 数据库集群的安全组。

  • --engine-version – 指定要用于 Aurora PostgreSQL 数据库集群的版本。这应与源 RDS for PostgreSQL 数据库实例使用的版本相同。

  • --replication-source-identifier – 使用 RDS for PostgreSQL 数据库实例的 Amazon Resource Name (ARN) 识别该实例。有关 Amazon RDS ARN 的更多信息,请参阅数据库集群的《Amazon Web Services 一般参考》中的 Amazon Relational Database Service(Amazon RDS)

  • --storage-encrypted – 可选。仅在需要指定加密时使用,如下所示:

    • 当源数据库实例具有加密存储时,请使用此参数。如果您不对具有加密存储的源数据库实例使用此参数,则对 create-db-cluster 的调用会失败。如果您想为 Aurora PostgreSQL 数据库集群使用的密钥与源数据库实例使用的密钥不同,则还需要指定 --kms-key-id

    • 如果源数据库实例的存储未加密,但您希望 Aurora PostgreSQL 数据库集群使用加密,则使用此参数。如果是这样,您还需要识别与 --kms-key-id 参数一起使用的加密密钥。

  • --kms-key-id – 可选。使用时,您可以通过使用密钥的 ARN、ID、别名 ARN 或其别名来指定用于存储加密 (--storage-encrypted) 的密钥。仅在以下情况下需要此参数:

    • 为 Aurora PostgreSQL 数据库集群选择一个密钥,该密钥不同于源数据库实例使用的密钥。

    • 从未加密的源创建加密集群。在这种情况下,您需要指定 Aurora PostgreSQL 应该用于加密的密钥。

创建 Aurora PostgreSQL 数据库集群后,您可以使用 create-db-instance CLI 命令创建主实例,如以下所示:

对于 Linux、macOS 或 Unix:

aws rds create-db-instance \ --db-cluster-identifier my-new-aurora-cluster \ --db-instance-class db.x2g.16xlarge \ --db-instance-identifier rpg-for-migration \ --engine aurora-postgresql

对于 Windows:

aws rds create-db-instance ^ --db-cluster-identifier my-new-aurora-cluster ^ --db-instance-class db.x2g.16xlarge ^ --db-instance-identifier rpg-for-migration ^ --engine aurora-postgresql

在下面的列表中,您可以找到有关示例中所示某些选项的更多信息。

  • --db-cluster-identifier – 指定在前述步骤中使用 create-db-instance 命令创建的 Aurora PostgreSQL 数据库集群的名称。

  • --db-instance-class – 要用于主实例的数据库实例类的名称,例如 db.r4.xlargedb.t4g.mediumdb.x2g.16xlarge 等。有关可用的数据库实例类列表,请参阅数据库实例类类型

  • --db-instance-identifier – 指定主实例的名称。

  • --engine aurora-postgresql – 指定引擎的 aurora-postgresql

要从源 RDS for PostgreSQL 数据库实例创建 Aurora 只读副本,请首先使用 RDS API 操作 CreateDBCluster 为从源 RDS for PostgreSQL 数据库实例创建的 Aurora 只读副本创建新的 Aurora 数据库集群。当 Aurora PostgreSQL 数据库集群可用时,您可以使用 CreateDBInstance 创建 Aurora 数据库集群的主实例。

您不需要指定主用户账户(通常为 postgres)、其密码或数据库名称。Aurora 只读副本会自动从使用 ReplicationSourceIdentifier 指定的源 RDS for PostgreSQL 数据库实例中获取这些信息。

您需要指定要用于 Aurora PostgreSQL 数据库集群和数据库实例的引擎版本。您指定的版本应与源 RDS for PostgreSQL 数据库实例匹配。如果源 RDS for PostgreSQL 数据库实例已加密,您还需要为 Aurora PostgreSQL 数据库集群主实例指定加密。不支持将已加密的实例迁移到未加密的 Aurora 数据库集群。

要为 Aurora 只读副本创建 Aurora 数据库集群,请使用带以下参数的 RDS API 操作 CreateDBCluster

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

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

  • Engine=aurora-postgresql – 要使用的引擎的名称。

  • ReplicationSourceIdentifier – 源 PostgreSQL 数据库实例的 Amazon Resource Name (ARN)。有关 Amazon RDS ARN 的更多信息,请参阅《Amazon Web Services 一般参考》中的 Amazon Relational Database Service(Amazon RDS)。如果 ReplicationSourceIdentifier 标识加密的源,Amazon RDS 将使用默认 KMS 密钥,除非您使用 KmsKeyId 选项指定一个不同的密钥。

  • VpcSecurityGroupIds – 要与此数据库集群关联的 Amazon EC2 VPC 安全组的列表。

  • StorageEncrypted – 指示数据库集群已加密。当您使用此参数而不同时指定 ReplicationSourceIdentifier 时,Amazon RDS 会使用您的默认 KMS 密钥。

  • KmsKeyId – 已加密集群的密钥。使用时,您可以通过使用密钥的 ARN、ID、别名 ARN 或其别名来指定用于存储加密的密钥。

有关更多信息,请参阅 Amazon RDS API 参考中的 CreateDBCluster

一旦 Aurora 数据库集群可用,您可以使用带以下参数的 RDS API 操作 CreateDBInstance 为其创建主实例:

  • DBClusterIdentifier – 数据库集群的名称。

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

  • DBInstanceIdentifier – 主实例的名称。

  • Engine=aurora-postgresql – 要使用的引擎的名称。

有关更多信息,请参阅 Amazon RDS API 参考中的 CreateDBInstance

提升 Aurora 只读副本

在提升副本集群之前,迁移到 Aurora PostgreSQL 未完成,因此暂时不要删除 RDS for PostgreSQL 源数据库实例。

在提升副本集群之前,请确保 RDS for PostgreSQL 数据库实例没有向数据库写入任何进程中的事务或其他活动。当 Aurora 只读副本上的副本滞后达到零 (0) 时,您可以提升副本集群。有关监控副本滞后的更多信息,请参阅 监控 Aurora PostgreSQL 复制Amazon Aurora 的实例级指标

将 Aurora 只读副本提升为 Aurora 数据库集群
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases (数据库)

  3. 选择副本集群。

    
                                    将副本集群提升为完整的 Aurora PostgreSQL 数据库集群状态
  4. 对于操作,请选择提升。这可能需要几分钟时间,并可能导致停机。

该过程完成后,Aurora 副本集群成为区域性 Aurora PostgreSQL 数据库集群,其写入器实例包含来自 RDS for PostgreSQL 数据库实例的数据。

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

对于 Linux、macOS 或 Unix:

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

对于 Windows:

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

要将 Aurora 只读副本提升为独立数据库集群,请使用 RDS API 操作 PromoteReadReplicaDBCluster

提升副本集群后,您可以通过检查事件日志来确认提升已完成,如下所示。

确认 Aurora 副本集群已提升
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Events (事件)

  3. Events(事件)页面的 Source(源)列表中找到集群的名称。每个事件都有来源、类型、时间和消息。您可以查看在您账户的 Amazon Web Services 区域 中发生的所有事件。成功提升将生成以下消息。

    Promoted Read Replica cluster to a stand-alone database cluster.

提升完成后,源 RDS for PostgreSQL 数据库实例和 Aurora 数据库集群之间的链接会取消。您可以将客户端应用程序引导到 Aurora 只读副本的端点。有关 Aurora 终端节点的更多信息,请参阅Amazon Aurora 连接管理。此时,您可以安全地删除数据库实例。