本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
通过同构数据迁移从 Postgre SQL 数据库迁移数据 AWS DMS
你可以使用将自行管理的 Postgre SQL 数据库迁移同构数据迁移到适用于 Postgre 或 SQL Aurora Postgre RDS 的 Postgre。SQL AWS DMS 为您的数据迁移创建无服务器环境。对于不同类型的数据迁移, AWS DMS 使用不同的原生 Postgre SQL 数据库工具。
对于满载类型的同构数据迁移, AWS DMS 使用 pg_dump 从源数据库读取数据并将其存储在连接到无服务器环境的磁盘上。晚于 AWS DMS 读取你所有的源数据,它使用目标数据库中的 pg_restore 来恢复你的数据。
对于满载和更改数据捕获 (CDC) 类型的同构数据迁移, AWS DMS pg_dump
用于从源数据库中读取不带表数据的架构对象,并将它们存储在连接到无服务器环境的磁盘上。然后,它pg_restore
在目标数据库中使用来恢复您的架构对象。晚于 AWS DMS 完成该pg_restore
过程后,它会自动切换到发布者和订阅者模式进行逻辑复制,Initial Data Synchronization
可以选择将初始表数据直接从源数据库复制到目标数据库,然后启动正在进行的复制。在此模式中,一个或多个订阅用户会订阅发布者节点上的一个或多个发布。
对于变更数据捕获 (CDC) 类型的同构数据迁移, AWS DMS 需要本机起始点才能开始复制。如果你提供了本机起点,那么 AWS DMS 捕捉从那时起的变化。或者,在数据迁移设置中选择立即,以便在实际数据迁移开始时自动捕获复制的开始点。
注意
要使CDC仅限迁移正常运行,所有源数据库架构和对象都必须已存在于目标数据库中。不过,目标可能具有源上不存在的对象。
您可以使用以下代码示例获取 Postgre SQL 数据库中的本机起点。
select confirmed_flush_lsn from pg_replication_slots where slot_name=‘migrate_to_target';
此查询使用 Postgre SQL 数据库中的pg_replication_slots
视图来捕获日志序列号 (LSN) 值。
晚于 AWS DMS 将 Postgre SQL 同构数据迁移的状态设置为 “已停止”、“失败” 或 “已删除”,则不会移除发布者和复制。如果您不希望恢复迁移,可使用以下命令删除复制时隙和发布者。
SELECT pg_drop_replication_slot('migration_subscriber_{ARN}'); DROP PUBLICATION publication_{ARN};
下图显示了在中使用同构数据迁移的过程 AWS DMS 将适用于 Postgre 或 SQL Aurora Postgre RDS 的 Postgre SQL 数据库迁移到。SQL
使用 Postgre SQL 数据库作为同构数据迁移源的最佳实践
要加快用户端FLCDC任务的初始数据同步,必须调整
max_logical_replication_workers
和。max_sync_workers_per_subscription
增加这些值可以提高表的同步速度。max_logical_replication_workers — 指定逻辑复制工作器的最大数量。这包括订阅端的应用工作线程和表同步工作线程。
max_sync_workers_per_subs cription — 增加
max_sync_workers_per_subscription
仅影响并行同步的表的数量,而不影响每个表的工作程序数量。
注意
max_logical_replication_workers
不应超过max_worker_processes
,且max_sync_workers_per_subscription
应小于或等于max_logical_replication_workers
。要迁移大型表,请考虑使用选择规则将它们分成单独的任务。例如,您可以将大表分成单独的单个任务,将小表分成另一个任务。
监控用户端的磁盘和CPU使用情况,以保持最佳性能。