通过show slave status查看到的Seconds_Behind_Master,从字面上来看,他是slave落后master的秒数,一般情况下,也确实这样,

通过Seconds_Behind_Master数字查看slave是否落后于master,但是在一些环境中,他确会让我们产生幻觉。

该值是SQL thread I/O thread之间的差值。

当在很快的网络连接情况下,I/O thread. 能很快的从master的binlog中同步sql到slave的relay-log里,这样,这个值就能基本确定的slave落后master的秒数

当网络环境特别糟糕的情况下,这个值确会让我们产生幻觉,I/O thread同步很慢,每次同步过来,SQL thread就能立即执行,

这样,Seconds_Behind_Master是0,而真正的,slave已经落后master很多很多.


暂停复制

slave> STOP SLAVE;

当停止执行时,从机不再通过IO线程从主机读取二进制日志并且不再通过SQL线程处理中继日志中还没执行的事件。你可以指定线程的类型来独立地停止IO或者SQL线程。

slave> STOP SLAVE IO_THREAD;

停止IO线程会让中继日志里的语句执行到中继日志停止接收新事件的那个点为止

slave> STOP SLAVE SQL_THREAD;

停止SQL线程会IO线程会继续从主机读取变化,但这些变化不会马上被应用,这样当你再次开始从机操作的时候从机就能轻易地赶上进度。 

当你想要让从机赶上从主机来的事件时,当你想在从机上做管理但要确保你已经在指定的点有最新的更新时,可用停止IO线程的选项。这种方法同样也能用来停止从机上的事件执行,同时你在主机上做管理确保复制再次启动的时候不会有大量积压的事件要执行。

要再次开始执行复制,用START SLAVE语句:

slave> START SLAVE;