一 前言

MySQL 的主从复制作为一项高可用特性,用于将主库的数据同步到从库,在维护主从复制数据库集群的时候,作为专职的MySQL DBA,笔者相信大多数人都会遇到“Got fatal error 1236 from master when reading data from binary log” 这类的报错/报警。本文整理了常见的几种 error 1236 报错,并给出相应的解决方法,有所不足之处,当然也希望各位读者朋友指正。

二 常见的error 1236 报错

2.1 logevent超过maxallowedpacket 大小

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.006730' at 290066246, the last event was read from '/u01/my3309/log/mysql-bin.006730

原因

此类报错和max_allowed_packet相关。首先max_allowed_packet控制着主从复制过程中,一个语句产生的二进制binlog event大小,它的值必须是1024的倍数 。出现此类错误的常见原因是

1 该参数在主备库的配置大小不一样,主库的配置值大于从库的配置值。 从主库传递到备库的binlog event大小超过了主库或者备库的max_allowed_packet大小。

2 主库有大量数据写入时,比如在主库上执行 laod data,insert into .... select 语句,产生大事务。当主库向从库传递一个比从库的max_allowed_packet 大的packet ,从库接收该packet失败,并报 “log event entry exceeded max_allowed_packet“。

如何解决

需要确保主备配置一样,然后尝试调大该参数的值。

set global maxallowedpacket =110241024*1024; stop slave; start slave;

另外,5.6 版本中的 slave_max_allowed_packet_size 参数控制slave 可以接收的最大的packet 大小,该值通常大于而且可以覆盖 max_allowed_packet 的配置, 进而减少由于上面的问题导致主从复制中断。

2.2 slave 在主库找不到binlog文件

Got fatal error 1236 from master when reading data from binary log:

原因

该错误发生在从库的io进程从主库拉取日志时,发现主库的mysql_bin.index文件中第一个文件不存在。出现此类报错可能是由于你的slave 由于某种原因停止了好长一段是时间,当你重启slave 复制的时候,在主库上找不到相应的binlog ,会报此类错误。或者是由于某些设置主库上的binlog被删除了,导致从库获取不到对应的binglog file。

如何解决

1 为了避免数据丢失,需要重新搭建slave 。

2 注意主库binlog的清理策略,选择基于时间过期的删除方式还是基于空间利用率的删除方式。 不要使用rm -fr 命令删除binlog file,这样不会同步修改mysql_bin.index 记录的binlog 条目。在删除binlog的时候确保主库保留了从库 show slave status 的Relay_Master_Log_File对应的binlog file。

2.3 主库空间问题,日志被截断

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 start event position from 'mysql-bin.006730' at 290066434, the last event was read from '/u01/my3309/log/mysql-bin.006730

原因

该错误和主库的空间问题和syncbinlog配置有关,当主库 syncbinlog=N不等于1且磁盘空间满时,MySQL每写N次binary log,系统才会同步到磁盘,但是由于存储日志的磁盘空间满而导致MySQL 没有将日志完全写入磁盘,binlog event被截断。slave 读取该binlog file时就会报错"binlog truncated in the middle of event;" 当sync_binlog 的默认值是0,像操作系统刷其他文件的机制一样,MySQL不会同步到磁盘中去而是依赖操作系统来刷新binary log。 当sync_binlog =N (N>0) ,MySQL 在每写 N次 二进制日志binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去。

如何解决

在从库重新指向到主库下一个可用的binlog file 并且从binlog file初始化的位置开始

stop slave; change master to masterlogfile='mysql-bin.006731', masterlogpos=4; start slave;

2.4 主库异常断电,从库读取错误的position

120611 20:39:38 [ERROR] Error reading packet from server: Client requested master to start replication from impossible position ( server_errno=1236)

120611 20:39:38 [ERROR] Slave I/O: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position', Error_code: 1236

120611 20:39:38 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.000143', position 664526789

原因

该问题也是和sync_binlog=N不等于1有关,多出现在主机异常crash ,比如磁盘损坏,raid 卡损坏,或者主机异常掉电导致binlog 未及时同步到磁盘。从库读取了主库binlog file中的不存在的binlog position ,一般比binlogfile 的end position 的值还要大。

如何解决

1 在从库重新指向到主库下一个可用的binlog file 并且从binlog file初始化的位置开始

stop slave;

change master to master_log_file='mysql-bin.000144', master_log_pos=4;

start slave;

2 主备库设置 sync_binlog=1,但是设置为1的时候,会带来性能下降。

三 小结

其实还有GTID 1236的,这个后续应该会写一篇文章。本质上是主库的binlog 已经被删除了,slave获取不到指定的log event。读者朋友如果有其他案例,也欢迎留言分享。

推荐阅读

1 https://www.percona.com/blog/2014/05/14/maxallowedpacket-and-binary-log-corruption-in-mysql/

2 MySQL Replication Fatal Error 1236

