View a markdown version of this page

PostgreSQL 评测 - AWS Database Migration Service
验证 DDL 事件触发器是否设置为 ENABLE ALWAYS验证源数据库中是否存在 PostGIS 列验证在完全加载过程中目标表上是否禁用了外键约束验证是否存在名称相似的表验证是否存在不带主键的 ARRAY 数据类型的表启用时 BatchApplyEnabled 验证目标表上是否存在主键或唯一索引验证目标数据库中是否存在任何具有二级索引的表以用于完全加载迁移任务验证是否仅在设置为 true 时 BatchApplyEnabled 使用受限 LOB 模式验证 DMS 是否支持源数据库版本进行迁移验证源数据库上的 logical_decoding_work_me m 参数验证源数据库是否存在长时间运行的事务验证源数据库参数 max_slot_wal_keep_size检查源数据库参数 p ostgres-check-maxwalsend ers 是否设置为支持 CDC。检查源数据库是否配置为 PGLOGICAL验证源表主键是否为 LOB 数据类型验证源表是否有主键验证源数据库上是否存在准备好的事务验证 wal_sender_timeout 是否设置为支持 DMS CDC 所需的最低值验证源数据库上的 wal_level 是否设置为逻辑验证批量应用的目标上是否同时存在主键和唯一索引建议在找到 LOB 对象时设置最大 LOB启用 DMS 验证后,验证表是否有主键或唯一索引以及其状态是否良好验证是否 AWS DMS 用户对目标具有必要的权限验证 CDC 免费复制槽位的可用性验证 DMS 用户完全加载权限检查数字随机化的转换规则查看数字掩码的转换规则查看哈希掩码的转换规则确认数据验证任务设置和数据掩蔽数字随机化未同时启用确认数据验证任务设置和数据掩蔽哈希掩码未同时启用确认数据验证任务设置和数据掩蔽数字掩码未同时启用验证源数据库中是否存在至少一个选定对象验证目标 PostgreSQL 数据库是否包含生成的列验证物化视图是否存在于同构 PostgreSQL 迁移中验证 REPLICA IDENTITY FULL 是否与 pglogical 插件验证源数据库中是否存在次要约束和索引(非主要)验证迁移到 Oracle 的 CHAR/VARCHAR 列兼容性验证源数据库上是否配置了 idle_in_transaction_session_timeout 设置验证一下 AWS DMS 用户拥有所需的角色 AWS-管理的 PostgreSQL 数据库验证目标端点不是只读副本验证源 Aurora PostgreSQL 只读副本版本验证源 PostgreSQL 只读副本版本

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

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 数据类型的列是否不同。 AWS DMS 仅支持同构(类似)迁移的 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_me m 参数

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 文件而失败。

检查源数据库参数 p ostgres-check-maxwalsend ers 是否设置为支持 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 AWS DMS source

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

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

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

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

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

API 密钥:postgres-check-pk-validity

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

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

验证是否 AWS DMS 用户对目标具有必要的权限

API 密钥:postgres-check-target-privileges

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

有关更多信息,请参阅 使用 PostgreSQL 数据库作为目标时的安全要求 AWS 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 数据库是否包含任何在迁移期间可能需要特殊处理的生成的列(包括 STORED 和 VIRTUAL 类型)。生成的列根据其他列计算其值,需要进行特定的验证,以确保与目标 PostgreSQL 版本兼容并在迁移后保持适当的数据一致性。

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

API 密钥:postgres-check-materialized-views

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

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

验证 REPLICA IDENTITY FULL 是否与 pglogical 插件

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

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

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

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

API 密钥:all-check-secondary-constraints

此迁移前评估可验证源数据库中是否存在二级约束和索引(外键、检查约束、非聚集索引)。

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

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

此迁移前评估可验证目标数据库中使用的 NCHAR/NVARCHAR2 数据类型列是否与源数据库中的 CHAR/VARCHAR 列兼容。

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

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

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

验证一下 AWS DMS 用户拥有所需的角色 AWS-管理的 PostgreSQL 数据库

API 密钥:postgres-check-rds-roles

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

验证目标端点不是只读副本

API 密钥:all-check-target-read-replica

此迁移前评估可验证目标端点是否未配置为只读副本。 AWS DMS 需要目标数据库的写入权限,无法复制到只读副本。

验证源 Aurora PostgreSQL 只读副本版本

API 密钥:postgres-aurora-check-source-replica-role-cdc

此迁移前评估验证源端点是否使用运行版本 16 或更高版本的 Aurora PostgreSQL 只读副本。CDC 操作需要复制槽,而 Aurora PostgreSQL 在版本早于 16 的只读节点上不支持复制槽。

有关更多信息,请参阅 只读副本作为 PostgreSQL 的源

验证源 PostgreSQL 只读副本版本

API 密钥:postgres-check-source-replica-role-cdc

此迁移前评估验证源端点是否使用运行版本 16 或更高版本的 PostgreSQL 只读副本。CDC 操作需要复制槽,在 16 之前的版本中,PostgreSQL 在只读节点上不支持复制槽。

有关更多信息,请参阅 只读副本作为 PostgreSQL 的源