本节描述克隆操作的不同阶段的故障处理。
-
先决条件被检查(见远程克隆先决条件)。
-
如果在先决条件检查期间发生故障,
CLONE 实例
操作将报告错误。
-
-
只有当
clone_block_ddl
变量设置为ON
(默认设置为OFF
)时,才会阻止捐赠者的并发 DDL。见第 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
如果在删除数据时发生故障,接收者可能会保留部分模式、表和表空间,这些数据是在克隆操作之前存在的。在克隆操作执行期间或故障后,服务器总是保持一致状态。
-
从捐赠者克隆数据。用户创建的数据、字典元数据和其他系统数据将被克隆。
如果在克隆数据时发生故障,克隆操作将回滚,并删除所有克隆的数据。在这个阶段,接收者的用户创建的数据和二进制日志也将被删除。
如果出现这种情况,可以修复故障的原因并重新执行克隆操作,或者放弃克隆操作并从备份中恢复接收者的数据。
-
服务器将自动重新启动(适用于不克隆到命名目录的远程克隆操作)。在启动期间,将执行典型的服务器启动任务。
如果自动服务器重新启动失败,可以手动重新启动服务器以完成克隆操作。
如果在克隆操作期间发生网络错误,操作将在指定的时间内恢复,如果错误在该时间内得到解决,该时间由donor实例上的clone_donor_timeout_after_network_failure
变量定义。该clone_donor_timeout_after_network_failure
变量的默认设置为5分钟,但支持0到30分钟的范围。如果操作在规定的时间内未恢复,将中止并返回错误,并且donor将删除快照。将该设置设置为零将导致donor在网络错误发生时立即删除快照。配置更长的超时时间可以提供更多时间来解决网络问题,但也会增加donor实例上的delta大小,从而增加克隆恢复时间,以及在克隆作为副本或复制组成员时的复制延迟。
克隆空闲超时设置为默认的wait_timeout
设置,即28800秒(8小时)。