http://blog.itpub.net/22664653/viewspace-732503/


本公众号长期关注于数据库技术以及性能优化,故障案例分析,数据库运维技术知识分享,个人成长和自我管理等主题,欢迎扫码关注。

nginx502错误原因解决方法_Got fatal error 1236原因和解决方法相关推荐

  1. 【MySQL】Got fatal error 1236原因和解决方法

    一 前言   MySQL 的主从复制作为一项高可用特性,用于将主库的数据同步到从库,在维护主从复制数据库集群的时候,作为专职的MySQL DBA,笔者相信大多数人都会遇到"Got fatal ...

  2. MySQL主从失败 错误Got fatal error 1236解决方法

    由于mysql主服务器异外重启, 导致slave maysql server报错, 错误如下: 查看从伺服器错误: mysql> show slave status\G; Master_Log_ ...

  3. 完美解决VS2003.Net fatal error LNK1201: 写入程序数据库“.pdb”时出错 - 细雨淅淅

    注意:这里说的方案不适用于coco2d-x 3.0 STL 工程,把调试信息数据库设成非"C7兼容"的情绪. http://www.tuicool.com/articles/uYZ ...

  4. MySQL主从失败 错误Got fatal error 1236

    刚洗完澡准备睡觉,同事给我打电话说团购数据库主从不同步了,尼玛,咋就这么苦逼呢,好吧,速度开电脑拨×××解决. 1.登录从库查看主从同步状态,确实是否不同步 1 2 3 4 5 6 7 8 9 10 ...

  5. mysql 5.6 主主复制_Percona MySQL 5.6 主主复制环境报错Got fatal error 1236 from master.....

    Percona MySQL 5.6 主主复制环境报错: mysql> show slave status\G *************************** 1. row ******* ...

  6. Got fatal error 1236 from master when reading data from binary log:

    MySQL主从配置的时候slave从服务器的slave查看中出现: Got fatal error 1236 from master when reading data from binary log ...

  7. mysql 错误码1236_【MySql】MySQL Replication Fatal Error 1236

    环境:双M-M架构,其中一台B因为磁盘损坏,服务器异常重启.重启之后B上面的数据库正常运行,当时A 库报如下错误: Last_IO_Error: Got fatal error 1236 from m ...

  8. VC连接mysql数据库错误:libmysql.lib : fatal error LNK1113: invalid machine 解决方法

    VC连接MySQL的配置过程在上一篇博文中,不过当你设置好,以为万事大吉的时候,运行却出现这个错误:libmysql.lib : fatal error LNK1113: invalid machin ...

  9. 问题 | 解决Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll 问题(pycharm+Tensorflow)

    博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 之前安装的TensorFlow是1 ...

  10. 解决Ubuntu16.04 fatal error: json/json.h: No such file or directory

    参考博客 错误产生 安装json-c库之后,根据GitHub上面的readme文件链接到json-c库时出现以下错误: SDMBNJson.h:9:23: fatal error: json/json ...

最新文章

  1. 排序_简单排序_选择排序
  2. java定焦点_Android 开发 Camera1_如何使用对焦功能
  3. js处理json和字符串示例
  4. 中石油训练赛 - Racing Gems(最长不下降子序列)
  5. 拥有成本分析:Oracle WebLogic Server与JBoss
  6. Linux下如何设置权限让用户只删除自己的文件(粘滞位)
  7. hdu 1514 记忆化搜索
  8. Nginx之代理和负载均衡
  9. Scala学习之 java.net.BindException: 无法指定被请求的地址: Service 'sparkDriver' failed
  10. 复变函数在计算机科学的应用,[2018年最新整理]MATLAB在复变函数与积分变换的应用.doc...
  11. WEB应用组合——LAMP软件源码编译安装
  12. 为知笔记(PC端) 康奈尔模板各栏间距调整
  13. CCMP之播放列表(高仿千千静听)
  14. Vue2 轮播图组件 slide组件
  15. WIN7双系统卸载与重装Ubuntu
  16. set feedback
  17. 计算8+88+888+…前10项之和编写应用程序,使用for循环语句计算8+88+888+…前10项之和。(java)
  18. Mycat(3):mycat的安装
  19. 【CSS】css3绘制各种形状图形三角形,菱形,五角星,椭圆等
  20. 小象学院 零基础Python入门 案例三 BMR计算器v_1.0+v_2.0

热门文章

  1. P5018 对称二叉树
  2. Linux下编译安装redis,详细教程
  3. 记字符编码与转义符的纠缠
  4. sql server 2000 生成数据库的SQL脚本
  5. 格式化输出函数(2): FormatDateTime
  6. Dubbo负载均衡算法初步解析
  7. 字节码指令之操作数栈管理指令
  8. Spring源码之事务(一)
  9. 关于thymeleaf 遍历 List<Map<String,Object>> 类型数据
  10. Poj(1274),二分图匹配