首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【转】TiDB Syncer不同表名库名同步且支持pt-osc改表

【转】TiDB Syncer不同表名库名同步且支持pt-osc改表

作者头像
保持热爱奔赴山海
发布2023-03-24 11:30:53
发布2023-03-24 11:30:53
50000
代码可运行
举报
文章被收录于专栏:数据库相关数据库相关
运行总次数:0
代码可运行

TiDB Syncer不同表名库名同步且支持pt-osc改表

mysql端库名叫sysbench, 表名sbtest11

tidb端库名ptosc_sysbench,表名ptosc_sbtest11

执行的pt-osc命令

代码语言:javascript
代码运行次数:0
运行
复制
#pt-online-schema-change --ask-pass --check-interval=1 --no-check-replication-filters --no-check-alter --no-version-check --chunk-size 3 --recursion-method=none --max-load='Threads_running=200' --critical-load='Threads_running=500' --recurse=0 --no-drop-old-table --alter="drop index c" --print h=10.133.x.52,P=3308,u=fanboshi,D=sysbench,t=sbtest11,A=utf8 --execute

正确的syncer配置写法:

代码语言:javascript
代码运行次数:0
运行
复制
[[replicate-do-table]]
db-name = "ptosc_sysbench"
tbl-name = "ptosc_sbtest11"


[[replicate-do-table]]
db-name = "ptosc_sysbench"
tbl-name = "~.*_sbtest11_new"


[[replicate-do-table]]
db-name = "ptosc_sysbench"
tbl-name = "~.*_sbtest11_old"

[[route-rules]]
pattern-schema = "sysbench"
pattern-table = "sbtest11"
target-schema = "ptosc_sysbench"
target-table = "ptosc_sbtest11"

错误的syncer配置写法:

代码语言:javascript
代码运行次数:0
运行
复制
[[replicate-do-table]]
db-name = "ptosc_sysbench"
tbl-name = "ptosc_sbtest11"


[[route-rules]]
pattern-schema = "sysbench"
pattern-table = "sbtest11"
target-schema = "ptosc_sysbench"
target-table = "ptosc_sbtest11"

原因:

代码语言:javascript
代码运行次数:0
运行
复制
pt-osc是通过创建影子表,执行DDL,通过触发器拷贝数据,最后rename表名来实现DDL的。
在同步binlog的时候,需要过程中涉及到把影子表的变更也同步到下游,否则会出现下游执行到对应的binlog报错的情况。

详情请参考原文地址 http://fuxkdb.com/2019/12/12/2019-12-12-TiDB-Syncer%E4%B8%8D%E5%90%8C%E8%A1%A8%E5%90%8D%E5%BA%93%E5%90%8D%E5%90%8C%E6%AD%A5%E4%B8%94%E6%94%AF%E6%8C%81pt-osc%E6%94%B9%E8%A1%A8/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档