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

  • A+
所属分类:MySQL
阿里云代金券

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

MySQL查看主从同步状态

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

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

  • 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语句已经全部执行完毕,我歇菜了。

    阿里云数据库优惠

    发表评论

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