将数据导入 Amazon RDS 上的 PostgreSQL - Amazon Relational Database Service

将数据导入 Amazon RDS 上的 PostgreSQL

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

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

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

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

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

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

0

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

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

注意

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