Slave_IO_Running和slave_sql_running异常处理
2015-09-02 10:54
274 查看
配置MySQL主从服务时:
故障现象:
mysql> show slave status\G
.......
Relay_Log_File: localhost-relay-bin.000535
Relay_Log_Pos: 21795072
Relay_Master_Log_File: localhost-bin.000094
Slave_IO_Running: Yes
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
......
mysql replication 中slave机器上有两个关键的进程,死一个都不行,一个是Slave_IO_Running,一个是slave_sql_running,一个负责与主机的io通信,一个负责自己的slave mysql进程
下面写一下,这两个的状态要是有no或者connecting了,怎么恢复
如果是Slave_IO_Running 为connecting,只要是三个原因:
1、网络不通 解决方法:在slave服务器上Telnet master_ip 3306 或者mysql -uusername -ppassword -hmasterip 试试能否链接上
2、密码不对 查看密码是否正确
3、pos值不对 查看主从上的pos值是否一致
如果是Slave_IO_Running为NO,个人认为有三种情况,一个是网络有问题,连接不上(同上),第二个是有可能my.cnf有问题,配置文件怎么写就不说了,网上太多了,最后一个是授权的问题,replication slave和file权限是必须的。
一旦Slave_IO_Running为no了先看err日志,看看报什么错,很可能是网络,也有可能是包太大收不了,这个时候主备上改max_allowed_packet这个参数。
如果是slave_sql_running no了,那么也有两种可能,
1.程序可能在slave上进行了写操作
2.也可能是slave机器重启后,事务回滚造成的,这也是mysql的一种自我保护的措施,像关键时候只读一样。一般是事务回滚造成的:
解决办法一:
mysql> stop slave;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave;
解决办法二、首先停掉Slave服务:slave stop
到主服务器上查看主机状态:
记录File和Position对应的值进入mastermysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 3362 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)然后到slave服务器上执行手动同步:
mysql> stop slave;
mysql>change master to master_host='192.168.1.201',master_user='mysync',master_password='q123456',
master_log_file='mysql-bin.000001',master_log_pos=3362;
mysql> start slave;
即可!
故障现象:
mysql> show slave status\G
.......
Relay_Log_File: localhost-relay-bin.000535
Relay_Log_Pos: 21795072
Relay_Master_Log_File: localhost-bin.000094
Slave_IO_Running: Yes
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
......
mysql replication 中slave机器上有两个关键的进程,死一个都不行,一个是Slave_IO_Running,一个是slave_sql_running,一个负责与主机的io通信,一个负责自己的slave mysql进程
下面写一下,这两个的状态要是有no或者connecting了,怎么恢复
如果是Slave_IO_Running 为connecting,只要是三个原因:
1、网络不通 解决方法:在slave服务器上Telnet master_ip 3306 或者mysql -uusername -ppassword -hmasterip 试试能否链接上
2、密码不对 查看密码是否正确
3、pos值不对 查看主从上的pos值是否一致
如果是Slave_IO_Running为NO,个人认为有三种情况,一个是网络有问题,连接不上(同上),第二个是有可能my.cnf有问题,配置文件怎么写就不说了,网上太多了,最后一个是授权的问题,replication slave和file权限是必须的。
一旦Slave_IO_Running为no了先看err日志,看看报什么错,很可能是网络,也有可能是包太大收不了,这个时候主备上改max_allowed_packet这个参数。
如果是slave_sql_running no了,那么也有两种可能,
1.程序可能在slave上进行了写操作
2.也可能是slave机器重启后,事务回滚造成的,这也是mysql的一种自我保护的措施,像关键时候只读一样。一般是事务回滚造成的:
解决办法一:
mysql> stop slave;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave;
解决办法二、首先停掉Slave服务:slave stop
到主服务器上查看主机状态:
记录File和Position对应的值进入mastermysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 3362 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)然后到slave服务器上执行手动同步:
mysql> stop slave;
mysql>change master to master_host='192.168.1.201',master_user='mysync',master_password='q123456',
master_log_file='mysql-bin.000001',master_log_pos=3362;
mysql> start slave;
即可!
相关文章推荐
- 深入mysql主从复制延迟问题的详解
- MySQL中主从复制重复键问题修复方法
- mysql主从同步复制错误解决一例
- MySQL主从复制配置心跳功能介绍
- MySQL主从复制的原理及配置方法(比较详细)
- Mysql主从复制(master-slave)实际操作案例
- MySQL数据库InnoDB引擎主从复制同步经验总结
- Redis教程(九):主从复制配置实例
- Redis主从复制问题和扩容问题的解决思路
- MongoDB入门教程之主从复制配置详解
- MySQL5.5 数据库主从复制
- MySQL数据库InnoDB引擎主从复制同步经验总结
- 转:mongodb的安装及主从复制
- MySQL服务器的主从复制过程简析
- Mysql 主从复制,读写分离配置
- MySQL主从复制配置
- window下mysql主从复制设置
- MYSQL 主从复制(Replication)
- MYSQL 主从复制(Replication)
- show slave status 参数详解