如何解决pt-online-schema-change 中断 AWS DMS 复制
目前使用 AWS DMS 将数据从我们的 aurora MysqL 数据库复制到 S3。这会产生一个低延迟的数据湖,我们可以使用它来获取发生的所有更改的沿袭,并从中构建额外的数据管道。但是,当通过 pt-online-schema-change 脚本进行更改时,修改后的表完全停止复制。有什么原因会发生这种情况吗?
运行更改后,日志显示源表的架构不再符合 DMS 的预期,并且会跳过 CDC 更改。唯一可能的原因是 DMS 没有正确跟踪 DML 语句。
- 使用 percona 触发的表更改(在本例中,添加列)
- AWS DMS 同步的新表
- 触发器在 AWS DMS 中添加了不支持的抛出警告
- 表被重命名
- 表列数不匹配,忽略额外的列。
- 表格列大小不匹配,跳过。
值得注意的是,AWS DMS 和 S3 作为目标支持 Percona 使用的所有 DML 语句(外部触发器)。有没有其他人对这种情况或工具组合有任何经验?
编辑:
以下是用于使用 Percona 进行这些更改的命令示例:
pt-online-schema-change --host=<host> \
--user=<user> \
--ask-pass \
--execute \
--no-drop-old-table \
--no-check-alter \
--alter="ADD COLUMN db_row_update_stamp TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" \
D=<db>,t=<REPLACE_TABLE_NAME_HERE>
解决方法
因此查看此任务的 DETAILED_DEBUG 日志,我正在 AWS DMS 中手动测试重命名场景。
结果如下。
2021-02-27T00:38:43:255381 [SOURCE_CAPTURE ]T: Event timestamp '2021-02-27 00:38:38' (1614386318),pos 54593835 (mysql_endpoint_capture.c:3293)
2021-02-27T00:38:43:255388 [SOURCE_CAPTURE ]D: > QUERY_EVENT (mysql_endpoint_capture.c:3306)
2021-02-27T00:38:43:255394 [SOURCE_CAPTURE ]T: Default DB = 'my_db' (mysql_endpoint_capture.c:1713)
2021-02-27T00:38:43:255399 [SOURCE_CAPTURE ]T: SQL statement = 'RENAME TABLE test_table TO _test_table_old' (mysql_endpoint_capture.c:1720)
2021-02-27T00:38:43:255409 [SOURCE_CAPTURE ]T: DDL DB = '',table = '',verb = 0 (mysql_endpoint_capture.c:1734)
2021-02-27T00:38:43:255414 [SOURCE_CAPTURE ]T: >>> Unsupported or commented out DDL: 'RENAME TABLE test_table TO _test_table_old' (mysql_endpoint_capture.c:1742)
尽管文档声称支持 RENAME,但此版本的 DMS 似乎无法正确读取 RENAME 语句。
我正在考虑在 AWS 方面打开一个错误。这影响了 AWS DMS 服务器版本 3.4.3。
将针对以前的版本进行测试,如果我发现特定版本已修复此问题,则会发布更新,直到在较新版本中解决为止。不能 100% 声称这是 DMS 中的错误,但是将 Percona 排除在外,我能够重现该问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。