将数据导入 Amazon RDS 上的 PostgreSQL - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

将数据导入 Amazon RDS 上的 PostgreSQL

假设您要将现有的 PostgreSQL 部署移动到 Amazon RDS 中。任务的复杂性取决于数据库大小以及要传输的数据库对象类型。例如,考虑包含 GB 级别数据集以及存储过程和触发器的数据库。相比只有几个 MB 测试数据并且没有触发器或存储过程的简单数据库,此类数据库要复杂得多。

我们建议您在以下条件下使用本机 PostgreSQL 数据库迁移工具:

  • 您具有一个同类迁移,其中,您正在从一个具有与目标数据库相同的数据库引擎的数据库中迁移。

  • 您正在迁移整个数据库。

  • 利用这些本机工具,您可以在最少的停机时间下迁移您的系统。

在其他大多数情况下,使用 Amazon Database Migration Service(Amazon DMS)是最佳方法。AmazonDMS 可以在不停机的情况下迁移数据库,对于许多数据库引擎,将继续进行持续复制,直到您已准备好切换到目标数据库。您可以使用 Amazon DMS 迁移到相同的数据库引擎或其他数据库引擎。如果要迁移到与源数据库不同的数据库引擎,您可以使用 Amazon Schema Conversion Tool (Amazon SCT)。您可以使用 Amazon SCT 迁移 Amazon DMS 未迁移的架构对象。有关 Amazon DMS 的更多信息,请参阅什么是 Amazon Database Migration Service?

修改数据库参数组以包括以下仅供您导入 的设置。您应测试参数设置以查找对数据库实例最有效的设置:在导入完成后,您需要将这些参数还原为生产值。

对数据库实例设置进行以下修改:

  • 禁用数据库实例备份 (将 backup_retention 设置为 0)。

  • 禁用多可用区.

修改数据库参数组以包括以下设置。您只应在导入数据时使用这些设置。您应测试参数设置以查找对数据库实例最有效的设置:在导入完成后,您需要将这些参数还原为生产值。

参数 导入时的建议值 描述

maintenance_work_mem

524288、1048576、2097152 或 4194304 (KB)。这些设置相当于 512 MB、1 GB、2 GB 和 4 GB。

此设置的只取决于您主机的大小。该参数在 CREATE INDEX 语句中使用,每个并行命令可以使用这个数量的内存。计算最佳值,这样就不会将该值设置得过高而出现内存不足的情况。

max_wal_size

256(适用于 9.6 版本)、4096(适用于 10 及更高版本)

允许 WAL 在自动检查点期间增长的最大大小。增大此参数会增加崩溃恢复所需的时间。对于 PostgreSQL 9.6 及更高版本,此参数替代 checkpoint_segments

对于 PostgreSQL 9.6,此值的单位为 16 MB。对于更高版本,此值单位为 1 MB。例如,在 9.6 版本中,128 表示 128 个块,每个块大小为 16 MB。在 12.4 版本中,2048 代表 2048 个块,每个块大小为 1 MB。

checkpoint_timeout

1800

此设置的值可以减少 WAL 轮换的频率。

synchronous_commit

Off

禁用此设置可加快写入。禁用此参数会在服务器崩溃时增加数据丢失的风险(不禁用 FSYNC)。

wal_buffers

8192

该值以 8 KB 为单位。这也有助于您的 WAL 生成速度

autovacuum

Off

在您加载数据时禁用 PostgreSQL auto vacuum 参数,这样它就不使用资源

pg_dump -Fc (压缩) 或 pg_restore -j (并行) 命令与这些设置结合使用。

注意

PostgreSQL 命令 pg_dumpall 所需要的 super_user 权限在创建数据库实例时并不授予,因此,无法使用该命令导入数据。