若要备份副本数据库,请添加——slave-info
选项的备份命令。
要恢复副本服务器上的备份,请执行与第8.1节“建立一个新的副本”.
基于语句的复制(SBR)复制上的临时表。MySQL企业备份在备份中不包含临时表。因此,对于基于语句的复制(SBR)或基于混合的复制设置中的复制服务器(请参阅复制格式(详细信息),在备份过程结束时仍然打开的任何临时表将在恢复的副本服务器中丢失,从而使副本的复制状态不一致,并且任何引用临时表的后续复制语句将失败。为避免此问题,在热备份阶段之后mysqlbackup复制所有InnoDB表,它进入一个循环,在这个循环中发生以下情况:
mysqlbackup等待所有临时表被复制SQL线程关闭。mysqlbackup通过检查变量来判断是否存在这种情况
Slave_open_temp_tables
值为零。后
Slave_open_temp_tables = 0
检测到,mysqlbackup停止复制SQL线程,以防止对复制上的表进行更多更改。为了避免竞态条件导致的意外后果,在停止复制SQL线程后,mysqlbackup再检查一次
Slave_open_temp_tables = 0
仍然是正确的:如果这是真的,mysqlbackup退出循环,通过对所有非innodb表断言读锁并复制它们来完成备份。
如果不为真,则已经在副本上创建并打开了新的临时表。mysqlbackup然后重新启动复制SQL线程,这样就可以在复制服务器上进行更多更新。mysqlbackup然后回到这个循环的第1步
除了上面步骤(3)中描述的退出条件(即,实际上没有更多打开的临时表和mysqlbackup已准备好完成备份),mysqlbackup将在上述循环中停留太长时间,以致于等待所有临时表关闭后超时。持续时间mysqlbackup方法指定的等待直到超时——safe-slave-backup-timeout
选择。
此外,mysqlbackup还在副本备份开始时运行初始检查,以查看是否Slave_open_temp_tables = 0
在设置的持续时间内变为true——safe-slave-backup-timeout
.参见描述——safe-slave-backup-timeout
关于支票的细节。
请注意,对于基于行的复制(RBR)设置,不存在上述关于临时表的问题,对于这种设置,临时表不会复制到副本上。确定副本没有发生SBR的用户可以设置——safe-slave-backup-timeout = 0
,这将防止mysqlbackup避免进入上述循环。
看到限制在备份副本时适用附录B,MySQL企业备份的局限性.