北京SEO

Mysql中max_allowed_packet限制导致主从同步出错

2019/10/10/17:32:43  阅读:1832  来源:谷歌SEO算法  标签: 谷歌CEO

主从同步功能多任用于多台服务器之间数据的一个传输了,在此小编今天主来为各位介绍一篇在max_allowed_packet限制导致主从同步出错问题解决方法.

Mysql主从运行有一段时间了,没有出过什么问题,但最近接着出了两次问题,记录下方便后面排查.

Slave_IO_Running和Slave_SQL_Running均为YES,主从同步出错.

首先还是确认下各服务器状态,查看主库状态正常,binlog position一直在变,进程状态也正常.

  1. mysql>showmasterstatus;
  2. +------------------+-----------+--------------+------------------+
  3. |File|Position|Binlog_Do_DB|Binlog_Ignore_DB|
  4. +------------------+-----------+--------------+------------------+
  5. |mysql-bin.000364|232554068|||
  6. +------------------+-----------+--------------+------------------+
  7. --phpfensi.com
  8. mysql>showprocesslist;
  9. +-------------+----------+-----------------------------------------------------------------------------+
  10. |Command|Time|State|
  11. +-------------+----------+-----------------------------------------------------------------------------+
  12. |Connect|14536445|Slavehasreadallrelaylog;waitingfortheslaveI/Othreadtoupdateit|
  13. |BinlogDump|22459|Masterhassentallbinlogtoslave;waitingforbinlogtobeupdated|
  14. +-------------+----------+-----------------------------------------------------------------------------+

查看重库状态,整体上看重库只是有延迟.

  1. mysql>showslavestatus\G;
  2. Master_Log_File:mysql-bin.000364
  3. Read_Master_Log_Pos:246924389
  4. Relay_Log_File:mysql-relay-bin.3831269
  5. Relay_Log_Pos:244389572
  6. Relay_Master_Log_File:mysql-bin.000363
  7. Slave_IO_Running:Yes
  8. Slave_SQL_Running:Yes
  9. Seconds_Behind_Master:23423
  10. mysql>showprocesslist;
  11. +---------+-------+-----------------------------------------------------------------------------+------------------+
  12. |Command|Time|State|Info|
  13. +---------+-------+-----------------------------------------------------------------------------+------------------+
  14. |Connect|22800|Waitingformastertosendevent|NULL|
  15. |Connect|99|Slavehasreadallrelaylog;waitingfortheslaveI/Othreadtoupdateit|NULL|
  16. +---------+-------+-----------------------------------------------------------------------------+------------------+

但等一段时间查看重库却一直不更新,重启后Seconds_Behind_Master为0,Slave_IO_Running和Slave_SQL_Running状态均为YES,确认了Master_Host、Master_User等参数,也匹配了Master_Server_Id都是正常的,在网上也查到了SQL_SLAVE_SKIP_COUNTER来跳过一步操作,但因为对数据完整性要求比较高,担心产生数据异常而不敢操作,于是到此基本上就没辙了.

等一天还找不到就打算重做了,但重做也不是办法,总得找到问题,数据比较多也不可能每次去重做,之前查看过Binlog没有明显发现,于是还是得再去查看下Binlog看能不能发现什么?

  1. mysqlbinlogmysql-relay-bin.3831269--start-position=244389572--stop-position=246924461|more
  2. mysqlbinlogmysql-relay-bin.3831269--start-datetime="2014-08-0721:30:00"--stop-datetime="2014-08-0721:35:00"--base64-output=decode-rows-v|more

binlog基于行的复制带上了--base64-output=decode-rows -v参数.

慢慢的还真的发现了点东西,发现有执行很多的删除语句,当通过wc统计时发现竟然有70多万,在通过业务查看是有执行一条SQL,删除表中的所有记录,数据太多,此时查看主从这个表的记录,主库为空,重库记录全在,那可能就是这个原因导致的,该操作可以跳过,于是尝试跳过之:

  1. mysql>slavestop;
  2. mysql>SETGLOBALSQL_SLAVE_SKIP_COUNTER=1;
  3. mysql>slavestart;

跳过后Mysql恢复正常,最后手动清空重库中该表的数据,至于为什么这个大的删除导致重库停止,还有待深究.

max_allowed_packet限制导致主从同步出错

产生的原因也是执行了一个较大的更新,往数据库中更新几十兆的数据,可见更新的不合理,导致主从同步出错,查看重库状态显示.

  1. Last_IO_Error:Gotfatalerror1236frommasterwhenreadingdatafrombinarylog:
  2. 'logevententryexceededmax_allowed_packet;Increasemax_allowed_packetonmaster'

有明显的错误描述好查很多,描述上说增大主库的max_allowed_packet.

max_allowed_packet

mysql 服务是通过网络包来传输数据的(通信信息包是指发送至MySQL服务器的单个SQL语句或发送至客户端的单一行),mysql协议能够识别的数据包的大小是由max_allowed_packet控制的。当MySQL客户端或mysqld服务器收到大于max_allowed_packet字节的信息包时,将发出“log event entry exceeded max_allowed_packet;”错误,并关闭连接。就像此次主从复制遇到的,IO 进程从主库获取日志,但是单个日志中的sql 大小超过了max_allowed_packet的限制,于是报错,IO thread 进程停止,sql thread 显示为yes,对于客户端,如果通信信息包过大,在执行查询期间,可能会遇到“丢失与MySQL服务器的连接”错误.

停止重库,主从都调整下,然后启动重库即可.

  1. stopslave;
  2. setglobalmax_allowed_packet=1035543552;
  3. startslave;

广告内容

Mysql中max_allowed_packet限制导致主从同步出错 Mysql中max_allowed_packet限制导致主从同步出错 Mysql中max_allowed_packet限制导致主从同步出错

相关阅读

热门评论

SEO研究中心 SEO研究中心

SEO研究中心提供免费SEO公开课

总篇数170

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法