clone不是零停机方案,而是极短停机窗口的物理迁移方案;克隆时donor仅加轻量备份锁不影响dml但阻塞ddl,recipient克隆完成自动退出并重启(停机5–15秒);插件必须active且永久加载,需在my.cnf中配置plugin-load-add=mysql_clone.so和clone=force_plus_permanent;远程克隆须双向配权(donor需backup_admin+replication slave,recipient需clone_admin)、设clone_valid_donor_list、bind_address非127.0.0.1;克隆后必须手动清理auto.cnf重置server_uuid,校准server_id、gtid_mode等参数,否则主从同步失败。

CLONE 不是零停机方案,而是**极短停机窗口的物理迁移方案**。克隆过程中 donor(源库)仅加轻量备份锁,不影响 DML,但任何 DDL 都会阻塞克隆;recipient(目标库)在克隆完成时会自动退出进程并重启——这个重启过程就是实际停机点,通常 5–15 秒,无法规避。
确认 Clone 插件已 ACTIVE 且永久加载
插件未真正激活是 70% 克隆失败的根源,报错常被误读为权限或网络问题。
- 执行
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'clone';,必须返回ACTIVE;若为空或DISABLED,说明未加载 - 动态安装
INSTALL PLUGIN clone SONAME 'mysql_clone.so';只在当前会话有效,MySQL 重启即失效 - 必须在
my.cnf的[mysqld]段添加两行:plugin-load-add = mysql_clone.so和clone = FORCE_PLUS_PERMANENT - Linux 下文件名是
mysql_clone.so,Windows 是mysql_clone.dll,路径写错会导致静默加载失败
远程克隆必须双向配权 + 显式白名单
权限不是“给一个账号就行”,donor 和 recipient 各需不同权限,且必须成对存在。
- donor 端用户(如
'clone_donor'@'%')必须有BACKUP_ADMIN(必需),REPLICATION SLAVE(后续配主从用) - recipient 端用户(如
'clone_recip'@'localhost')必须有CLONE_ADMIN(隐含SHUTDOWN,因克隆后要自动重启) - recipient 上必须提前执行:
SET GLOBAL clone_valid_donor_list = 'donor_host:3306';,否则报ERROR 3864 (HY000): Clone Donor connection failed - donor 的
bind_address不能是127.0.0.1,得设为0.0.0.0或具体内网 IP,并确保防火墙放行 3306 及额外 socket 端口
克隆后必须手动清理 server_uuid 和 auto.cnf
克隆是物理拷贝,所有元数据原样复制,不重置逻辑标识,直接启动必然冲突。
- recipient 重启后第一件事:运行
SELECT @@server_uuid;,若与 donor 相同,说明auto.cnf未被清除 - 必须停掉 MySQL,删掉 recipient 数据目录下的
auto.cnf,再启动——MySQL 会自动生成新 UUID - 检查
gtid_executed是否与 donor 一致,若一致且要配主从,需在 recipient 上执行RESET MASTER;(仅限全新从库场景) -
auto_increment_offset、server_id等参数也需人工校准,否则主从同步会报错
本地克隆失败多数卡在权限和磁盘空间
执行 CLONE LOCAL DIRECTORY = '/data/clone_20260604' 前,90% 的失败源于路径不可写或空间不足。
- 目标路径必须不存在:
/data/clone_20260604不能是已有非空目录,否则报Cannot create directory: Permission denied - 创建后立即执行:
chown -R mysql:mysql /data/clone_20260604,只改父目录属主无效 - 磁盘剩余空间必须 ≥ 当前
datadir实际占用(用du -sh /var/lib/mysql确认),CLONE不压缩、不去重 - 大库(>100GB)可调大
clone_buffer_size(默认 4MB),在my.cnf加clone_buffer_size = 64M,仅对本地克隆生效
my.cnf 中的 server_id、log_bin、gtid_mode 等配置不会自动适配新角色。这些值一旦遗漏,后续主从搭建或高可用切换就会静默失败。











