当前位置: 主页 > 运维经验 > 运维故障 >

MySQL主从同步错误解决3例(max_allowed_packet)

时间:2013-05-20 10:32来源:未知 作者:admin 点击:
总结 1)数据库服务器master和slave的max_allowed_packet这个值要保持一致(其他的值也会有此类问题) 2)在修改master服务器max_allowed_packet这个值的时候一定要和slave一起修改 3)运维修改任
欢迎大家分享自己的文档,请点击查阅:分享方法,Linux系统运维
如果你喜欢这文章,可以点击文章结尾处百度分享,分享到你的各种社区收藏,或推荐给朋友……


老男孩老师教学与培训核心思想:重思路,重方法,重实践,重习惯,重总结
版权声明
本文档只限与老男孩内部培训交流和批改作业使用!
个人信息
############################################################################### 
#本文内容来自《老男孩linux运维实战培训》学生--伞亚朋
#如有转载,请务必保留本文链接及版权信息。
#欢迎广大运维同仁一起交流linux/unix网站运维技术!
#QQ:595627025 
#E-mail:linuxsan@163.com 
#51CTO博客 stater.blog.51cto.com
====================================================================== 
老男孩linux运维实战培训中心 
咨询  QQ: 1986787350 70271111 357851641
咨询电话:18911718229 
网站地址: http://www.etiantian.org 
老男孩博客: http://oldboy.blog.51cto.com
老男孩的QQ: 31333741 49000448 
格式约定:
灰色底黑色加粗:为输入的系统命令部分
灰色底:输入的系统命令返回的信息或者配置文件文本信息
黄色底:技巧或需要注意的注释信息
粉色底:需特别注意的地方
蓝色字体:内容注释
lsw
总结
1)数据库服务器master和slave的max_allowed_packet这个值要保持一致(其他的值也会有此类问题)
2)在修改master服务器max_allowed_packet这个值的时候一定要和slave一起修改
3)运维修改任何配置都要做相应的记录,以便查找原因
4)运维之间一定要注重沟通


问题一:
1、网站用户系统上线后,因为运营需要统计注册用户数量,申请一个查询操作的帐号,登陆用户系统数据库的一个从库发现,查看主从同步状态,发现错误1153的错误提示:
mysql> show slave status\G
*************************** 1. row ***************************      
                   ···省略···
             Slave_IO_Running: No
            Slave_SQL_Running: Yes

                   ···省略···                
                Last_IO_Errno: 1153
                Last_IO_Error: Got a packet bigger than 'max_allowed_packet' bytes  #从报错的字面上理解是因为从库的max_allowed_packet这个值设置的有点小。

                   ···省略···
1 row in set (0.00 sec)

2、查看slave的“max_allowed_packet
mysql> show VARIABLES like '%max_allowed_packet%';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 33554432 | #这里设置32M
+--------------------+----------+
1 row in set (0.00 sec)

#这里设置的并不是太小,但是出现了这个提示,在网上找了相关提示“是由于slave上的max_allowed_packet参数值比master上的max_allowed_packet值小”
#博客地址:http://blog.sina.com.cn/s/blog_53b45c4d01010dl5.html

3、查看master的“max_allowed_packet
mysql> show variables like '%max_allowed_packet%';
+--------------------+-----------+
| Variable_name      | Value     |
+--------------------+-----------+
| max_allowed_packet | 524288000 | #这里设置的500M!
+--------------------+-----------+
1 row in set (0.00 sec)

4、修改slave的“max_allowed_packet”为500M
1)配置文件修改:(重启MySQL生效)
[mysqld]
max_allowed_packet = 500M
命令修改:(即时生效)
正确写法:
mysql> Set global max_allowed_packet = 500*1024*1024;
mysql> Set global max_allowed_packet = 524288000;
错误写法:
mysql> Set global max_allowed_packet = 500M;
注意:
(1)直接修改配置文件需要重启MySQL
(2)我的从库现在只作备份服务器使用,所以我直接修改的配置文件
2)mysql> show VARIABLES like '%max_allowed_packet%';
+--------------------+-----------+
| Variable_name      | Value     |
+--------------------+-----------+
| max_allowed_packet | 524288000 | ##已经修改成功了
+--------------------+-----------+
1 row in set (0.00 sec)

