MySQL 5.6支持延迟复制,以便从属服务器故意落后于主服务器至少指定的时间。默认延迟为0秒。使用 MASTER_DELAY选项 CHANGE MASTER TO将延迟设置为N秒:
CHANGE MASTER TO MASTER_DELAY = N;
从主机接收到的事件N要比在主机上执行的事件至少 晚几秒钟后才执行。唯一的例外是格式描述事件或日志文件轮换事件没有延迟,这些延迟仅影响SQL线程的内部状态。
延迟复制可用于多种目的:
防止主机上的用户错误。DBA可以将延迟的从属服务器回滚到灾难发生前的时间。
测试出现延迟时系统的行为。例如,在一个应用程序中,延迟可能是由于从站上的负载过重引起的。但是,可能很难生成此负载水平。延迟复制可以模拟延迟,而不必模拟负载。它还可以用于调试与滞后从站有关的条件。
无需重新加载备份即可检查数据库的外观。例如,如果延迟是一周,并且DBA需要在开发最后几天之前查看数据库的外观,则可以检查延迟的从属服务器。
START SLAVE并 STOP SLAVE立即生效,而忽略任何延迟。RESET SLAVE 将延迟重置为0。
SHOW SLAVE STATUS 有三个字段可提供有关延迟的信息:
SQL_Delay:一个非负整数,指示从站必须落后于主站的秒数。
SQL_Remaining_Delay:当 Slave_SQL_Running_State为时Waiting until MASTER_DELAY seconds after master executed event,此字段包含一个整数,指示延迟剩余的秒数。在其他时间,此字段为NULL。
Slave_SQL_Running_State:一个字符串,指示SQL线程的状态(类似于 Slave_IO_State)。该值与State所显示的SQL线程的值相同SHOW PROCESSLIST。
当从SQL线程在执行事件之前等待延迟过去时,将SHOW PROCESSLIST其State值显示为Waiting until MASTER_DELAY seconds after master executed event。
relay-log.info现在, 该文件包含延迟值,因此文件格式已更改。请参见 第17.2.2.2节“从站状态日志”。特别是,文件的第一行现在指示文件中有多少行。如果将从属服务器降级到MySQL 5.6之前的版本,则较旧的服务器将无法正确读取文件。要解决此问题,请在文本编辑器中修改文件以删除包含行数的初始行。




