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

二 常见的error 1236 报错
2.1 logevent超过max_allowed_packet 大小

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 max_allowed_packet =1*1024*1024*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 

原因
 该错误和主库的空间问题和sync_binlog配置有关,当主库 sync_binlog=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 master_log_file='mysql-bin.006731', master_log_pos=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: 1236120611 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的时候,会带来性能下降。

【MySQL】Got fatal error 1236原因和解决方法相关推荐

  1. Mysql 数据库锁表的原因和解决方法

    Mysql 数据库锁表的原因和解决方法 参考文章: (1)Mysql 数据库锁表的原因和解决方法 (2)https://www.cnblogs.com/xinruyi/p/11108795.html ...

  2. MySQL CPU 使用率高的原因和解决方法

    MySQL CPU 使用率高的原因和解决方法 参考文章: (1)MySQL CPU 使用率高的原因和解决方法 (2)https://www.cnblogs.com/wyy123/p/9258513.h ...

  3. 编译Qt“NMAKE:fatal error U1077”错误的解决方法

    编译Qt"NMAKE:fatal error U1077"错误的解决方法 分类: 错误与解决方法 2013-03-18 20:17 1775人阅读 评论(0) 收藏 举报 Qtfa ...

  4. MySQL CPU 使用率高的原因和解决方法(来自aliyun官方文档)

    MySQL CPU 使用率高的原因和解决方法 更新时间:2017-03-17 13:25:52   分享: 用户在使用 MySQL 实例时,会遇到 CPU 使用率过高甚至达到 100% 的情况.本文将 ...

  5. 关于MySQL错误 2005 - Unknown MySQL server host ‘localhost‘ (0) 原因及解决方法

    关于MySQL错误 2005 - Unknown MySQL server host 'localhost' (0) 原因及解决方法 参考文章: (1)关于MySQL错误 2005 - Unknown ...

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

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

  7. go mysql 错误_mysql安装失败原因和解决方法

    mysql数据库安装不了了!mysql最后一步安装不上!mysql就是安装不上!是不是很头疼,很伤脑筋,现在大家不用着急了,小编为大家整理了mysql安装失败的原因以及mysql安装失败的解决方法,抓 ...

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

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

  9. mysql hy000 2013_MySQL ERROR 2013 (HY000)错误解决方法

    当通过 TCP/IP 连接 MySQL 远程主机时,出现 ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial ...

最新文章

  1. 笔记-高项案例题-2015年下-整体管理
  2. Class 类文件结构
  3. bzoj3122 [SDOI2013]随机数生成器
  4. Mybatis传入多参问题
  5. 新手学C语言会踩到什么样的坑?
  6. Codeforces Round #143 (Div. 2) C
  7. 行政区域村级划分数据库_最新行政区划代码省市区三级 乡镇街道四级 村五级 数据库(2020年11月版 )...
  8. android系统优化(18)--系统性能优化第5季
  9. 电脑格式化的危害_经常重装系统,对电脑会不会有负面影响?
  10. 自动驾驶 10-4: 为什么是传感器融合 Why Sensor Fusion
  11. excel的VBA编程环境VBE更换错误字体后设置闪退
  12. 多个图片如何批量转成文字版的Word
  13. 去哪儿能找到那种直接翻译好的外文文献去阅读呢?
  14. 简单选择排序(Eternallyc)
  15. Android/IOS/Web跳转第三方QQ指定QQ号的聊天框,实现陌生人聊天
  16. oracle12c配置文档,Oracle12C安装配置文档
  17. 几个常见的 Socket 连接错误及原因[转]
  18. 心蓝12306订票助手-自己动手抢火车票
  19. Python 打地鼠小游戏
  20. iphone UI 界面尺寸

热门文章

  1. 2019全新学习路线图发布
  2. 使用python获取路径问题
  3. C# HasRows 和 Read的区别
  4. 《CCNP ROUTE (642-902 )认证考试指南》一1.2 将考试主题与典型网络工程师的工作关联起来...
  5. 《Objective-c》-(@property和@synsthesize)
  6. 〔转〕Word域的应用和详解5_索引和目录
  7. Silverlight专题(WatermarkedTextBox使用)--摘录 很受用
  8. aix6.1安装oracle 10g总结
  9. ASP.net 自定义服务器控件之 GridViewControl
  10. 使用动态代理,提高工作效率