深入MySQL--深入解析binlog_error_action参数

一、问题描述

8月14日收到报警,有一台MySQL主从同步停止了,遂登录slave通过show slave status\G查看错误原因,Last_IO_Error显示如下:

  1. 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
复制代码


二、排查过程

slave IO线程报告1236错误应该都不陌生,根据经验来说,以往出现1236的原因大多是因为从库还没有同步master的binlog时,master的binlog就被purge了或者说slave上GTID_PURGED比主库多等等。

但是从这次的错误来看是主库的binlog并没有写入完整,应该是被截断了,另外比较友好的提示是让我们检查主库的磁盘空间。

那么根据错误提示,我们登录主库查看磁盘空间,果然binlog所在的目录磁盘空间利用率已经达到100%了。查看主库错误日志显示如下:

1599051991020.jpg

到这里已经基本可以确定就是我们猜测的原因了,主库空间不足导致binlog被截断。

三、处理过程

3.1 恢复mysql登录

此时通过mysql客户端登录到MySQL已经处于hang住的状态了,于是我找到对应实例所在的binlog目录,手动删除了一些已经应用过的binlog才可以正常登录到MySQL。

查看参数设置:

  1. root@localhost 21:54:  [(none)]> show global variables like '%binlog_error_action%';
  2. +---------------------+--------------+
  3. | Variable_name       | Value        |
  4. +---------------------+--------------+
  5. | binlog_error_action | IGNORE_ERROR |
  6. +---------------------+--------------+
  7. 1 row in set (0.00 sec)
复制代码


游客,如果您要查看本帖隐藏内容请回复
标签: 暂无标签
lee

写了 75 篇文章,拥有财富 290,被 8 人关注

转播转播 分享分享 分享聚知识
回复

使用道具

成为第一个吐槽的人

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