#### 5.6.7.4 克隆和并发 DDL

在 MySQL 8.0.27 之前，对捐赠者和接受者 MySQL 服务器实例的 DDL 操作，包括[`截断表`](truncate-table.html), 在克隆操作期间是不允许的。选择数据源时应考虑此限制。一种解决方法是使用专用的捐助者实例，它可以适应在克隆数据时被阻止的 DDL 操作。

为了防止在克隆操作期间并发 DDL，在提供者和接收者上获取独占备份锁。这[`clone_ddl_timeout`](clone-plugin-options-variables.html#sysvar_clone_ddl_timeout)变量定义克隆操作等待备份锁定的捐助者和接收者的时间（以秒为单位）。默认设置为 300 秒。如果在指定的时限内没有获得备份锁，则克隆操作失败并出现错误。

从 MySQL 8.0.27 开始，默认情况下，捐助者上允许并发 DDL。对捐赠者的并发 DDL 支持由[`clone_block_ddl`](clone-plugin-options-variables.html#sysvar_clone_block_ddl)多变的。可以使用一个动态启用和禁用并发 DDL 支持[`放`](set.html)陈述。

```
SET GLOBAL clone_block_ddl={OFF|ON}
```

默认设置是[`clone_block_ddl=OFF`](clone-plugin-options-variables.html#sysvar_clone_block_ddl)，这允许在捐助者上并发 DDL。

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

在克隆操作期间不允许的 DDL 操作，无论[`clone_block_ddl`](clone-plugin-options-variables.html#sysvar_clone_block_ddl)设置包括：

-   `更改表 *`tbl_name`* 丢弃表空间；`

-   `更改表 *`tbl_name`* 导入表空间；`

-   `ALTER INSTANCE DISABLE INNODB REDO_LOG;`
