Slave_IO_State
这里显示了当前slave I/O线程的状态(slave连接到master的状态)。状态信息和使用show processlist | grep “system user”(会显示两条信息,一条slave I/O线程的,一条是slave SQL线程的)显示的内容一样。
slave I/O线程的状态,有以下几种:
1) waiting for master update
这是connecting to master状态之前的状态
2) connecting to master
I/O线程正尝试连接到master
3) checking master version
在与master建立连接后,会出现该状态。该状态出现的时间非常短暂。
4) registering slave on master
在与master建立连接后,会出现该状态。该状态出现的时间非常短暂。
5) requesting binlog dump
在与master建立连接后,会出现该状态。该状态出现的时间非常短暂。在这个状态下,I/O线程向master发送请求,请求binlog,位置从指定的binglog 名字和binglog的position位置开始。
6) waiting to reconnect after a failed binlog dump request
如果因为连接断开,导致binglog的请求失败,I/O线程会进入睡眠状态。然后定期尝试重连。尝试重连的时间间隔,可以使用命令"change master to master_connect_trt=X;"改变。
7) reconnecting after a failed binglog dump request
I/O进程正在尝试连接master
8) waiting for master to send event
说明,已经成功连接到master,正等待二进制日志时间的到达。如果master 空闲,这个状态会持续很长时间。如果等待的时间超过了slave_net_timeout(单位是秒)的值,会出现连接超时。在这种状态下,I/O线程会人为连接失败,并开始尝试重连
9) queueing master event to the relay log
此时,I/O线程已经读取了一个event,并复制到了relay log 中。这样SQL 线程可以执行此event
10) waiting to reconnect after a failed master event read
读取时出现的错误(因为连接断开)。在尝试重连之前,I/O线程进入sleep状态,sleep的时间是master_connect_try的值(默认是60秒)
11) reconnecting after a failed master event read
I/O线程正尝试重连master。如果连接建立,状态会变成"waiting for master to send event"
12) waiting for the slave sql thread to free enough relay log space
这是因为设置了relay_log_space_limit,并且relay log的大小已经整张到了最大值。I/O线程正在等待SQL线程通过删除一些relay log,来释放relay log的空间。
13) waiting for slave mutex on exit
I/O线程停止时会出现的状态,出现的时间非常短。
Master_Host
mysql主库的ip地址
Master_User
这个是master上面的一个用户。用来负责主从复制的用户,创建主从复制的时候建立的(具有replication slave权限)。
Master_Port
master服务器的端口 一般是3306;
Connect_Retry
连接中断后,重新尝试连接的时间间隔。默认值是60秒。
---------------------与master相关的日志的信息------------------------------
Master_Log_File
当前I/O线程正在读取的主服务器二进制日志文件的名称。
Read_Master_Log_Pos
当前I/O线程正在读取的二进制日志的位置。
---------------------与relay log相关的信息------------------------------
Relay_Log_File
当前slave SQL线程正在读取并执行的relay log的文件名。
Relay_Log_Pos
当前slave SQL线程正在读取并执行的relay log文件中的位置;(Relay_Log_File下的Relay_Log_Pos其实一一对应着Relay_Master_Log_File的Exec_Master_Log_Pos。)
Relay_Master_Log_File
当前slave SQL线程读取并执行的relay log的文件中多数近期事件,对应的主服务器二进制日志文件的名称。(说白点就是我SQL线程从relay日志中读取的正在执行的sql语句,对应主库的sql语句记录在主库的哪个binlog日志中)
---------------------slave I/O和SQL线程的状态(重要)------------------------------
Slave_IO_Running: Yes
I/O线程是否被启动并成功地连接到主服务器上。
Slave_SQL_Running: Yes
SQL线程是否被启动。
指定主从的db
#设定从库哪一个数据库需要复制主库的数据(多数据库使用逗号,隔开)
replicate-do-db
#设定需要忽略的复制数据库 (多数据库使用逗号,隔开)
replicate-ignore-db
#设定需要复制的表
replicate-do-table
#设定需要忽略的复制表
replicate-ignore-table
#同replication-do-table功能一样,但是可以通配符.
#demo---->replicate-wild-do-table=db_name.% 只复制哪个库的哪个表
replicate-wild-do-table
#同replication-ignore-table功能一样,但是可以加通配符
#demo---->replicate-wild-ignore-table=mysql.% 忽略哪个库的哪个表
replicate-wild-ignore-table
这些参数都是为了用来指明哪些库或表在复制的时候不要同步到从库,但是这些参数用的时候要小心,因为 当跨库使用的时候 可能会出现问题。
一般情况下 ,限制的时候都用Replicate_Wild_Ignore_Table这个参数。
Last_Errno
slave的SQL线程读取日志参数的的错误数量和错误消息。错误数量为0并且消息为空字符串表示没有错误。
如果Last_Error值不是空值,它也会在从属服务器的错误日志中作为消息显示。
Skip_Counter
SQL_SLAVE_SKIP_COUNTER的值,用于设置跳过sql执行步数。
Exec_Master_Log_Pos
slave SQL线程当前执行的事件,对应在master相应的二进制日志中的position。(结合Relay_Master_Log_File理解,而且在Relay_Master_Log_File这个值等于Master_Log_File值的时候,Exec_Master_Log_Pos是不可能超过Read_Master_Log_Pos的。)
Relay_Log_Space
所有原有的中继日志结合起来的总大小。
Until_Condition
-
如果没有指定UNTIL子句,则没有值
-
如果从属服务器正在读取,直到达到主服务器的二进制日志的给定位置为止,则值为Master
-
如果从属服务器正在读取,直到达到其中继日志的给定位置为止,则值为Relay
Until_Log_File和Until_Log_Pos用于指示日志文件名和位置值。日志文件名和位置值定义了SQL线程在哪个点中止执行。
seconds_Behind_Master
这个值是时间戳的差值。是slave当前的时间戳和master记录该事件时的时间戳的差值。
SQL_Delay
一个非负整数,表示秒数,Slave滞后多少秒于master。