Linux下MySQL主从同步故障:"Slave_SQL_Running:No"的解决方法

时间:2023-03-09 07:48:56
Linux下MySQL主从同步故障:"Slave_SQL_Running:No"的解决方法

故障现象:

进入slave服务器,运行:

mysql> show slave status\G

         .......

             Relay_Log_File: localhost-relay-bin.000001

             Relay_Log_Pos: 151

           Relay_Master_Log_File: localhost-bin.000002

             Slave_IO_Running: Yes

             Slave_SQL_Running: No

             Replicate_Do_DB: 

             Replicate_Ignore_DB: 

         ......

解决办法一、

Slave_SQL_Running: No

1.程序可能在slave上进行了写操作

2.也可能是slave机器重起后,事务回滚造成的.

一般是事务回滚造成的:

解决办法一:

mysql> stop slave ;

mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;    #客户端运行,用来跳过几个事件,只有当同步进程出现错误而停止的时候才可以执行。

mysql> start slave ;

解决办法二:

首先停掉Slave服务:stop slave ;

到主服务器上查看主机状态:

记录File和Position对应的值

进入master

mysql> show master status;

+----------------------+----------+--------------+------------------+

| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+----------------------+----------+--------------+------------------+

| localhost-bin.000001 | 151 |              |                  | 

+----------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

然后到slave服务器上执行手动同步:

mysql> change master to 

> master_host='master_ip',

> master_user='user', 

> master_password='password', 

> master_port=3306, 

> master_log_file='localhost-bin.000001', 

> master_log_pos=151,master_auto_position=0;

1 row in set (0.00 sec)

mysql> start slave ;

1 row in set (0.00 sec)

此时再查看从机:

mysql> show slave status \G

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.1.103

                  Master_User: cfwxa

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: master-bin.000001

          Read_Master_Log_Pos: 151

               Relay_Log_File: localhost-relay-bin.000002

                Relay_Log_Pos: 363

        Relay_Master_Log_File: master-bin.000001

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes


              Replicate_Do_DB: 

          Replicate_Ignore_DB: 

           Replicate_Do_Table: 

       Replicate_Ignore_Table: 

      Replicate_Wild_Do_Table: 

  Replicate_Wild_Ignore_Table: 

                   Last_Errno: 0

                   Last_Error: 

                 Skip_Counter: 0

          Exec_Master_Log_Pos: 151

              Relay_Log_Space: 571

              Until_Condition: None

               Until_Log_File: 

                Until_Log_Pos: 0

           Master_SSL_Allowed: No

           Master_SSL_CA_File: 

           Master_SSL_CA_Path: 

              Master_SSL_Cert: 

            Master_SSL_Cipher: 

               Master_SSL_Key: 

Seconds_Behind_Master: 0    #表示已同步


手动同步需要停止master的写操作!

Linux下MySQL主从同步故障:"Slave_SQL_Running:No"的解决方法