设置以传输 PostgreSQL 数据库 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

设置以传输 PostgreSQL 数据库

在开始之前,请确保您的 RDS for PostgreSQL 数据库实例满足以下要求:

  • 源和目标 RDS for PostgreSQL 数据库实例必须运行相同的 PostgreSQL 版本。

  • 目标数据库不能拥有与要传输的源数据库同名的数据库。

  • 您用来运行传输的账户需要源数据库和目标数据库的 rds_superuser 权限。

  • 源数据库实例的安全组必须允许来自目标数据库实例的入站访问。如果源和目标数据库实例均位于 VPC 中,则可能已经是这种情况。有关安全组的更多信息,请参阅 使用安全组控制访问权限

将数据库从源数据库实例传输到目标数据库实例需要对与每个实例关联的数据库参数组进行若干更改。这意味着您必须为源数据库实例创建自定义数据库参数组,同时为目标数据库实例创建自定义数据库参数组。

注意

如果您的数据库实例已使用自定义数据库参数组进行配置,则可以从以下过程中的步骤 2 开始。

配置用于传输数据库的自定义数据库组参数

对于以下步骤,请使用具有 rds_superuser 特权的账户。

  1. 如果源和目标数据库实例使用默认的数据库参数组,您需要使用适合您的实例的版本创建自定义数据库参数组。这样便可更改多个参数的值。有关更多信息,请参阅 Amazon RDS 的参数组

  2. 在自定义数据库参数组中,更改以下参数的值:

    • shared_preload_libraries - 将 pg_transport 添加到库列表。

    • pg_transport.num_workers - 默认值为 3。根据数据库的需要增加或减少该值。对于 200 GB 的数据库,我们建议该值不大于 8。请记住,如果增加该参数的默认值,还应增加 max_worker_processes 的值。

    • pg_transport.work_mem - 默认值为 128 MB 或 256 MB,具体视 PostgreSQL 版本而定。默认设置通常可以保持不变。

    • max_worker_processes – 需要使用以下计算来设置此参数的值:

      (3 * pg_transport.num_workers) + 9

      目标上需要此值来处理传输中涉及的各种后台工作进程。要了解有关 max_worker_processes, 的更多信息,请参阅 PostgreSQL 文档中的资源消耗

    有关 pg_transport 参数的更多信息,请参阅 可传输数据库参数参考

  3. 重启源 RDS for PostgreSQL 数据库实例和目标实例以使参数的设置生效。

  4. 连接到 RDS for PostgreSQL 源数据库实例。

    psql --host=source-instance.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
  5. 从数据库实例的公共架构中删除无关的扩展。实际传输操作期间只允许 pg_transport 扩展。

  6. 按如下方式安装 pg_transport 扩展:

    postgres=> CREATE EXTENSION pg_transport; CREATE EXTENSION
  7. 连接到 RDS for PostgreSQL 目标数据库实例。删除任何无关的扩展,然后安装 pg_transport 扩展。

    postgres=> CREATE EXTENSION pg_transport; CREATE EXTENSION