5、查看主从同步状态
mysql> show slave status\G
*************************** 1. row **************************
                 ···省略···
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

                ···省略···
                Last_IO_Errno: 0
                Last_IO_Error: 

                ···省略···
1 row in set (0.00 sec)


问题二:
1、错误提示
1)错误日志
130517 11:02:47 [ERROR] Slave I/O: 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', Error_code: 1236
130517 11:02:47 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.000004', position 364825200

2)show slave status 提示
mysql> show slave status\G
*************************** 1. row ***************************
                 ···省略···
             Slave_IO_Running: No
            Slave_SQL_Running: Yes

                ···省略···
                Last_IO_Errno: 1236
                Last_IO_Error: 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'

                ···省略···
1 row in set (0.00 sec)

3)问题原因
1、主从服务器”max_allowed_packet” 不一致造成
2、主服务器生成的binlog时候的max_allowed_packet,比当前的主从服务器”max_allowed_packet”的值大(多次更改数据库这个值导致)

4)解决办法
提示:这个问题主要是主从的设置不一致造成的,第二种情况不少见,需要查看当前主库设置,如果尽可能设置大些,如果设置的小,还会出现这个错误。
主库:
set global max_allowed_packet=1024*1024*1024               1024*1024*1024 这个大小是1G=1024M
从库:
Stop slave;
set global max_allowed_packet=1024*1024*1024
Start slave;


问题三
1、错误提示
mysql> show slave status\G
*************************** 1. row ***************************
                        ···省略···

             Slave_IO_Running: Yes
            Slave_SQL_Running: No
                       ···省略···
                   Last_Errno: 3
                   Last_Error: Error 'Error writing file '/tmp/MLyTJyxm' (Errcode: 28)' on query. Default database: 'bcc'. Query: 'UPDATE `bcc_submit_logs` SET `compile_status`='1', `status`='1', `memory`='-963422952', `run_time`='2387', `code_length`='493', `output`='请输入你想走几条路(1<=t<=100):1446256456请输入你当前的位置(1<=a<=N):1446256452请输入你想到达的位置(1<=b<=N):1446256448请输入你想走几条路(1<=t<=100):1446256456请输入你当前的位置(1<=a<=N):1446256452请输入你想到达的位置(1<=b<=N):1446256448请输入你想走几条路(1<=t<=100):1446256456请输入你当前的位置(1<=a<=N):1446256452请输入你想到达的位置(1<=b<=N):1446256448请输入你想走几条路(1<=t<=100):1446256456请输入你当前的位置(1<=a<=N):1446256452请输入你想到达的位置(1<=b<=N):1446256448请输入你想走几条路(1<=t<=100):1446256456请输入你当前的位置(1<=a<=N):1446256452请输入你想到达的位置(1<=b<=N):1446256448请输入你想走几条路(1<=t<=100):1446256456请输
               Last_SQL_Errno: 3
                    ···省略···
               Last_SQL_Error: Error 'Error writing file '/tmp/MLyTJyxm' (Errcode: 28)' on query. Default database: 'bcc'. Query: 'UPDATE `bcc_submit_logs` SET `compile_status`='1', `status`='1', `memory`='-963422952', `run_time`='2387', `code_length`='493', `output`='请输入你想走几条路(1<=t<=100):1446256456请输入你当前的位置(1<=a<=N):1446256452请输入你想到达的位置(1<=b<=N):1446256448请输入你想走几条路(1<=t<=100):1446256456请输入你当前的位置(1<=a<=N):1446256452请输入你想到达的位置(1<=b<=N):1446256448请输入你想走几条路(1<=t<=100):1446256456请输入你当前的位置(1<=a<=N):1446256452请输入你想到达的位置(1<=b<=N):1446256448请输入你想走几条路(1<=t<=100):1446256456请输入你当前的位置(1<=a<=N):1446256452请输入你想到达的位置(1<=b<=N):1446256448请输入你想走几条路(1<=t<=100):1446256456请输入你当前的位置(1<=a<=N):1446256452请输入你想到达的位置(1<=b<=N):1446256448请输入你想走几条路(1<=t<=100):1446256456请输
1 row in set (0.00 sec)

2、问题原因
1)tmp目录不可写
2)磁盘没有空间
l 磁盘没有物理空间
l 磁盘有物理空间,但是innode满了
























 

转载请注明linux系统运维
http://www.linuxyw.com/linux/yunweiguzhang/20130520/406.html

------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
栏目列表
推荐内容