近期,线上数据库需要搭建新从库,由于库比较大,所以从物理备份恢复数据搭建。
背景:5.6版本的主从库,备份是从从库备的。
恢复完备份数据,根据xtrabackup_info中的位点信息change to master的时候出现了如下报错:
代码语言:javascript复制Got fatal error 1236 from master when reading data from binary
log: 'log event entry exceeded max_allowed_packet; Increase
max_allowed_packet on master; the start event position from
'mysql-bin.000042' at 203688051, the last event was read from
'/data/3309/mysql-bin.000042
第一感觉与某个参数有关。搜了搜网上的解决方案,一大堆,尝试了都无果。网上很多文章有误导性,说binlog大小,空间等等各种原因。中午吃饭和同事讨论,觉得这个max_allowed_packet只是网络包传输的限制,与binlogh大小无关。
尝试了很久,无果。于是请教资深的同事,他的解决方法让我学习了很多。他首先尝试执行change,然后报错。他没有去思考其他的,而是问我,你有没有解析binlog看这个位点是什么操作?当他提问这个问题的时候,我才恍然大悟,肯定是binlog位点找的不对。然后同事自己解析binlog发现没有这个位点,然后问我这个是主库的备份还是从库的备份,change到主库还是从库。
于是,问题很清晰了。就是从库的备份,应该从xtrabackup_slave_info文件找位点信息。
总结:1.遇到问题,要排查环境等基础信息,理清逻辑,一步一步排查,不要依据现象根据经验下结论。
2. 相关工具使用注意点需要总结。