环境信息
canal version canal.deployer-1.1.0 mysql version 5.7.22-log MySQL Community Server (GPL)
问题描述
2019-01-31 11:06:06.357 [destination = example , address = /127.0.0.1:3306 , EventParser] WARN c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - prepare to find start position just show master status 2019-01-31 11:10:26.716 [destination = example , address = /127.0.0.1:3306 , EventParser] WARN c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - find start position : EntryPosition[included=false,journalName=log-bin.000001,position=12782,serverId=139,gtid=,timestamp=1548903950000] 2019-01-31 11:10:26.718 [destination = example , address = /127.0.0.1:3306 , EventParser] ERROR c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - dump address /127.0.0.1:3306 has an error, retrying. caused by java.lang.IllegalArgumentException: null at java.util.concurrent.ThreadPoolExecutor.(ThreadPoolExecutor.java:1314) ~[na:1.8.0_191] at java.util.concurrent.ThreadPoolExecutor.(ThreadPoolExecutor.java:1237) ~[na:1.8.0_191] at java.util.concurrent.Executors.newFixedThreadPool(Executors.java:151) ~[na:1.8.0_191] at com.alibaba.otter.canal.parse.inbound.mysql.MysqlMultiStageCoprocessor.start(MysqlMultiStageCoprocessor.java:84) ~[canal.parse-1.1.0.jar:na] at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:238) ~[canal.parse-1.1.0.jar:na] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_191] 2019-01-31 11:10:26.722 [destination = example , address = /127.0.0.1:3306 , EventParser] ERROR com.alibaba.otter.canal.common.alarm.LogAlarmHandler - destination:example[java.lang.IllegalArgumentException at java.util.concurrent.ThreadPoolExecutor.(ThreadPoolExecutor.java:1314) at java.util.concurrent.ThreadPoolExecutor.(ThreadPoolExecutor.java:1237) at java.util.concurrent.Executors.newFixedThreadPool(Executors.java:151) at com.alibaba.otter.canal.parse.inbound.mysql.MysqlMultiStageCoprocessor.start(MysqlMultiStageCoprocessor.java:84) at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:238) at java.lang.Thread.run(Thread.java:748) ] 2019-01-31 11:10:44.111 [destination = example , address = /127.0.0.1:3306 , EventParser] WARN c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - prepare to find start position just show master status
步骤重现
1.mysql 环境均ok
2.canal在原配置文件的基础上修改内容为:
canal.properties canal.ip= 192.168.31.139
instance.properties
canal.instance.dbUsername=canal canal.instance.dbPassword=canal
出现这条语句后,在主库执行insert动作,必然报错,是因为环境没有搭建好么
2019-01-31 11:19:20.961 [destination = example , address = /127.0.0.1:3306 , EventParser] WARN c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - prepare to find start position just show master status
原提问者GitHub用户pdudo
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
从日志中可以看出,Canal在执行dump操作时,出现了IllegalArgumentException异常,导致Canal无法获取binlog的数据。原因可能是在dump过程中,Canal的线程池出现了问题,建议按照以下步骤进行排查:
检查Canal的配置文件,确认binlog的正确配置参数,特别是需要配置server-id参数。
检查Canal的线程池配置,确认线程池的核心线程数、最大线程数、队列大小等参数是否合理。
检查当前MySQL数据库的使用情况,确认是否有其他进程正在占用MySQL资源,导致Canal无法获取binlog数据。
检查Canal的日志,查看是否有其他异常信息,以确定具体的问题原因。
如果以上方法无法解决问题,可以尝试升级Canal的版本,或者采用其他的数据同步方案,如使用MySQL自带的binlog同步功能。