Bootstrap

mysql show slave_MySQL show slave status 参考

语法

SHOW SLAVE STATUS [FOR CHANNEL channel]

这个语句提供从线程的基本参数的状态信息。它要求有SUPER或者REPLICATION CLIENT权限。

示例

如果你用mysql客户端发出这个语句,你可以用\G而不是分号来结束语句,这样得到的结果可读性更好。

mysql> SHOW SLAVE STATUS\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: localhost

Master_User: repl

Master_Port: 13000

Connect_Retry: 60

Master_Log_File: master-bin.000002

Read_Master_Log_Pos: 1307

Relay_Log_File: slave-relay-bin.000003

Relay_Log_Pos: 1508

Relay_Master_Log_File: master-bin.000002

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: 1307

Relay_Log_Space: 1858

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: 3e11fa47-71ca-11e1-9e33-c80aa9429562

Master_Info_File: /var/mysqld.2/data/master.info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Reading event from the relay log

Master_Retry_Count: 10

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set: 3e11fa47-71ca-11e1-9e33-c80aa9429562:1-5

Executed_Gtid_Set: 3e11fa47-71ca-11e1-9e33-c80aa9429562:1-5

Auto_Position: 1

Replicate_Rewrite_DB:

Channel_name:

Master_TLS_Version: TLSv1.2

Performance Schema提供可以获取复制信息的表。这与SHOW SLAVE STATUS语句的可用信息相似,但是用表的形式。更多信息,参考Performance Schema Replication Tables。

下面的列表描述SHOW SLAVE STATUS返回的字段。额外的信息,参考16章的Checking Replication Status。

Slave_IO_State

它时SHOW PROCESSLIST输出的从I/O线程的State字段的副本。这告诉你线程正在做什么:尝试去连主服务器,等待来自主服务器的事件,重新连接主服务器,等等。完整的可以查看Replication Slave I/O Thread States。

Master_Host

这个从服务器连接的主服务器。

Master_User

连接到主服务器使用的账号用户名。

Master_Port

连接到主服务器时使用的端口。

Connect_Retry

在尝试的连接之间秒数(默认60秒)。这可以用CHANGE MASTER TO语句设置。

Master_Log_File

I/O线程当前正在读的主服务器的bin日志文件名称。

Read_Master_Log_Pos

当前主二进制日志文件中I/O线程读取到的位置。

Relay_Log_File

SQL线程当前正在从中读取和执行的中继日志文件的名称。

Relay_Log_Pos

当前中继日志文件中SQL线程已读取并执行到的位置。

Relay_Master_Log_File

含由SQL线程执行的最新事件的主二进制日志文件的名称。

Slave_IO_Running

I/O线程是否已经启动并且已经成功的连接到主服务器。在内部,这个线程的状态表示下面三个值之一:

MYSQL_SLAVE_NOT_RUN。从I/O线程没有运行。对于这个状态,Slave_IO_Running是No。

MYSQL_SLAVE_RUN_NOT_CONNECT。从I/O线程正在运行,但是没有连接到复制的主服务器。对于这个状态,Slave_IO_Running是Connecting。

MYSQL_SLAVE_RUN_CONNECT。从I/O线程正在运行,并且连接到了复制的主服务器。对于这个状态,SLAVE_IO_Running是Yes。

Slave_running系统状态变量的值对应这个值。

Slave_SQL_Running

SQL线程是否是已经启动。

Replicate_Do_DB, Replicate_Ignore_DB

使用了--replicate-do-db和--repliate-ignore-db选项配置了数据库。

Replicate_Do_Table, Replicate_Ignore_Table, Replicate_Wild_Do_Table,

Replicate_Wild_Ignore_Table

Last_Errno, Last_Error

这几列是Last_SQL_Errno和Last_SQL_Error的别名。可以使用RESET MASTER或者RESET SLAVE重置这些列的值。

说明: 当从SQL线程接收到一个错误,它会先报告错误,接着停止SQL线程(产生了延迟)。这就是说即使Slave_SQL_Running显示Yes,Last_SQL_Errno仍然有可能短暂的显示非0的值。

Skip_Counter

