在一个一主两从的环境中,将其中一个从库的复制设置为延迟2小时如何设置。
开启延迟复制
从库还没有接入主库时
可以在change master的时候直接设置MASTER_DELAY=7200;
CHANGE MASTER TO
MASTER_HOST='',
MASTER_USER='',
MASTER_PASSWORD='',
MASTER_PORT=,
MASTER_AUTO_POSITION=1,
MASTER_DELAY=7200;
对于一个已经运行的从库设置的话
stop slave;
change master to master_delay=7200;
start slave;
通过show slave status\G 可以查看
SQL_Delay: 7200
SQL_Remaining_Delay: 5767
Slave_SQL_Running_State: Waiting until MASTER_DELAY seconds after master executed event
其中SQL_Delay表示期望延迟的时间,等于MASTER_DELAY的值,SQL_Remaining_Delay指的是当前事务被暂停还需要等待多长时间才能执行。
延迟复制的本质上是暂停SQL线程的应用,并不影响IO线程接受主库的binlog。在执行change master to master_delay命令时,从库会清除已有的relay log,并基于Relay_Master_Log_File和Exec_Master_Log_Pos的值来重新初始化Master_Log_File和Read_Master_Log_Pos。