MySQL查看主从同步状态的方法

  • 1
  • 30,642 views
  • A+
2023云数据库优惠活动

阿里云:2核4G服务器6M带宽68元/年、2核4G服务器188元一年、4核8G5M 1000元、8核16G5M......

腾讯云:2核4G服务器8M带宽70元一年,更多1c2g/2c4g/2c8g/4c8g/8c16g/16c32g...

MySQL如何查看主从复制同步状态?show slave status\G 会显示主从同步状态,数据库吧分享:

MySQL查看主从同步状态

进入mysql的命令行状态,执行show slave status\G命令即可,如下:

mysql> show slave status\G

如何查看和判断主从同步状态?主要看 Slave_IO_Running和Slave_SQL_Running两个线程的状态,Yes表示正常,No表示异常。正常状态为:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
  • Slave_IO线程:负责把主库的bin日志(Master_Log)内容,抄写到从库的中继日志上(Relay_Log)。Slave_IO线程比较简单,一般不容易出错,如果Slave_IO_Running显示为No,多为网络连接不上,权限不够等环境问题;
  • Slave_SQL线程:负责把中继日志上的语句在从库上执行一遍,相对于Slave_IO,Slave_SQL线程是比较容易出错的
  • 示例:

    1. 手动在从库中插入一条数据,造成主从不一致,此时两个线程的状态依旧是正常的;
    2. 然后在主库也插入一条同样的数据,通知从库做相同操作,从库会出现主键重复的错误,这时候Slave_SQL_Running的状态会变为No,而Last_SQL_Error和Last_SQL_Error_Timestamp会记录错误的原因和发生时间;
    3. Slave_SQL线程会停止后续的SQL语句执行,因为它意识到往后执行会导致错误修复的难度增加;
    4. 但Slave_IO线程会继续抄log的工作,所以中继log依然是最新的;
    5. 这时候Master_Log_File: mysql-bin.000145和Relay_Master_Log_File: mysql-bin.000144之间就产生了偏差。

    当错误修复后,只需用stop slave和start slave重启下同步,Slave_SQL线程会重新的尝试工作,如果没有问题,那么Slave_SQL的状态会变回Yes(但此时主从并没有完全同步,需要一点时间)。

    如何判断主从完全同步呢?

    首先Master_Log_File和Relay_Master_Log_File所指向的文件必须一致;
    其次Relay_Log_Pos和Exec_Master_Log_Pos的位置也要一致才行;
    此时,Slave_SQL_Running_State:显示为wait 意思是中继日志的sql语句已经全部执行完毕,我歇菜了。

    2023腾讯云服务器超便宜,这个价格太可以了,抓紧上车!

    注意:以上特价轻量服务器限制条件为“产品首单特惠”,如果你的腾讯云账号已经是老用户,建议重新注册一个腾讯云账号,如果你是新用户符合条件,那么无脑入,这个CPU内存带宽配置,价格确实便宜,值得买!

    注意:购买阿里云数据库,先领取阿里云2000元代金券,符合条件的订单可以使用代金券抵扣。

    阿里云代金券

    发表评论

    :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

    目前评论:1   其中:访客  1   博主  0

      • 等待书写 0

        非常棒