在mysql主从复制的环境中,查看从库复制的情况,要使用

show slave status\G;

由于这个语句会显示出很多信息,这里对这些内容记录一下,做一个详解,下面是一个执行结果展示。


mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event   //Slave IO线程的状态,状态信息和使用show processlist显示的内容一样
Master_Host: xxx.xxx.xxx.xxx            //去同步的主库的ip地址
Master_User: repl                       //同步主库采用的用户名,即主库必须设置该用户名有复制的权限。
Master_Port: 3306                       //主库mysql的端口号
Connect_Retry: 60                       //重新建立主从连接时,如果连接建立失败,间隔多久后重试,默认是60s
Master_Log_File: mysql-bin.001323       //IO线程当前正在读取的主服务器二进制日志文件的名称
Read_Master_Log_Pos: 496175627          //在当前的主服务器二进制日志中,IO线程已经读取的位置
Relay_Log_File: mysql-relay-bin.003993  //SQL线程当前正在读取和执行的中继日志文件的名称
Relay_Log_Pos: 496175773                //在当前的中继日志中,SQL线程已读取和执行的位置
Relay_Master_Log_File: mysql-bin.001323 //由SQL线程执行的包含多数近期事件的主服务器二进制日志文件的名称,简单理解就是SQL线程正在执行的事件在主服务器属于哪个日志文件
Slave_IO_Running: Yes                   //IO线程是否被启动并成功地连接到主服务器上
Slave_SQL_Running: Yes                  //SQL线程是否被启动
Replicate_Do_DB:                        //显示同步哪些数据库,与配置文件统一,如果配置文件没配置,则不显示,表示全都同步
Replicate_Ignore_DB:                    //显示不同步哪些数据库,与配置文件统一,如果没配置,则表示,没有不同步的数据库
Replicate_Do_Table:                     //显示同步哪些表
Replicate_Ignore_Table:                 //显示不同步哪些表
Replicate_Wild_Do_Table:                //与Replicate_Do_Table功能一样,但可以加通配符,解决跨域更新的问题,可在配置文件里配置
Replicate_Wild_Ignore_Table:            //与Replicate_Ignore_Table功能一下,不同步哪些表 ,可加通配符
Last_Errno: 0                           //从库执行碰到的错误代码
Last_Error:                             //从库执行碰到的错误信息
Skip_Counter: 0                         //最近被使用的用于SQL_SLAVE_SKIP_COUNTER的值,表示忽略几个错误
Exec_Master_Log_Pos: 496175627          //从服务器当前正在执行的SQL的事件,在主服务器上的具体位置
Relay_Log_Space: 496175972              //所有原有的中继日志结合起来的总大小
Until_Condition: None                   //在START SLAVE语句的UNTIL子句中指定的值
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No                  //下面ssl相关的都表示,从属服务器使用的参数,主要表示如果从服务器连接主服务器使用了ssl的话,那么这些ssl的参数都是多少
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0                //从属服务器SQL线程和从属服务器I/O线程之间的时间差距,如果主从网络较快,从属IO线程与主服务器很接近,那么这个值就能反应目前,从库同步是否延迟。如果网络较慢,这个值没有意义,如果值为null,则表明,上面的SQL线程和IO线程一定出现了NO的情况
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:            //Slave当前会跳过的事件号,可在配置文件里配置
Master_Server_Id: 3                     //主服务器的网络Id,即主服务器配置文件里配置的serverid

下面重点介绍几个关键的信息:
Slave_IO_Running和Slave_SQL_Running:这两项的双YES是从库复制情况最好的象征,如果出现了NO,则表示某项出现了问题。如果要写主从复制的监控脚本,也是监控这两个YES。
Last_Errno和Last_Error:主要表示从服务器在复制过程中出现的错误,这个错误可能是IO线程的错误,比如连接主库突然连不上了,也可能是SQL线程的错误,就是主库的一些SQL语句在从库执行的过程中出错。碰到错误的情况要具体情况具体分析,一般可以跳过错误,具体跳过的操作可以参考http://www.xiaomager.com/383.html
Seconds_Behind_Master:从服务器SQL线程落后IO线程的秒数,只有当网络较快(即IO线程与主服务器非常接近的时候)这个指标才有指示从服务器相对于主服务器是否延迟,因为主要它表明SQL线程落后IO线程的秒数,如果IO线程已经落后主服务器很多的话,这个值没有什么太大的意义。如果判断IO线程是否与主服务器接近呢,可以观察Master_Log_File以及Read_Master_Log_Pos,这两个值表明IO线程正在读取的主服务器上的日志文件及位置,可以在主服务器中执行命令

show master status;

来查看主服务器自己当前的日志文件和位置,两相比较自然就知道IO线程的延迟情况了。

记录一次线上mysql主从数据库的迁移(数据量为亿级别)

前一阵迁移了线上服务器上的mysql的数据,数据量达到了亿级别。特在此记录一下操作流程。 现状: 目前线上使用了mysql主从库,即主库A和从库B,由于当初在安...

阅读全文

centos6 下mysql5.5 主从复制步骤

前面两篇文章分别介绍了 centos6下 mysql5.5的安装 centos6下 mysql 5.5 数据目录迁移 下面这篇文章将在前面两篇文章的基础上,介绍一下 mysql主从复制的操...

阅读全文

centos6下 mysql 5.5 数据目录迁移

前一篇文章 http://www.xiaomager.com/651.html 介绍了centos6下 mysql 5.5的安装过程。 当启动后,可以使用命令 ps -ef|grep mysql 看来mysql的进程情况,如...

阅读全文

欢迎留言