设为首页 收藏本站
查看: 756|回复: 0

[经验分享] mysql数据库binlog日志截断报错,导致mysql主从同步失败故障排查

[复制链接]

尚未签到

发表于 2018-9-30 08:27:39 | 显示全部楼层 |阅读模式
  mysql数据库binlog日志截断报错,导致mysql主从同步失败故障排查
  Got fatal error 1236 from master when reading data from binary log: 'binlog truncated in the middle of event; consider out of disk space on master
  报错信息收集:
  1.登陆mysql查询slave 状态;
  mysql> show slave status\G
  *************************** 1. row ***************************
  Slave_IO_State:
  Master_Host: 192.168.16.x
  Master_User: rsync
  Master_Port: 3306
  Connect_Retry: 60
  Master_Log_File: mysql-bin.002333
  Read_Master_Log_Pos: 2828282975

  >  Relay_Log_Pos: 142159071
  Relay_Master_Log_File: mysql-bin.002333
  Slave_IO_Running: No
  Slave_SQL_Running: Yes
  Replicate_Do_DB:
  Replicate_Ignore_DB:
  Replicate_Do_Table:
  Replicate_Ignore_Table:
  Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
  Last_Errno: 0
  Last_Error:
  Skip_Counter: 0
  Exec_Master_Log_Pos: 142158925
  Relay_Log_Space: 2828283637
  Until_Condition: None
  Until_Log_File:
  Until_Log_Pos: 0
  Master_SSL_Allowed: No
  Master_SSL_CA_File:
  Master_SSL_CA_Path:
  Master_SSL_Cert:
  Master_SSL_Cipher:
  Master_SSL_Key:
  Seconds_Behind_Master: NULL
  Master_SSL_Verify_Server_Cert: No
  Last_IO_Errno: 1236
  Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'binlog truncated in the middle of event; consider out of disk space on master; the first event 'mysql-bin.001841' at 826366537, the last event read from './mysql-bin.002333' at 2828282975, the last byte read from './mysql-bin.002333' at 2828283169.'
  Last_SQL_Errno: 0
  Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
  Master_Server_Id: 3
  1 row in set (0.00 sec)
  2.mysql error日志报错!
  more /data/3306/mylog/mysqlderror.log
  140123  2:05:14 [ERROR] Error reading packet from server: binlog truncated in the middle of event; consider out of disk space on master; the first event 'mysql-bin.001841' at 826366537, the
  last event read from './mysql-bin.002333' at 2828282975, the last byte read from './mysql-bin.002333' at 2828283169. ( server_errno=1236)
  140123  2:05:14 [ERROR] Slave I/O: Got fatal error 1236 from master when reading data from binary log: 'binlog truncated in the middle of event; consider out of disk space on master; the fi
  rst event 'mysql-bin.001841' at 826366537, the last event read from './mysql-bin.002333' at 2828282975, the last byte read from './mysql-bin.002333' at 2828283169.', Error_code: 1236
  140123  2:05:14 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.002333', position 2828282975
  从以上报错信息来看是mysql binlog被截断
  排查
  1查看主节点binlog
  /mysql/bin/mysqlbinlog /data/3306/data/mysql-bin.002333 --start-position=2828266574 --stop-position=2828282975
  [root@cn-mysql03 ~]# /mysql/bin/mysqlbinlog /data/3306/data/mysql-bin.002333 --start-position=2828266574 --stop-position=2828282975
  /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
  /*!40019 SET @@session.max_insert_delayed_threads=0*/;
  /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
  DELIMITER /*!*/;
  # at 4

  #140123  1:46:33 server>  BINLOG '
  +QPgUg8DAAAAZwAAAGsAAAAAAAQANS41LjMyLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA==
  '/*!*/;
  # at 2828266574
  # at 2828267161
  # at 2828279625
  # at 2828280668
  # at 2828281262
  # at 2828281779
  # at 2828282383
  ERROR: Error in Log_event::read_log_event(): 'read error', data_len: 607, event_type: 23
  ERROR: Could not read entry at offset 2828282975: Error in log format or read error.   #报错binlog位置2828282975,是mysql-bin.002333最后一个position位置
  DELIMITER ;
  # End of log file
  ROLLBACK /* added by mysqlbinlog */;
  /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
  /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
  查看mysql官网的说明,当binlog最后遇到一个大事务时会将日志记录在这个日志,而不会跨binlog记录一个事务,于是我继续查看看mysql-bin.002334的日志头内容;
  [root@cn-mysql03 ~]# /mysql/bin/mysqlbinlog /data/3306/data/mysql-bin.002334 --start-position=107|more
  /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
  /*!40019 SET @@session.max_insert_delayed_threads=0*/;
  /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
  DELIMITER /*!*/;
  # at 4

  #140123  1:33:21 server>  BINLOG '
  4QDgUg8DAAAAZwAAAGsAAAAAAAQANS41LjMyLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA==
  '/*!*/;
  # at 107

  #140123  2:04:59 server>  use `ptmind_56fbce4e`/*!*/;
  SET TIMESTAMP=1390413899/*!*/;
  SET @@session.pseudo_thread_id=5575071/*!*/;
  SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
  SET @@session.sql_mode=0/*!*/;
  SET @@session.auto_increment_increment=2, @@session.auto_increment_offset=1/*!*/;
  /*!\C utf8 *//*!*/;
  SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
  SET @@session.lc_time_names=0/*!*/;
  SET @@session.collation_database=DEFAULT/*!*/;
  DROP TABLE IF EXISTS `sum_page_visits_stats_olap_m_tmp` /* generated by server */
  /*!*/;
  这个日志的开头也没有说明是继续上一个binlog的最后一个事务.
  确认以上问题后,重新从下一个日志开始启动主从同步;
  重新change master指定新binlog恢复主从同步
  mysql> change master to master_host='192.168.16.x', master_port=3306, master_user='xxx', master_password='xxxxx', master_log_file='mysql-bin.002334', master_log_pos=0;
  mysql> slave start;
  mysql> show slave status\G
  mysql> show slave status\G
  *************************** 1. row ***************************

  Slave_IO_State: Queueing master event to the>  Master_Host: 192.168.16.xx
  Master_User: rsync
  Master_Port: 3306
  Connect_Retry: 60
  Master_Log_File: mysql-bin.002340
  Read_Master_Log_Pos: 2147484362

  >  Relay_Log_Pos: 252771132
  Relay_Master_Log_File: mysql-bin.002335
  Slave_IO_Running: Yes
  Slave_SQL_Running: Yes
  Replicate_Do_DB:
  Replicate_Ignore_DB:
  Replicate_Do_Table:
  Replicate_Ignore_Table:
  Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
  Last_Errno: 0
  Last_Error:
  Skip_Counter: 0
  Exec_Master_Log_Pos: 252770986
  Relay_Log_Space: 14816020896
  Until_Condition: None
  Until_Log_File:
  Until_Log_Pos: 0
  Master_SSL_Allowed: No
  Master_SSL_CA_File:
  Master_SSL_CA_Path:
  Master_SSL_Cert:
  Master_SSL_Cipher:
  Master_SSL_Key:
  Seconds_Behind_Master: 28805  #mysql开始追赶延迟
  Master_SSL_Verify_Server_Cert: No
  Last_IO_Errno: 0
  Last_IO_Error:
  Last_SQL_Errno: 0
  Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
  Master_Server_Id: 3
  1 row in set (7.40 sec)
  mysql主从同步恢复正常!问题解决
  问题总结:
  经查询资料此现象可能是mysql binlog bug ,当一个binlog即将用完时,如果此时mysql开启一个新的事务,现在binlog不能够存放事务产生的日志就可能出现此问题。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-606438-1-1.html 上篇帖子: MySQL + MySQL Front 安装使用 下篇帖子: 关键的十个MySQL性能优化技巧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表