系统变量sql_salve_skip_counter当前的值。参考SET GLOBAL sql_slave_kip_counter Statement。

Exec_Master_Log_Pos

这个位置是SQL线程已经读取和执行的当前主服务器bin日志文件的位置,标记下个事务或者要处理的事件的开始。你可以用CHANGE MASTER TO语句的MASTER_LOG_POS选项使用这个值,当从一个已经存在的从服务器上启动一个新的从服务器时,以便新的从服务器从这个点开始读。

Relay_Log_Space

所有存在的中继日志文件的总共大小。

Until_Condition, Until_Log_File, Until_Log_Pos

Master_SSL_Allowed, Master_SSL_CA_File, Master_SSL_CA_Path, Master_SSL_Cert,

Master_SSL_Cipher, Master_SSL_CRL_File, Master_SSL_CRL_Path, Master_SSL_Key,

Master_SSL_Verify_Server_Cert

Seconds_Behind_Master

这个字段表示从服务器的延迟程度:

当slave正在处理更新,对于当前在从服务器上正在处理的事件,这个字段显示的是从服务器上当前时间戳和在主服务器上记录的原始时间戳的差异。

当没有事件在从服务器上处理时

本质上,这个字段是测量的从SQL线程和从I/O线程之间的时间差异秒数。如果在从服务器和主服务器之间的网络连接比较快,那么从I/O线程是非常接近主服务器的,所以这个字段是与主服务器相比,从SQL线程延迟程度的近似值。如果网络慢,这就不是一个好的近似值;从SQL线程经常可能被较慢的从I/O线程赶上,所以Seconds_Behind_Master经常显示0,即使I/O线程比主服务器慢。换句话,这个列只在较快的网络中有用。

即使主从时钟不相同,这种时差计算仍然有效时间,前提是从I/O线程启动时计算的差保持不变

从那时起。任何改变——包括NTP更新——都可能导致时钟偏移,以至于让Seconds_Behind_Master的计算不可靠。

在MySQL5.7中,如果从SQL线程没有运行,或者SQL线程已经消费了所有的中继日志并且从I/O线程没有运行,这个字段就是NULL。如果I/O线程正在运行,但是中继日志已经用完,Seconds_Behind_Master被设置成0.

Seconds_Behind_Master的值是基于存储在事件中的时间戳的,通过复制保存。

当有一个多线程从服务器时,你应该记住这个值时基于Exec_Master_log_Pos,并且这样可能不会反应最近提交的事务的位置。

Last_IO_Errno, Last_IO_Error

让I/O线程停止的最近的错误的错误号和错误信息。一个0的错误号和空的错误信息,表示"no error"。如果Last_IO_Error值不是空,这个错误值也会出现在从服务器的错误日志中。

I/O错误信息包括一个时间戳(表示最近的I/O线程错误发生在什么时候)。这个时间戳使用YYMMDD hh:mm:ss的格式,并且出现在Last_IO_Error_Timestamp列中。

使用RESET MASTER或者RESET SLAVE重置这些列中显示的值。

Last_SQL_Errno, Last_SQL_Error

让线程停止的最近错误的错误号和错误信息。0的错误号和空的错误信息表示没有错误。如果Last_SQL_Error值不是空的,错误值也出现在从服务器的错误日志中。

Replicate_Ignore_Server_Ids

Master_Server_Id

主服务器的server_id

Master_UUID

主服务器的server_uuid

Master_Info_File

master.info文件的位置

SQL_Delay

从服务器必须滞后主服务器的秒数

SQL_Remaining_Delay

Slave_SQL_Running_State

SQL线程的状态(类似于Slave_IO_State)。这个值与SHOW PROCESSLIST展示的SQL 线程的状态值一样。

Master_Retry_Count

在失去连接的情况下,从服务器可以尝试重新连接到主服务器的次数。

Master_Bind

Last_IO_Error_Timestamp

最近的I/O错误发生时的时间戳。

Last_SQL_Error_Timestamp

最近的SQL错误发生的时间戳。

Retrieved_Gtid_Set

Executed_Gtid_Set

Auto_Position

Replicate_Rewrite_DB

Channel_name

Master_TLS_Version

;