如果AWS DMS CDC复制任务未迁移数据并在LOB列中显示“未更改-toast-datum”而不是实际值,可能是由于以下原因之一:
数据类型不匹配:请确保源和目标表的LOB列使用相同的数据类型,例如,如果源表的LOB列是text类型,则目标表的LOB列也应该是text类型。
缺少DDL语句:在源数据库上运行ALTER TABLE语句时,确保DMS可以检测到该更改并相应地更新目标数据库。这可以通过在CDC任务中启用“自动DDL操作”选项来完成。
CDC任务配置错误:检查CDC任务的配置是否正确。确保源和目标数据库连接信息正确,并且使用正确的表和列映射。
以下是一个示例代码,展示如何创建一个简单的AWS DMS CDC任务:
import boto3
client = boto3.client('dms')
response = client.create_replication_task(
ReplicationTaskIdentifier='my-replication-task',
SourceEndpointArn='arn:aws:dms:us-west-2:123456789012:endpoint:my-source-endpoint',
TargetEndpointArn='arn:aws:dms:us-west-2:123456789012:endpoint:my-target-endpoint',
MigrationType='cdc',
TableMappings='''{
"rules": [
{
"rule-type": "selection",
"rule-id": "1",
"rule-name": "1",
"object-locator": {
"schema-name": "my-schema",
"table-name": "my-table"
},
"rule-action": "include"
}
]
}'''
)
print(response)
确保在TableMappings中正确指定源表和目标表的名称和架构。此示例中,源表位于“my-schema.my-table”。
如果问题仍然存在,建议查看AWS DMS的日志和错误消息,以获取更详细的故障排除信息。