Documentation Home

5.6.7.4 克隆和并发 DDL

在 MySQL 8.0.27 之前,TRUNCATE TABLE在克隆操作期间不允许对捐赠者和接受者 MySQL 服务器实例(包括 )进行 DDL 操作。选择数据源时应考虑此限制。一种解决方法是使用专用的捐赠者实例,它可以适应在克隆数据时阻止的 DDL 操作。

为了防止在克隆操作期间并发 DDL,在捐赠者和接受者上获取独占备份锁。该clone_ddl_timeout变量定义克隆操作等待备份锁的捐赠者和接受者的时间(以秒为单位)。默认设置为 300 秒。如果在指定的时间限制内没有获得备份锁,克隆操作将失败并报错。

从 MySQL 8.0.27 开始,捐助者默认允许并发 DDL。捐助者的并发 DDL 支持由clone_block_ddl变量控制。可以使用SET语句动态启用和禁用并发 DDL 支持。

SET GLOBAL clone_block_ddl={OFF|ON}

默认设置为 clone_block_ddl=OFF,它允许在捐赠者上并发 DDL。

并发 DDL 操作的效果是否被克隆取决于 DDL 操作是否在克隆操作拍摄动态快照之前完成。

无论设置如何,在克隆操作期间都不允许的 DDL 操作 clone_block_ddl包括:

  • ALTER TABLE tbl_name DISCARD TABLESPACE;

  • ALTER TABLE tbl_name IMPORT TABLESPACE;

  • ALTER INSTANCE DISABLE INNODB REDO_LOG;