AWS DMS通过在源和目标数据库之间运行任意数量的复制实例来实现DDL复制。每个复制实例都可以自行运行,因此可以同时进行许多DDL操作。复制实例会定期检查源和目标数据库的元数据以查看所有新的DDL更改,并将这些更改应用于目标数据库。
以下是通过AWS DMS实现DDL复制的示例代码:
1.创建一个DMS复制实例:
aws dms create-replication-instance \
--replication-instance-identifier my-dms-instance \
--allocated-storage 50 \
--engine-version 3.1.3 \
--vpc-security-group-ids sg-xxxxxx \
--availability-zone us-west-2a \
--replication-instance-class dms.t2.micro
2.创建源和目标端点:
aws dms create-endpoint \
--endpoint-identifier my-source-endpoint \
--endpoint-type source \
--engine-name mysql \
--password secret \
--server-name my-source-database.example.com \
--username admin
aws dms create-endpoint \
--endpoint-identifier my-target-endpoint \
--endpoint-type target \
--engine-name mysql \
--password secret \
--server-name my-target-database.example.com \
--username admin
3.创建复制任务:
aws dms create-replication-task \
--replication-task-identifier my-replication-task \
--source-endpoint-arn arn:aws:dms:us-west-2:xxxxxxxxxxxx:endpoint:my-source-endpoint \
--target-endpoint-arn arn:aws:dms:us-west-2:xxxxxxxxxxxx:endpoint:my-target-endpoint \
--replication-instance-arn arn:aws:dms:us-west-2:xxxxxxxxxxxx:rep:my-dms-instance \
--migration-type full-load-and-cdc \
--table-mappings file://table-mappings.json
4.为每个表指定DDL复制设置:
{
"rules": [
{
"rule-type": "selection",
"rule-id": "1",
"rule-name": "1",
"object-locator": {
"schema-name": "mydb",
"table-name": "orders"
},
"rule-action": "include",
"filters": []
},
{
"rule-type": "transformation",
"rule-id": "2",
"rule-name": "2",
"rule-action": "modify",
"metadata:modified-data": "{\"tablename\":\"orders\",\"tempfld\":\"_TEMPKEY\"}",
"filters":