PostgreSQL 评测 - Amazon 数据库迁移服务
验证 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 是否设置为逻辑验证批量应用的目标上是否同时存在主键和唯一索引建议在找到 LOB 对象时设置最大 LOB启用 DMS 验证后,验证表是否有主键或唯一索引以及其状态是否良好验证 Amazon DMS 用户是否具有访问目标所需的权限验证 CDC 免费复制槽位的可用性验证 DMS 用户完全加载权限检查数字随机化的转换规则查看数字掩码的转换规则查看哈希掩码的转换规则确认数据验证任务设置和数据掩蔽数字随机化未同时启用确认数据验证任务设置和数据掩蔽哈希掩码未同时启用确认数据验证任务设置和数据掩蔽数字掩码未同时启用验证源数据库中是否至少存在一个选定对象验证目标 PostgreSQL 数据库是否包含生成的列验证物化视图是否存在于同类 PostgreSQL 迁移中验证副本身份 FULL 是否与 pglogical 插件的使用有冲突验证源数据库中是否存在辅助约束和索引(非主约束)验证 CHAR/VARCHAR 列的兼容性以便迁移到 Oracle验证是否已在源数据库上配置了idle_in_transaction_session_timeout设置验证 Amazon DMS 用户是否具有 Amazon托管的 PostgreSQL 数据库所需的角色
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

PostgreSQL 评测

本节介绍使用 PostgreSQL 源端点的迁移任务的各项迁移前评测。

主题

验证 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 数据类型的列。 Amazon DMS 仅支持同构 () like-to-like 迁移的 PostGIS 数据类型。

有关更多信息,请参阅将 PostgreSQL 数据库作为 DMS 源的限制

验证在完全加载过程中目标表上是否禁用了外键约束

API 密钥:postgres-check-session-replication-role

此迁移前评测可验证在完全加载阶段目标上的 session_replication_role parameter 是否设置为 REPLICA 以禁用外键约束。对于完全加载迁移类型,您应禁用外键约束。

有关 PostgreSQL 端点限制的更多信息,请参阅将 PostgreSQL 数据库作为 Amazon 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

只有目标表上有主键或唯一索引的表才支持批量应用。没有主键或唯一索引的表将导致批处理失败, Amazon DMS 并将逐一处理更改。建议您为此类表创建单独的任务,改用事务性应用模式。或者,也可以在目标表上创建唯一键。

有关更多信息,请参阅将 PostgreSQL 数据库作为 Amazon Database Migration Service的目标

验证目标数据库中是否存在任何具有二级索引的表以用于完全加载迁移任务

API 密钥:postgres-check-target-secondary-indexes

此迁移前评测可验证完全加载迁移任务范围内是否存在带有二级索引的表。建议您在完全加载任务期间删除二级索引。

有关更多信息,请参阅将 PostgreSQL 数据库作为 Amazon Database Migration Service的目标

验证仅在设置为 true 时 BatchApplyEnabled 才使用受限 LOB 模式

API 密钥:postgres-batch-apply-lob-mode

如果复制中包含 LOB 列,则只能在受限 LOB 模式下使用 BatchApplyEnabled。使用 LOB 模式的其他选项将导致批处理失败, Amazon DMS 并将逐一处理更改。建议您将这些表移到各自的任务中,改用事务性应用模式。

有关 BatchApplyEnabled 设置的更多信息,请参阅如何使用 DMS 批量应用特征来提高 CDC 复制性能?

验证 DMS 是否支持源数据库版本进行迁移

API 密钥:postgres-check-dbversion

此迁移前评估可验证源数据库版本是否与兼容。 Amazon 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,需要在源数据库上启用此参数。

验证批量应用的目标上是否同时存在主键和唯一索引

API 密钥:postgres-check-batch-apply-target-pk-ui-simultaneously

只有目标表上有主键或唯一索引的表才支持批量应用。具有主键和唯一索引的表会同时导致批处理失败,将逐一处理更改。建议您将此类表移到各自的任务中,改用事务性应用模式。或者,如果您正在进行迁移,则可以在目标表上删除唯一键或主键,然后对其进行重建。

有关更多信息,请参阅 使用自我管理的 PostgreSQL 数据库作为源启用 CDC Amazon DMS

建议在找到 LOB 对象时设置最大 LOB

API 密钥:postgres-check-limited-lob-size

PostgreSQL 的 LOB 大小计算方法与其他引擎不同。确保在任务设置中设置了正确的最大 LOB 大小,以避免任何数据截断。

有关更多信息,请参阅 AmazonDMS 数据验证

启用 DMS 验证后,验证表是否有主键或唯一索引以及其状态是否良好

API 密钥:postgres-check-pk-validity

数据验证要求表具有主键或唯一索引。

有关更多信息,请参阅 AmazonDMS 数据验证

验证 Amazon DMS 用户是否具有访问目标所需的权限

API 密钥:postgres-check-target-privileges

该 Amazon DMS 用户在目标数据库上必须至少具有 db_owner 用户角色。

