在 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;