1、Binary log is not open
java.io.IOException: Received error packet: errno = 1236, sqlstate = HY000 errmsg = Binary log is not open
解:[mysqld]log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
2、Could not find first log file name in binary log index file
java.io.IOException: Received error packet: errno = 1236, sqlstate = HY000 errmsg = Could not find first log file name in binary log index file
2021-06-17 15:11:58.995 [destination = yiCheForumCanal , address = /10.168.4.240:3306 , EventParser] WARN c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - ---> begin to find start position, it will be long time for reset or first position
2021-06-17 15:11:58.995 [destination = yiCheForumCanal , address = /10.168.4.240:3306 , EventParser] WARN c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - prepare to find start position just last position
{"identity":{"slaveId":-1,"sourceAddress":{"address":"10.168.4.240","port":3306}},"postion":{"gtid":"","included":false,"journalName":"binlog.001608","position":1017268964,"serverId":188,"timestamp":1620720622000}}
2021-06-17 15:11:59.054 [destination = yiCheForumCanal , address = /10.168.4.240:3306 , EventParser] WARN c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - ---> find start position successfully, EntryPosition[included=false,journalName=binlog.001608,position=1017268964,serverId=188,gtid=,timestamp=1620720622000] cost : 58ms , the next step is binlog dump
2021-06-17 15:11:59.161 [destination = yiCheForumCanal , address = /10.168.4.240:3306 , EventParser] ERROR c.a.o.canal.parse.inbound.mysql.dbsync.DirectLogFetcher - I/O error while reading from client socket
java.io.IOException: Received error packet: errno = 1236, sqlstate = HY000 errmsg = Could not find first log file name in binary log index file
at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.DirectLogFetcher.fetch(DirectLogFetcher.java:102) ~[canal.parse-1.1.4.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.dump(MysqlConnection.java:235) [canal.parse-1.1.4.jar:na]
at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:265) [canal.parse-1.1.4.jar:na]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_292]
2021-06-17 15:11:59.162 [destination = yiCheForumCanal , address = /10.168.4.240:3306 , EventParser] ERROR c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - dump address /10.168.4.240:3306 has an error, retrying. caused by
java.io.IOException: Received error packet: errno = 1236, sqlstate = HY000 errmsg = Could not find first log file name in binary log index file
at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.DirectLogFetcher.fetch(DirectLogFetcher.java:102) ~[canal.parse-1.1.4.jar:na]
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.dump(MysqlConnection.java:235) ~[canal.parse-1.1.4.jar:na]
at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:265) ~[canal.parse-1.1.4.jar:na]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_292]
2021-06-17 15:11:59.162 [destination = yiCheForumCanal , address = /10.168.4.240:3306 , EventParser] ERROR com.alibaba.otter.canal.common.alarm.LogAlarmHandler - destination:yiCheForumCanal[java.io.IOException: Received error packet: errno = 1236, sqlstate = HY000 errmsg = Could not find first log file name in binary log index file
at com.alibaba.otter.canal.parse.inbound.mysql.dbsync.DirectLogFetcher.fetch(DirectLogFetcher.java:102)
at com.alibaba.otter.canal.parse.inbound.mysql.MysqlConnection.dump(MysqlConnection.java:235)
at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$3.run(AbstractEventParser.java:265)
at java.lang.Thread.run(Thread.java:748)
]
解:
{“identity”:{“slaveId”:-1,”sourceAddress”:{“address”:”10.168.4.240”,”port”:3306}},”postion”:{“gtid”:””,”included”:false,”journalName”:”binlog.001608”,”position”:1017268964,”serverId”:188,”timestamp”:1620720622000}}
无法从已知的binlog位点开始同步,登录数据库主库,运行show master status 查看主从同步情况,
比较发现,canal-server的同步位点时binlog.001608,因为canlnal是新机器部署、链接的新测试库,biglog未定发生变化,导致canal-server要同步的binlog文件不存在,最终导致同步异常。具体解决方案:
- 关闭canal server、canal client
- 如果canal server、canal client 没有关闭,是无法正常删除zookeepeer上对应的节点的,,所以要关闭所有的canal server、canal client节点
- 删除zookeeper节点信息
- 登录zookeeper所在服务器,使用zkCli.sh脚步进入到命令行
- 使用ls命令查看canal正在运行的所有实例信息
- $ ls /otter/canal/destinations
- rmr /otter/canal/destinations/xxx
- 修改canal server同步位点信息
- 进入canal server 服务器的conf目录,修改对应实例instance.properties文件,将其中的canal.instance.master.journal.name和canal.instance.master.position修改为主库中的最新值。其中journal.name表示最新的binglog文件,master.position表示位点信息
- 如果部署了两台Canal Server组成keepalive,这里可以只修改一台canal server ,因为当成功修改位点信息后,只要zookeeper中有位点信息,Canal Server就不会从本地配置文件读取
- 重启canal server、canal client
解:在目的机器添加ip白名单
sudo iptables -I INPUT -m state —state NEW -m tcp -p tcp -s 192.168.87.76 -j ACCEPT