有关更多信息,请参阅 使用 PostgreSQL 数据库作为目标时的安全要求 Amazon Database Migration Service

验证 CDC 免费复制槽位的可用性

API 密钥:postgres-check-replication-slots-count

此评测将验证复制槽位是否可供 CDC 用于复制更改。

验证 DMS 用户完全加载权限

API 密钥:postgres-check-select-object-privileges

此评测可验证 DMS 用户是否拥有执行完全加载操作所需表的必要 SELECT 权限。

检查数字随机化的转换规则

API 密钥:postgres-datamasking-digits-randomize

此评测会验证表映射中使用的列是否与“数字随机化”转换规则兼容。此外,此评测还会检查选择进行转换的任何列是否为主键、唯一约束或外键的一部分,因为应用“数字随机化”转换并不能保证任何唯一性。

查看数字掩码的转换规则

API 密钥:postgres-datamasking-digits-mask

此评测会验证“数字掩码”转换规则是否不支持表映射中使用的任何列。此外,此评测还会检查选择进行转换的任何列是否为主键、唯一约束或外键的一部分,因为对此类列应用“数字掩码”转换可能会导致 DMS 任务失败,因为无法保证唯一性。

查看哈希掩码的转换规则

API 密钥:postgres-datamasking-hash-mask

此评测会验证“哈希掩码”转换规则是否不支持表映射中使用的任何列。它还会检查源列的长度是否超过 64 个字符。理想情况下,目标列长度应大于 64 个字符以支持哈希掩码。此外,此评测还会检查选择进行转换的任何列是否为主键、唯一约束或外键的一部分,因为应用“数字随机化”转换并不能保证任何唯一性。

确认数据验证任务设置和数据掩蔽数字随机化未同时启用

API 密钥:all-to-all-validation-with-datamasking-digits-randomize

此迁移前评测可验证数据验证设置和数据掩蔽数字随机化是否同时启用,因为这些功能不兼容。

确认数据验证任务设置和数据掩蔽哈希掩码未同时启用

API 密钥:all-to-all-validation-with-datamasking-hash-mask

此迁移前评测可验证数据验证设置和数据掩蔽哈希掩码是否同时启用,因为这些功能不兼容。

确认数据验证任务设置和数据掩蔽数字掩码未同时启用

API 密钥:all-to-all-validation-with-digit-mask

此迁移前评测可验证数据验证设置和数据掩蔽数字掩码是否同时启用,因为这些功能不兼容。

验证源数据库中是否至少存在一个选定对象

API 密钥:all-check-source-selection-rules

此迁移前评估验证源数据库中是否至少存在一个在选择规则中指定的对象,包括基于通配符的规则的模式匹配。

验证目标 PostgreSQL 数据库是否包含生成的列

API 密钥:postgres-check-target-generated-cols

此迁移前评估可验证目标 PostgreSQL 数据库是否包含在迁移过程中可能需要特殊处理的任何生成的列(包括已存储和虚拟类型)。生成的列从其他列中计算其值,需要进行特定的验证,以确保与目标 PostgreSQL 版本兼容,并且迁移后数据保持适当的一致性。

验证物化视图是否存在于同类 PostgreSQL 迁移中

API 密钥:postgres-check-materialized-views

在 PostgreSQL 数据库之间迁移时 Amazon DMS ,无法迁移物化视图。迁移后,必须在目标数据库上手动创建实例化视图。

有关更多信息,请参阅 将 PostgreSQL 数据库作为 DMS 源的限制

验证副本身份 FULL 是否与 pglogical 插件的使用有冲突

API 密钥:postgres-check-pglogical-replica-identity-full

此迁移前评估使用副本标识 FULL 来检测表。虽然使用 test_decoding 插件支持 REPLICA IDENTITY FULL,但将其与 pglogical 一起使用会阻止正确复制更新。要么将副本身份设置更改为 DEFAULT/INDEX,要么切换到 test_decoding 插件以保持副本身份已满

有关更多信息,请参阅 使用逻辑复制启用更改数据捕获(CDC)

验证源数据库中是否存在辅助约束和索引(非主约束)

API 密钥:all-check-secondary-constraints

此迁移前评估验证源数据库中是否存在辅助约束和索引(外键、校验约束、非聚集索引)。

验证 CHAR/VARCHAR 列的兼容性以便迁移到 Oracle

API 密钥:postgres-to-oracle-check-varchar-columns

此迁移前评估会验证源NCHAR/NVARCHAR2 data type columns used in the target database are compatible with CHAR/VARCHAR数据库中的列。

验证是否已在源数据库上配置了idle_in_transaction_session_timeout设置

API 密钥:postgres-check-idle-in-transaction-session-timeout

此迁移前评估验证源数据库上的idle_in_transaction_session_timeout参数是否未设置为 0。

验证 Amazon DMS 用户是否具有 Amazon托管的 PostgreSQL 数据库所需的角色

API 密钥:postgres-check-rds-roles

此迁移前评估验证 Amazon DMS 用户是否已配置为 Amazon托管的 PostgreSQL 数据库的所有必需角色。角色不足会导致迁移任务失败。