主从复制,重启机器发现slave_sql_running:no

配置好mysql主从复制后,重启服务器后发现Slave_SQL_Running: No

mysql> show slave status \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.218.128
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-a-bin.000002
          Read_Master_Log_Pos: 1989
               Relay_Log_File: lzk-virtual-machine-relay-bin.000007
                Relay_Log_Pos: 915
        Relay_Master_Log_File: master-a-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: No
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 

直接使用start slave命令依然开启不了
解决办法:
1.关闭slave线程

mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)

2.跳过slave的一个错误

mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
Query OK, 0 rows affected (0.00 sec)

3.重新启动slave

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

输入命令查看slave状态,发现slave已经成功开启

mysql> show slave status \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.218.128
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-a-bin.000002
          Read_Master_Log_Pos: 1989
               Relay_Log_File: lzk-virtual-machine-relay-bin.000009
                Relay_Log_Pos: 323
        Relay_Master_Log_File: master-a-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 

原因分析

由于数据的不同步,在执行主从同步的时候,出现了执行不了的sql,导致从机事务回滚,所以sql的进程就被关闭了。

常见的这个问题的出现方式:

在从机上进行了写操作(非双机热备情况下)。
slave机器重启,事务回滚。
各种原因导致的数据不同步。

sql_slave_skip_counter

sql_slave_skip_counter以event为单位skip,直到skip完第N个event所在的event group才停止。对于事务表,一个event group对应一个事务;对于非事务表,一个event group对应一条SQL语句。一个event group包含多个events。
delete在从库找不到对应行,sql_slave_skip_counter可能省事,但极有可能跳过其他events,导致主从数据不一致。对于1032、1062错误尽量修补数据,让复制进程在从库应用变更。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值