备份一个奴隶数据库,添加——slave-info
选择备份命令。
一个奴隶服务器上恢复备份,遵循相同的步骤7.1节,“建立一个新的复制的奴隶”。
临时表在statement-based复制(SBR)奴隶。MySQL企业备份不包括临时表在一个备份。作为一个奴隶的结果,服务器在statement-based复制(SBR)或mixed-based复制设置(见复制格式详情),任何临时表还在营业结束时备份过程将丢失恢复从属服务器,让奴隶的复制状态不一致,任何后续复制语句引用临时表将会失败。为了避免这个问题,在热备份后阶段mysqlbackup复制所有InnoDB表,它进入一个循环,在以下情况:
mysqlbackup等待,直到所有临时表已经关闭SQL奴隶线程。mysqlbackup告诉如果是这样通过检查变量
Slave_open_temp_tables
有一个零值。后
Slave_open_temp_tables = 0
检测到,mysqlbackup停止SQL奴隶线程来防止更多更改表的奴隶。为了避免竞态条件的意想不到的后果,SQL奴隶线程已经停止后,mysqlbackup再次检查如果
Slave_open_temp_tables = 0
仍然是正确的:如果这是真的,mysqlbackup退出循环,完成备份声称全球读锁和复制所有non-InnoDB表。
如果它是不正确的,新的临时表刚刚创建并打开的奴隶。mysqlbackup然后重启SQL奴隶线程,所以更可以从服务器上更新。mysqlbackup然后回到步骤1的循环
除了步骤(3)中描述的退出条件(也就是,真的是没有和更开放的临时表mysqlbackup准备完成备份),mysqlbackup留在上面的循环后时间太久等待所有临时表被关闭。持续时间mysqlbackup等待,直到超时是指定的——safe-slave-backup-timeout
选择。
此外,mysqlbackup初还运行一个初始检查备份是否一个奴隶Slave_open_temp_tables = 0
在设定的时间内变得如此——safe-slave-backup-timeout
。看描述——safe-slave-backup-timeout
详细的检查。
注意,与临时表不存在上述问题的基于行的复制(RBR)设置,临时表无法复制到奴隶。用户确信SBR不发生奴隶可以设置——safe-slave-backup-timeout = 0
,这将防止mysqlbackup进入上述循环。