mysql数据同步出现Slave_IO_Running:No问题的解决⽅
法⼩结
下⾯写⼀下,这两个要是有no了,怎么恢复。。
如果是slave_io_running no了,那么就我个⼈看有三种情况,⼀个是⽹络有问题,连接不上,像有⼀次我⽤虚拟机搭建replication,使⽤了nat的⽹络结构,就是死都连不上,第⼆个是有可能myf有问题,配置⽂件怎么写就不说了,⽹上太多了,最后⼀个是授权的问题,replication slave和file权限是必须的。如果不怕死就all咯。。
⼀旦io为no了先看err⽇志,看看爆什么错,很可能是⽹络,也有可能是包太⼤收不了,这个时候主备上改
max_allowed_packet这个参数。
如果是slave_sql_running no了,那么也有两种可能,⼀种是slave机器上这个表中出现了其他的写操作,就是程序写了,这个是会有问题的,今天我想重现,但是有时候会有问题,有时候就没有问题,现在还不是太明了,后⾯再更新,还有⼀种占绝⼤多数可能的是slave进程重启,事务回滚造成的,这也是mysql的⼀种⾃我保护的措施,像关键时候只读⼀样。
这个时候想恢复的话,只要停掉slave,set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;再开⼀下slave就可以了,这个全局变量赋值为N的意思是:
This statement skips the next N events from the master. This is useful for recovering from replication stops caused by a statement.
This statement is valid only when the slave thread is not running. Otherwise, it produces an error.
呵呵,讲的⽐我清楚。
下午主服务器,由于⼀些原因,导致死机,重启后,发现从服务器的数据没有跟上。
配好MYSQL主从也才前⼏天的事,没多少经验,第⼀次碰上这问题,有点焦急。不过,⾃⼰试了下,还算解决了:)
从服务器上
Master_Log_File: mysqlhxmaster.000007
Read_Master_Log_Pos: 84285377
看⼀下主服务器:mysqlhxmaster.000007 | 84450528 |
已经过后很多了,确实没跟上。
show slave status\G
什么是计算机语言Slave_IO_Running: Yes
Slave_SQL_Running: No
有问题了,Slave_SQL_Running应该是Yes才对。
再往下看,有错误的提⽰:
Last_Errno: 1053
Last_Error: Query partially completed on the master (error on master: 1053) and was aborted. There is a chance that your master is inconsistent at this point. If you are sure that your master is ok, run this query manually on the slave and then restart the slave with SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE; . Query: 'INSERT INTO hx_stat_record ......(⼀句SQL语句)'
这⾥有说明要怎么操作了:)
先stop slave,然后执⾏了⼀下提⽰的语句,再SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
OK了,从服务器也在⼏分钟内把堆积的log处理完了,两边⼜同步了:)
早晨机房意外断电,导致了发现mysql从服务器同步异常。使⽤以前碰到的Slave_SQL_Running为No的解决办法⽆效,仍然⽆法同步。
fopen函数的地址指向什么
查看⼀下状态show slave status
Master_Log_File: mysqlmaster.000079
Read_Master_Log_Pos: 183913228
Relay_Log_File: hx-relay-bin.002934
Relay_Log_Pos: 183913371
Relay_Master_Log_File: mysqlmaster.000079
Slave_IO_Running: No
Slave_SQL_Running: Yes
主服务器show master status\G
File: mysqlmaster.000080
Position: 13818288
Binlog_Do_DB:
Binlog_Ignore_DB: mysql,test
mysql错误⽇志:
100512 9:13:17 [Note] Slave SQL thread initialized, starting replication in log 'mysqlmaster.000079' at position 183913228, relay log './hx-relay-bin.002934' position: 183913371
100512 9:13:17 [Note] Slave I/O thread: connected to master 'replicuser@192.168.1.21:3306', replication started in log
'mysqlmaster.000079' at position 183913228
input函数怎么输入数据100512 9:13:17 [ERROR] Error reading packet from server: Client requested master to start replication from impossible position ( server_errno=1236)
100512 9:13:17 [ERROR] Got fatal error 1236: 'Client requested master to start replication from impossible position' from master when reading data from binary log
100512 9:13:17 [Note] Slave I/O thread exiting, read up to log 'mysqlmaster.000079', position 183913228
这次是Slave_IO_Running为No,从⽇志上来看,服务器读mysqlmaster.000079这个Log的183913228这个位置时发⽣错误,这个位置不存在,于是⽆法同步。
查看⼀下这个Log的最后⼏⾏:
mysql无法连接到服务器/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
snmp协议时运行在
# at 4
#100511 9:35:15 server id 1 end_log_pos 98 Start: binlog v 4, server v 5.0.27-standard-log created 100511 9:35:15
# Warning: this binlog was not closed properly. Most probably mysqld crashed writing it.
尝试从损坏之前的位置开始
SLAVE STOP;
CHANGE MASTER TO MASTER_LOG_FILE='mysqlcncnmaster.000079', MASTER_LOG_POS=183913220;
SLAVE START;
⽆效!
只好从新的⽇志开始
SLAVE STOP;
CHANGE MASTER TO MASTER_LOG_FILE='mysqlcncnmaster.000080', MASTER_LOG_POS=0;
SLAVE START;
此时Slave_IO_Running恢复为Yes,同步进⾏了!观察了会⼉,没有任何出错迹象,问题解决。
vookloop函数怎么匹配两张表另外,出现Slave_IO_Running:NO还有⼀个原因是slave上没有权限读master上的数据。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。