收藏本页 | 设为主页 | RSS
LOGO

我就上乐乐吧

大家都知道,MySQL主从复制中Slave机器上有两个关键的进程:

您当前的位置:首页 » 技术杂萃
全站公告
重要提示!

本站收集各类美图,以无LOGO原汁原味图为主!欢迎大家交流。
怕失联,请认准如下地址:
微博:传送门
土豆:传送门
电报:传送门
微信:superimagelove
花瓣:传送门
Q群1:231151757
Q群2:583138281
文件解压密码:593668.com
热心赞助

站内搜索
 
相关文章
热门文章
热搜词组
文章归档
友情链接
Slave_IO_Running,Slave_SQL_Running出问题的解决方法

发布日期:2020-03-27  关键词: Docker Tomcat

大家都知道,MySQL主从复制中Slave机器上有两个关键的进程:

Slave_IO_RunNing
Slave_Sql_Running

两个进程,前者负责与主机的io通信,后者负责自己的slave mysql进程,死那一个都不行。

如果是Slave_IO_Running状态变成no,有三种可能:

1)网络真有问题,连接不上主,
2)配置文件my.cnf有问题【主要是max_allowed_packet参数】,导致无法连接主。
3)复制账号连接权限问题,要给予replication slave和file权限。

一旦Slave_IO_Running状态为no了就要先去看下错误日志,根据相应报错来具体分析问题,大体原因如上述。

如果是Slave_Sql_Running状态为no了,那么也有三种可能:

1)是Slave机器上这个表有其它人在写操作,导致锁表,无法完成执行SQL;此情况,就必须去排查写Slave的程序了。
2)Slave进程重启,事务回滚造成的,这也是MySQl的一种自我保护的措施,像系统出错时候表状态变成只读。
3)Slave执行SQL出错,有可能是违反了唯一性约束【比较多】,把重复的主键记录删除。

Slave_Sql_Running出错的情况下,就需要来根据上述情况调整后,再执行如下程序进行处理。

Stop Slave;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start Slave

这样就可以了,这个全局变量赋值为N的意思是:如果出现错误,那么跳过几步。

这样调整后,再使用如下命令查看下:
Show Slave Status\G

命令结果如下例所示即可以了。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

一般情况下,修正好错误之后,Slave服务器就会在几分钟内把堆积的log处理完了【也有可能需要更多时间,看具体情况】,反正如果一直不报错,那么主从又会同步了。
猜您喜欢:
Q群: 231151757微信:superimagelove 官网:www.593668.com