本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Postgre 评估 SQL
本节介绍使用 Postgre SQL 源端点的迁移任务的单独迁移前评估。
主题
- 验证DDL事件触发器是否设置为 ENABLE ALWAYS
- 验证源数据库中是否存在 Post GIS 列
- 验证在满载过程中目标表上是否禁用了外键约束
- 验证是否存在名称相似的表
- 验证是否存在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;
有关更多信息,请参阅使用 Postgre SQL 数据库作为DMS源的限制。
验证源数据库中是否存在 Post GIS 列
API密钥:postgres-check-postgis-data-type
此迁移前评估可验证源引擎和目标引擎中存在的 Post GIS 数据类型的列是否不同。 AWS DMS 仅支持同构 (like-to-like) 迁移的 Post GIS 数据类型。
有关更多信息,请参阅使用 Postgre SQL 数据库作为DMS源的限制。
验证在满载过程中目标表上是否禁用了外键约束
API密钥:postgres-check-session-replication-role
此迁移前评估可验证目标REPLICA
上session_replication_role parameter
是否设置为在满载阶段禁用外键约束。对于满载迁移类型,应禁用外键约束。
有关 Postgre SQL 端点限制的更多信息,请参阅使用 Postgre SQL 数据库作为目标。 AWS Database Migration Service
验证是否存在名称相似的表
API密钥:postgres-check-similar-table-name
此迁移前评估可验证源上是否存在名称相似的表。以不同的大小写方式写入多个同名的表可能会导致复制过程中出现不可预测的行为。
有关 Postgre SQL 端点限制的更多信息,请参阅使用 Postgre SQL 数据库作为DMS源的限制。
验证是否存在ARRAY数据类型不带主键的表
API密钥:postgres-check-table-with-array
此迁移前评估可验证是否存在没有主键的数组数据类型的表。ARRAY
数据类型缺少主键的表在满载期间会被忽略。
有关 Postgre SQL 端点限制的更多信息,请参阅使用 Postgre SQL 数据库作为DMS源的限制。
启用后 BatchApplyEnabled ,验证目标表上是否存在主键或唯一索引
API密钥:postgres-check-batch-apply-target-pk-ui-absence
只有目标表上有主键或唯一索引的表才支持 Batch apply。没有主键或唯一索引的表将导致批处理失败, AWS DMS 并将逐一处理更改。我们建议您为此类表创建单独的任务,改用事务性应用模式。或者,也可以在目标表上创建唯一密钥。
有关更多信息,请参阅使用 Postgre SQL 数据库作为目标。 AWS Database Migration Service
验证目标数据库中是否有任何表具有用于满载迁移任务的二级索引
API密钥:postgres-check-target-secondary-indexes
此迁移前评估可验证满载迁移任务范围内是否存在带有二级索引的表。我们建议您在满载任务期间删除二级索引。
有关更多信息,请参阅使用 Postgre SQL 数据库作为目标。 AWS Database Migration Service
验证仅在设置为 true 时 BatchApplyEnabled 才使用受限LOB模式
API密钥:postgres-batch-apply-lob-mode
如果复制中包含LOB列,则只能BatchApplyEnabled
在受限LOB模式下使用。使用该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
。Postgre SQL 版本 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
上为配置的值。DMSmax_wal_senders
需要设置为大于 1 才能支持更改数据捕获 (CDC)。
检查源数据库是否配置为 PGLOGICAL
API密钥:postgres-check-pglogical
此迁移前评估将验证该shared_preload_libraries
值是否设置pglogical
为支持PGLOGICAL
。CDC请注意,如果您计划使用测试解码进行逻辑复制,则可以忽略此评估。
验证源表主键是否为LOB数据类型
API密钥:postgres-check-pk-lob
此迁移前评估验证表的主键是否为大对象 (LOB) 数据类型。DMS如果源表有一LOB列作为主键,则不支持复制。
验证源表是否有主键
API密钥:postgres-check-pk
此迁移前评估验证任务范围内使用的表是否存在主键。DMS不支持对没有主键的表进行复制,除非在源表full
上将副本标识设置为。
验证源数据库中是否存在准备好的事务
API密钥:postgres-check-preparedtxn
此迁移前评估可验证源数据库中是否存在任何准备好的事务。如果源数据库上存在任何准备好的事务,则创建复制槽可能会停止响应。
验证wal_sender_timeout
是否设置为支持所需的最小值 DMS CDC
API密钥:postgres-check-walsenderstimeout
此迁移前评估将验证wal_sender_timeout
是否设置为至少 10000 毫秒(10 秒)。具有的DMS任务至少CDC需要 10000 毫秒(10 秒),如果该值小于 10000,则会失败。
验证源数据库上wal_level
是否设置为逻辑
API密钥:postgres-check-wallevel
此迁移前评估将验证是否设置wal_level
为逻辑。DMSCDC要起作用,需要在源数据库上启用此参数。