MySQL同步问题

文章讨论了MySQL主从同步中的两种复制模式,特别是半同步复制,它要求从库确认收到binlog但不要求执行。当Slave_IO_Running显示为No或Connecting时,通常与网络连接、日志文件或位置不匹配有关。而Slave_SQL_Running为No可能是由于事务回滚。解决这些问题需要调整配置,如停止和重新启动复制,或设置SQL_SLAVE_SKIP_COUNTER来跳过错误。
摘要由CSDN通过智能技术生成

    MySQL的同步,分为异步copy跟半同步copy。半同步copy,则是需要slave确认接收到了binlog。因为需要等待slave的确认,所以半同步copy对主MySQL来说会慢一些,但是保证了数据到达slave节点,只是还不需要slave执行完这个binlog。当同步出现问题时,查slave状态会出现Slave_IO_Running或Slave_SQL_Running为No。

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 175.11.58.54
                  Master_User: rpluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 121875594
               Relay_Log_File: saoss2-relay-bin.000002
                Relay_Log_Pos: 17160
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: No
            Slave_SQL_Running: No
              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: 121875594
              Relay_Log_Space: 17368
              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_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 2
                  Master_UUID: ec719be8-d425-11ed-9fe7-44a1913ae60e
             Master_Info_File: /opt/mysql/data/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
1 row in set (0.00 sec)
mysql> show master status\G
*************************** 1. row ***************************
             File: mysql-bin.000007   //自己节点的
         Position: 63054
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

如果是Slave_IO_Running:no,肯定是因为log文件或者pos位置跟主服务器不对应导致的;
解决办法:
修改从服务器与主服务器一致即可,每次主服务器的sql操作都会影响pos位置,主从服务器的pos同时改变;

需要执行如下操作,其中master_log_file和master_log_pos为175.11.58.54节点上执行show master status\G查到的信息;执行后show slave status查看同步状态

mysql> stop slave; 
mysql> change master to master_host='175.11.58.54',master_user='rpluser',master_password="xxxxxx",master_log_file="mysql-bin.000001",master_log_pos=121858754;
mysql> start slave; 

   报如上错误的场景有 mysql主主同步过程中,会有备机出现异常,机器故障,导致同步失败,机器重启之后,查看mysql同步状态报如下错误:Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from position > file size'”

如果一直是Slave_IO_Running:Connetcting,那么肯定有Last_IO_Errno: 1045,Last_IO_Error: error connecting to master XXX

可能的原因 说明
网络不通查看master和slave是否在统一网络段里面
检查ip指的是master容器内部的ip地址不是宿主机ip地址
端口指的是master容器mysql宝楼的端口
密码不对 指的是master容器内部,mysql创建数据同步的用户的密码
file 指的是文件名是否正确
Position 检查Master的 Position对不对


 如果是Slave_SQL_Running: No, 可能是slave机器重起后,事务回滚造成的.
一般是事务回滚造成的解决办法:
mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave 
    
    
    
   
   
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值