这通常是由于源数据库RDS实例的缺失“rds_superuser”权限造成的。解决方法是添加该权限,并确保源和目标数据库都启用CDC。
添加“rds_superuser”权限可通过以下步骤完成:
在源数据库RDS实例中创建一个新的登录角色,例如“dms_superuser”。
将新角色指定为“rds_superuser”。
例如,对于MySQL和MariaDB,在数据库中执行以下命令:
GRANT rds_superuser TO dms_superuser;
将新角色添加到源端和目标端的DMS任务中。
代码示例:
创建新角色:
CREATE ROLE dms_superuser;
授予rds_superuser权限:
GRANT rds_superuser TO dms_superuser;
将新角色添加到DMS任务中:
CALL mysql.rds_apply_reboot_actions;
CALL mysql.rds_set_configuration('binlog retention hours', 24);
CALL mysql.rds_set_configuration('binlog format', 'ROW');
CALL mysql.rds_set_configuration('slow query log', 1);
CALL mysql.rds_set_configuration('long query time', 10);
EXEC msdb.dbo.sp_add_jobserver @job_id = N'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', @server_name = N'xxxxx.xxxxxx.xxxxxx.region.rds.amazonaws.com';
SEQUENCE_BOUNDS_VALIDATION 0
TABLE_MAPPING CACHE_CONTROL_ENABLED
MIGRATION_TYPE reactive
REPLICATION_INSTANCE_ARN arn:aws:dms:us-east-1:012345678910:rep:xxxxxxxxxxxxxxx
TABLE_MAPPINGS '{"rules":
[{"rule-type": "selection",
"rule-id": "1",
"rule-name": "1",
"object-locator": {
"schema-name": "xxxxx",
"table-name": "xxxxx"
},
"rule-action": "include",
"filters": []
}]}'
CdcStartPosition '{"xxxxx-xxxxx-xxxxx-xxxxx":{"logFile":"binlog.001797","offset":675202077}}'