Check /home/admin/canal-server/logs/example/example.log and find the following error:
2022-07-20 00:00:08.473 [destination = example , address = mall-mysql/192.168.38.131:3306 , EventParser] ERROR com.alibaba.otter.canal.common.alarm.LogAlarmHandler - destination:e
xample[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:238)
at com.alibaba.otter.canal.parse.inbound.AbstractEventParser$1.run(AbstractEventParser.java:262)
at java.lang.Thread.run(Thread.java:748)
reason:
The binlog file set in the configuration file was not found
Solution:
Because the configuration file of instance.properties is packaged into the docker image, so it can only be modified in the instance
First check the binlog log file name and position in the database
Query in the mall-mysql database of this example:
mysql> show master status;
Output file: File: mysql-binlog.000233, Position: 652645
Enter the instance:
kubectl exec -ti mall-canal-84f6f7d7cc-xbghn bash -n nsName
xxx> vi /home/admin/canal-server/conf/example/instance.properties
Modify the position Info section:
canal.instance.master.address=mall-mysql:3306
canal.instance.master.journal.name=mysql-binlog.000233
canal.instance.master.position=652645
canal.instance.master.timestamp=
canal.instance.master.gtid=
Restart service:
xxx> cd /home/admin/canal-server
xxx> ./restart.sh
Check the log after restart and solve this error.