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

将 PostgreSQL 数据库从源传输到目标

在完成 设置以传输 PostgreSQL 数据库 中所述的过程后,您可以启动传输。为此,请在目标数据库实例上运行 transport.import_from_server 函数。在下面的语法中,您可以找到函数参数。

SELECT transport.import_from_server( 'source-db-instance-endpoint', source-db-instance-port, 'source-db-instance-user', 'source-user-password', 'source-database-name', 'destination-user-password', false);

示例中显示的 false 值告知函数这不是一次试运行。要测试传输设置,您可以指定调用函数时 dry_run 选项的 true,如下所示:

postgres=> SELECT transport.import_from_server( 'docs-lab-source-db.666666666666aws-region.rds.amazonaws.com', 5432, 'postgres', '********', 'labdb', '******', true); INFO: Starting dry-run of import of database "labdb". INFO: Created connections to remote database (took 0.03 seconds). INFO: Checked remote cluster compatibility (took 0.05 seconds). INFO: Dry-run complete (took 0.08 seconds total). import_from_server -------------------- (1 row)

由于 pg_transport.timing 参数设置为其默认值 true,因此输出 INFO 行。运行该命令时将 dry_run 设置为 false,源数据库将导入到目标数据库,如下所示:

INFO: Starting import of database "labdb". INFO: Created connections to remote database (took 0.02 seconds). INFO: Marked remote database as read only (took 0.13 seconds). INFO: Checked remote cluster compatibility (took 0.03 seconds). INFO: Signaled creation of PITR blackout window (took 2.01 seconds). INFO: Applied remote database schema pre-data (took 0.50 seconds). INFO: Created connections to local cluster (took 0.01 seconds). INFO: Locked down destination database (took 0.00 seconds). INFO: Completed transfer of database files (took 0.24 seconds). INFO: Completed clean up (took 1.02 seconds). INFO: Physical transport complete (took 3.97 seconds total). import_from_server -------------------- (1 row)

该函数要求您提供数据库用户密码。因此,在传输完成后,我们建议您更改使用的用户角色的密码。或者,您可以使用 SQL 绑定变量创建临时用户角色。使用这些临时角色进行传输,然后丢弃这些角色。

如果传输失败,您可能会看到类似于以下内容的错误消息:

pg_transport.num_workers=8 25% of files transported failed to download file data

“failed to download file data”(下载文件数据失败)错误消息表示没有根据数据库的大小正确设置工件线程进程的数量。您可能需要增加或减少为 pg_transport.num_workers 设置的值。每次失败都会报告完成的百分比,因此您可以看到更改的影响。例如,在一个案例中将设置从 8 更改为 4 会导致以下情况:

pg_transport.num_workers=4 75% of files transported failed to download file data

请记住,在传输过程中还会考虑 max_worker_processes 参数。换句话说,您可能需要同时修改 pg_transport.num_workersmax_worker_processes 才能成功传输数据库。图示的例子当 pg_transport.num_workers 设置为 2 后最终生效:

pg_transport.num_workers=2 100% of files transported

有关 transport.import_from_server 函数及其参数的更多信息,请参阅 可传输数据库函数参考