本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
本节介绍使用 PostgreSQL 源端点的迁移任务的各项迁移前评测。
主题
- 验证 DDL 事件触发器是否设置为 ENABLE ALWAYS
- 验证源数据库中是否存在 PostGIS 列
- 验证在完全加载过程中目标表上是否禁用了外键约束
- 验证是否存在名称相似的表
- 验证是否存在不带主键的 ARRAY 数据类型的表
- 启用后 BatchApplyEnabled ,验证目标表上是否存在主键或唯一索引
- 验证目标数据库中是否存在任何具有二级索引的表以用于完全加载迁移任务
- 验证仅在设置为 true 时 BatchApplyEnabled 才使用受限 LOB 模式
- 验证 DMS 是否支持源数据库版本进行迁移
- 验证源数据库上的 logical_decoding_work_mem 参数
- 验证源数据库是否存在长时间运行的事务
- 验证源数据库参数 max_slot_wal_keep_size
- 检查源数据库参数 postgres-check-maxwalsenders 是否设置为支持 CDC。
- 检查源数据库是否配置为 PGLOGICAL
- 验证源表主键是否为 LOB 数据类型
- 验证源表是否有主键
- 验证源数据库上是否存在准备好的事务
- 验证 wal_sender_timeout 是否设置为支持 DMS CDC 所需的最小值
- 验证源数据库上的 wal_level 是否设置为逻辑
验证 DDL 事件触发器是否设置为 ENABLE ALWAYS
API 密钥:postgres-check-ddl-event-trigger
此迁移前评测可验证 DDL 事件触发器是否设置为 ENABLE ALWAYS
。如果您的源数据库也是另一个第三方复制系统的目标,DDL 更改可能不会在 CDC 期间迁移。这种情况会阻止 DMS 触发 awsdms_intercept_ddl
事件。要解决这种情况,请在源数据库上修改触发器,如以下示例所示:
alter event trigger awsdms_intercept_ddl enable always;
有关更多信息,请参阅将 PostgreSQL 数据库作为 DMS 源的限制。
验证源数据库中是否存在 PostGIS 列
API 密钥:postgres-check-postgis-data-type
此迁移前评估可验证源引擎和目标引擎不同时是否存在的 PostGIS 数据类型的列。 AWS DMS 仅支持同构 () like-to-like 迁移的 PostGIS 数据类型。
有关更多信息,请参阅将 PostgreSQL 数据库作为 DMS 源的限制。
验证在完全加载过程中目标表上是否禁用了外键约束
API 密钥:postgres-check-session-replication-role
此迁移前评测可验证在完全加载阶段目标上的 session_replication_role parameter
是否设置为 REPLICA
以禁用外键约束。对于完全加载迁移类型,您应禁用外键约束。
有关 PostgreSQL 端点限制的更多信息,请参阅将 PostgreSQL 数据库作为 AWS Database Migration Service的目标。
验证是否存在名称相似的表
API 密钥:postgres-check-similar-table-name
此迁移前评测可验证源上是否存在名称相似的表。如果存在多个同名但名称具有不同大小写的表,则会导致复制过程中出现不可预测的行为。
有关 PostgreSQL 端点限制的更多信息,请参阅将 PostgreSQL 数据库作为 DMS 源的限制。
验证是否存在不带主键的 ARRAY 数据类型的表
API 密钥:postgres-check-table-with-array
此迁移前评测可验证是否存在没有主键的 ARRAY 数据类型的表。在完全加载期间会忽略缺少主键的 ARRAY
数据类型的表。
有关 PostgreSQL 端点限制的更多信息,请参阅将 PostgreSQL 数据库作为 DMS 源的限制。
启用后 BatchApplyEnabled ,验证目标表上是否存在主键或唯一索引
API 密钥:postgres-check-batch-apply-target-pk-ui-absence
只有目标表上有主键或唯一索引的表才支持批量应用。没有主键或唯一索引的表将导致批处理失败, AWS DMS 并将逐一处理更改。建议您为此类表创建单独的任务,改用事务性应用模式。或者,也可以在目标表上创建唯一键。
有关更多信息,请参阅将 PostgreSQL 数据库作为 AWS Database Migration Service的目标。
验证目标数据库中是否存在任何具有二级索引的表以用于完全加载迁移任务
API 密钥:postgres-check-target-secondary-indexes
此迁移前评测可验证完全加载迁移任务范围内是否存在带有二级索引的表。建议您在完全加载任务期间删除二级索引。
有关更多信息,请参阅将 PostgreSQL 数据库作为 AWS Database Migration Service的目标。
验证仅在设置为 true 时 BatchApplyEnabled 才使用受限 LOB 模式
API 密钥:postgres-batch-apply-lob-mode
如果复制中包含 LOB 列,则只能在受限 LOB 模式下使用 BatchApplyEnabled
。使用 LOB 模式的其他选项将导致批处理失败, AWS DMS 并将逐一处理更改。建议您将这些表移到各自的任务中,改用事务性应用模式。
有关 BatchApplyEnabled
设置的更多信息,请参阅如何使用 DMS 批量应用特征来提高 CDC 复制性能?
验证 DMS 是否支持源数据库版本进行迁移
API 密钥:postgres-check-dbversion
此迁移前评估可验证源数据库版本是否与兼容。 AWS DMS
验证源数据库上的 logical_decoding_work_mem
参数
API 密钥:postgres-check-for-logical-decoding-work-mem
此迁移前评测建议调整源数据库上的 logical_decoding_work_mem
参数。在高度事务性数据库中,可能存在长时间运行的事务或许多子事务,这可能会导致逻辑解码内存消耗增加,并且需要溢出到磁盘,从而导致复制期间的 DMS 源延迟很高。在这种情况下,可能需要调整 logical_decoding_work_mem
。PostgreSQL 版本 13 及更高版本支持此参数。
验证源数据库是否存在长时间运行的事务
API 密钥:postgres-check-longrunningtxn
此迁移前评测可验证源数据库是否存在持续时间超过 10 分钟的长时间运行的事务。任务可能无法启动,因为默认情况下,DMS 会在启动任务时检查是否存在任何未完成事务。
验证源数据库参数 max_slot_wal_keep_size
API 密钥:postgres-check-maxslot-wal-keep-size
此迁移前评测可验证为 max_slot_wal_keep_size
配置的值。当 max_slot_wal_keep_size
设置为非默认值时,DMS 任务可能会因为删除所需的 WAL 文件而失败。
检查源数据库参数 postgres-check-maxwalsenders
是否设置为支持 CDC。
API 密钥:postgres-check-maxwalsenders
此迁移前评测可验证源数据库上为 max_wal_senders
配置的值。DMS 需要将 max_wal_senders
设置为大于 1 才会支持更改数据捕获(CDC)。
检查源数据库是否配置为 PGLOGICAL
API 密钥:postgres-check-pglogical
此迁移前评测可验证 shared_preload_libraries
值是否设置为 pglogical
以支持 PGLOGICAL
用于 CDC。请注意,如果您计划使用测试解码进行逻辑复制,则可以忽略此评测。
验证源表主键是否为 LOB 数据类型
API 密钥:postgres-check-pk-lob
此迁移前评测可验证表的主键是否为大型对象(LOB)数据类型。如果源表将 LOB 列作为主键,则 DMS 不支持复制。
验证源表是否有主键
API 密钥:postgres-check-pk
此迁移前评测可验证任务范围内使用的表是否存在主键。除非在源表上将副本身份设置为 full
,否则 DMS 不支持对没有主键的表进行复制。
验证源数据库上是否存在准备好的事务
API 密钥:postgres-check-preparedtxn
此迁移前评测可验证源数据库上是否存在任何准备好的事务。如果源数据库上存在任何准备好的事务,则复制槽创建操作可能会停止响应。
验证 wal_sender_timeout
是否设置为支持 DMS CDC 所需的最小值
API 密钥:postgres-check-walsenderstimeout
此迁移前评测可验证 wal_sender_timeout
是否设置为至少 10000 毫秒(10 秒)。执行 CDC 的 DMS 任务至少需要 10000 毫秒(10 秒),如果值小于 10000,则任务会失败。
验证源数据库上的 wal_level
是否设置为逻辑
API 密钥:postgres-check-wallevel
此迁移前评测可验证 wal_level
是否设置为逻辑。为了使 DMS 能够执行 CDC,需要在源数据库上启用此参数。