本节介绍克隆操作不同阶段的失败处理。
检查先决条件(请参阅 远程克隆先决条件)。
如果在先决条件检查期间发生故障,
CLONE INSTANCE
操作将报告错误。
仅当
clone_block_ddl
变量设置为ON
时,才会阻止捐赠者上的并发 DDL(默认设置为OFF
)。请参阅 第 7.6.7.4 节,“克隆和并发 DDL”。如果克隆操作无法在
clone_ddl_timeout
变量指定的时间限制内获得 DDL 锁,则会报告错误。在将数据克隆到接收方数据目录之前,将删除接收方上用户创建的数据(模式、表、表空间)和二进制日志。
在远程克隆操作期间从接收方数据目录中删除用户创建的数据和二进制日志时,数据不会被保存,如果发生故障,可能会丢失。如果数据很重要,则应在启动远程克隆操作之前进行备份。
出于信息目的,将在服务器错误日志中打印警告,以指定何时开始和完成数据删除。
[Warning] [MY-013453] [InnoDB] Clone removing all user data for provisioning: Started... [Warning] [MY-013453] [InnoDB] Clone removing all user data for provisioning: Finished
如果在删除数据时发生故障,接收方可能会保留克隆操作之前存在的部分模式、表和表空间集。在克隆操作执行期间或失败后,服务器始终处于一致状态。
从捐赠者克隆数据。克隆用户创建的数据、字典元数据和其他系统数据。
如果在克隆数据时发生故障,克隆操作将回滚,并删除所有克隆的数据。在此阶段,接收方上先前存在用户创建的数据和二进制日志也将被删除。
如果出现这种情况,您可以纠正故障原因并重新执行克隆操作,或者放弃克隆操作,并从克隆操作之前执行的备份中恢复接收方数据。
服务器会自动重新启动(适用于不克隆到命名目录的远程克隆操作)。在启动过程中,将执行典型的服务器启动任务。
如果自动服务器重新启动失败,您可以手动重新启动服务器以完成克隆操作。
如果在克隆操作期间发生网络错误,如果在捐赠者实例上定义的 clone_donor_timeout_after_network_failure
变量指定的时间内解决了错误,则操作将恢复。clone_donor_timeout_after_network_failure
的默认设置为 5 分钟,但支持 0 到 30 分钟的范围。如果操作未在规定的时间内恢复,它将中止并返回错误,捐赠者将删除快照。设置为零将导致捐赠者在发生网络错误时立即删除快照。配置更长的超时时间可以为解决网络问题留出更多时间,但也增加了捐赠者实例上的增量大小,这会增加克隆恢复时间,以及克隆旨在作为副本或复制组成员的情况下的复制延迟。
Clone 空闲超时设置为默认的 wait_timeout
设置,即 28800 秒(8 小时)。