将数据导入 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)。
-
禁用多可用区。
修改数据库参数组以包括以下设置。您只应在导入数据时使用这些设置。您应测试参数设置以查找对数据库实例最有效的设置:在导入完成后,您需要将这些参数还原为生产值。
参数 | 导入时的建议值 | 描述 |
---|---|---|
|
524288、1048576、2097152 或 4194304 (KB)。这些设置相当于 512 MB、1 GB、2 GB 和 4 GB。 |
此设置的只取决于您主机的大小。该参数在 CREATE INDEX 语句中使用,每个并行命令可以使用这个数量的内存。计算最佳值,这样就不会将该值设置得过高而出现内存不足的情况。 |
|
256(适用于 9.6 版本)、4096(适用于 10 及更高版本) |
允许 WAL 在自动检查点期间增长的最大大小。增大此参数会增加崩溃恢复所需的时间。对于 PostgreSQL 9.6 及更高版本,此参数替代 对于 PostgreSQL 9.6,此值的单位为 16 MB。对于更高版本,此值单位为 1 MB。例如,在 9.6 版本中,128 表示 128 个块,每个块大小为 16 MB。在 12.4 版本中,2048 代表 2048 个块,每个块大小为 1 MB。 |
|
1800 |
此设置的值可以减少 WAL 轮换的频率。 |
|
Off |
禁用此设置可加快写入。禁用此参数会在服务器崩溃时增加数据丢失的风险(不禁用 FSYNC)。 |
|
8192 |
该值以 8 KB 为单位。这也有助于您的 WAL 生成速度 |
|
0 |
在您加载数据时禁用 PostgreSQL auto vacuum 参数,这样它就不使用资源 |
将 pg_dump -Fc
(压缩) 或 pg_restore -j
(并行) 命令与这些设置结合使用。
注意
PostgreSQL 命令 pg_dumpall
所需要的 super_user 权限在创建数据库实例时并不授予,因此,无法使用该命令导入数据。