alibaba / otter

阿里巴巴分布式数据库同步系统(解决中美异地机房)
Apache License 2.0
8.06k stars 2.49k forks source link

otter支持使用pt-online-schema-change工具改表同步吗 #162

Open ninglianjie opened 8 years ago

ninglianjie commented 8 years ago

我在测试过程中,用pt-online-schema-change改表之后,同步就断了,报下面的错误:

pid:1 nid:2 exception:setl:com.alibaba.otter.node.etl.select.exceptions.SelectException: java.lang.NullPointerException at com.alibaba.otter.node.etl.select.selector.MessageParser.parse(MessageParser.java:209) at com.alibaba.otter.node.etl.select.selector.canal.CanalEmbedSelector.selector(CanalEmbedSelector.java:264) at com.alibaba.otter.node.etl.select.SelectTask.processSelect(SelectTask.java:236) at com.alibaba.otter.node.etl.select.SelectTask.access$300(SelectTask.java:94) at com.alibaba.otter.node.etl.select.SelectTask$1.run(SelectTask.java:208) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) Caused by: java.lang.NullPointerException at com.alibaba.otter.node.etl.select.selector.MessageParser.internParse(MessageParser.java:378) at com.alibaba.otter.node.etl.select.selector.MessageParser.parse(MessageParser.java:181) ... 9 more

agapple commented 8 years ago

没测试过,需要分析一下online ddl的一些行为

ninglianjie commented 8 years ago

会创建触发器,并且有rename操作。比如: RENAME TABLE sbtest.sbtest1 TO sbtest._sbtest1_old, sbtest._sbtest1_new TO sbtest.sbtest1

ch-lgs commented 8 years ago

pt-online-schema-change肯定不能用,大量的数据写入临时表会阻塞同步,另外触发器可能会造成环路,最后的rename table会造成同步端新写入的数据丢失

ninglianjie commented 8 years ago

多谢指点, 不过对于你描述的三个问题,仍然有些疑问:

  1. 大量的数据写入临时表,这个可以调整参数,让写入慢一点。
  2. otter对触发器不进行同步,应该没有环路的问题。
  3. 如果sql语句是按照binlog顺序执行,rename操作并不会造成数据丢失。
wlcwfwyt commented 8 years ago

只要能保证一端osc,另一端不要DML就没问题,我测过.

ch-lgs commented 8 years ago

对应osc如何不进行DML的同步?

wlcwfwyt commented 8 years ago

固定写入点,osc只能在写入点机房执行。写入点的问题,可以制定一个路由策略。

luoyaogui commented 7 years ago

如下是我对PT工具+DDL使用的理解,欢迎交流: image