日志报:
pid:7 nid:1 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:218)
at com.alibaba.otter.node.etl.select.selector.canal.CanalEmbedSelector.selector(CanalEmbedSelector.java:278)
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:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
通过查看otter停止的binlog运行位置,然后到binlog里面把日志解析出来,猜测应该是执行rename操作时,otter报空指针了:
at 12852379
rename /* gh-ost */ table allin_followup_platform
. push_detail
to allin_followup_platform
. _push_detail_del
, allin_followup_pl atform
. _push_detail_gho
to allin_followup_platform
. push_detail
上面push_detail表正是我要用otter同步的表,但是执行这个rename操作时,otter停止工作了,这说明,otter不支持gh-osc或者pt-osc工具的DDL操作。
3条答案
按热度按时间disho6za1#
otter 支持gh-ost,已测试。
q9yhzks02#
我试了一下,也是不支持啊,UPDATE
sensitive_filter
._sensitive_filter_log_ghc
的时候(还没到rename操作),就报错了, #162 这个问题里,大神有说过,很可能是出现再 源表已完成操作,但是目标表还在反查临时表的时候,就报错了。也就是说,目前来看 不支持PT工具以及 gh的在线DDL 操作? @agapple 求证实,或者给一个能用的方法?
nimxete23#
我的也不支持。
目前看otter已经不再维护和更新了。
要是会java,可以自己来修otter的bug。
我也不会java。
用otter的人应该都是运维或者DBA,用canal的人应该都是搞开发的或大数据的