show slave status参数解释
今天搭建了一天的游戏积分主从环境,也没搞什么新东西,看了一天的show slave status,索性就把这个show slave status的结果分析一把,废话不多说,先来看看这个命令的输出结果,想必大家也不陌生:
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.10.10.10
Master_User: mysql_slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 790
Relay_Log_File: relay-log.000008
Relay_Log_Pos: 1003
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
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: 790
Relay_Log_Space: 2591
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: 1
Master_UUID: 5f0b7791-a499-11e6-901c-44a84227448b
Master_Info_File: mysql.slave_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: 89gb7791-a499-11e6-901c-44a84227448b:2-11
Executed_Gtid_Set: 4ft6f284-a4a8-11e6-a3fe-44a84220797c:1-4,89gb7791-a499-11e6-901c-44a84227448b:1-11
Auto_Position: 1
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
现在按照顺序介绍一下这个结果集中各个参数的意思:
Slave_IO_State
SHOW PROCESSLIST输出的State字段的拷贝。
Master_User
被用于连接主服务器的当前用户。
Master_Port
当前的主服务器接口。
Connect_Retry
--master-connect-retry选项的当前值,连接重试时间
Master_Log_File
I/O线程当前正在读取的主服务器二进制日志文件的名称。
Read_Master_Log_Pos
在当前的主服务器二进制日志中,I/O线程已经读取的位置。
Relay_Log_File
SQL线程当前正在读取和执行的中继日志文件的名称。
Relay_Log_Pos
在当前的中继日志中,SQL线程已读取和执行的位置。
Relay_Master_Log_File
由SQL线程执行的包含多数近期事件的主服务器二进制日志文件的名称。
Slave_IO_Running
I/O线程是否被启动并成功地连接到主服务器上。
Slave_SQL_Running
SQL线程是否被启动。
Replicate_Do_DB,Replicate_Ignore_DB
搭建主从复制时使用--replicate-do-db和--replicate-ignore-db选项指定的数据库清单
Replicate_Do_Table,
Replicate_Ignore_Table,
Replicate_Wild_Do_Table,
Replicate_Wild_Ignore_Table
使用--replicate-do-table,--replicate-ignore-table,--replicate-wild-do-table和--replicate-wild-ignore_table选项指定的表清单
Last_Errno,Last_Error
被多数最近被执行的查询返回的错误数量和错误消息。错误数量为0并且消息为空字符串意味着“没有错误”。如果Last_Error值不是空值,它也会在从服务器的错误日志中作为消息显示。
Skip_Counter
最近被使用的用于SQL_SLAVE_SKIP_COUNTER的值。
Exec_Master_Log_Pos
表示SQL线程已经执行的Relay log相对于主库二进制日志偏移量的位置,一般gtid复制出错使用该项去主库中查询。
Relay_Log_Space
表示所有原有的中继日志结合起来的总大小
Until_Condition
如果没有指定UNTIL子句,则没有值。如果从属服务器正在读取,直到达到主服务器的二进制日志的给定位置为止,则值为Master,如果从属服务器正在读取,直到达到其中继日志的给定位置为止,则值为Relay。
Until_Log_File
Until_Log_Pos
Until_Log_File和Until_Log_Pos用于指示日志文件名和位置值,日志文件名和位置值定义了SQL线程在哪个点中止执行。
Master_SSL_Allowed
显示了从服务器是否使用SSL连接到主服务器。如果允许对主服务器进行SSL连接,则值为Yes;如果不允许对主服务器进行SSL连接,则值为No;如果允许SSL连接,但是从服务器没有让SSL支持被启用,则值为Ignored。
Master_SSL_CA_File
Master_SSL_CA_Path
Master_SSL_Cert
Master_SSL_Cipher
Master_SSL_Key
如果Slave使用SSL连接Master服务器,这里就会显示对应的证书和私钥信息。使用CHANGE MASTER与SSL相关的选项有:–master-ca,–master-capath,–master-cert,–master-cipher和–master-key等。
Seconds_Behind_Master
表示主从之间延迟的时间,单位是秒。就是SQL线程当前执行的binlog(实际上是relay log)中的timestamp和IO线程最新的timestamp的差值。
实质上,此字段计算Slave SQL线程和Slave i/o线程之间的时间差 (以秒为单位)。如果主节点和从服务器之间的网络连接速度较快,则Slave i/o线程非常接近主服务器,因此此字段是对从SQL线程与主服务器进行比较的后的一个很好的近似值。如果网络很慢,这不是一个好的近似;从SQL线程可能经常被从i/o线程所捕获,因此Seconds_Behind_Master通常显示值为0,即使i/o线程比主服务器慢很多。换言之,此列仅适用于快速网络,后续将专门出一篇文章对这个SBM的值进行说明。
Master_SSL_Verify_Server_Cert
显示是否认证Master证书。
Last_IO_Error,Last_SQL_Error
类似last_error,在出现IO线程错误和SQL线程错误的时候会有值
Replicate_Ignore_Server_Ids:
slave当前会跳过的事件号
Master_Server_Id
显示主服务器的Server_id。
Master_UUID
记录Master的UUID。
Master_Info_File
记录Master info信息的存储位置。
SQL_Delay
记录Slave设置延迟复制的时间,0表示无延迟,主动延迟复制在某些情况下有助于恢复。
SQL_Remaining_Delay
当 Slave_SQL_Running_State 等待,直到MASTER_DELAY秒后,Master执行的事件, 此字段包含一个整数,表示有多少秒左右的延迟。在其他时候,这个字段是0。
Slave_SQL_Running_State
记录SQL线程的状态。常见的三种状态如下:
SQL线程运行状态:
1) Reading event from the relay log
线程已经从中继日志读取一个事件,可以对事件进行处理了。
2) Has read all relay log; waiting for the slave I/O thread to update it
线程已经处理了中继日志文件中的所有事件,现在正等待I/O线程将新事件写入中继日志。
3) Waiting for slave mutex on exit
线程停止时发生的一个很简单的状态。
Master_Retry_Count
86400 slave和master断开连接之后重试连接的次数,默认3600*24
Master_Bind
slave从库在多网络接口的情况下使用,以确定用哪一个slave网络接口连接到master。
Last_IO_Error_Timestamp
记录最近IO线程错误的时间戳。
Last_SQL_Error_Timestamp
记录最近SQL线程错误的时间戳。
Retrieved_Gtid_Set
接收的二进制日志集合,对应IO线程。
execute_Gtid_Set
执行的二进制日志GTID集合,对应SQL线程。
Auto_Position
记录在GTID模式下是否开启了自动事务校验。
replicate_rewrite_db
同步的时候需要更改的db名称,例如
master与slave同步fandb这个库,但因为需要slave需要将fandb改名为dudb,master不能改,就需要这个参数。在Slave端的my.cnf中加入
replicate-rewrite-db=fandb->dudb
Channel_Name
在多源复制下(5.7支持),复制通道的名称,可以有多个。