能,但必须满足版本一致、权限分治、配置对齐、网络可达四个硬性条件,缺一不可;插件状态须为active,innodb_file_per_table=on,donor与recipient权限分设且账号双端存在,recipient需预设clone_valid_donor_list,bind_address不能为127.0.0.1,克隆后须手动配置复制参数并校验server_uuid。

能,但必须满足版本一致、权限分治、配置对齐、网络可达四个硬性条件,缺一不可。跳过任一检查,CLONE INSTANCE 就会卡住、静默失败或报错后退出。
确认插件已加载且状态为 ACTIVE
很多问题其实卡在第一步:插件看似装了,实则没真正激活。
- 执行
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'clone';,结果必须是ACTIVE;若为DISABLED或空行,说明加载失败 - 动态安装命令是
INSTALL PLUGIN clone SONAME 'mysql_clone.so';(Linux)或INSTALL PLUGIN clone SONAME 'mysql_clone.dll';(Windows),但前提是文件真实存在且@@plugin_dir指向正确路径 - 永久生效推荐写进
my.cnf:[mysqld] plugin-load-add = mysql_clone.so clone = FORCE_PLUS_PERMANENT
,然后重启mysqld;仅靠INSTALL PLUGIN不足以保证后续稳定可用 -
innodb_file_per_table = ON是强制前提,否则克隆中途报ER_CLONE_DONOR_NOT_SUPPORTED或Invalid tablespace file
远程克隆必须配对设置 donor 和 recipient 权限
不是“一个账号走天下”,而是 donor 和 recipient 各需不同权限,且账号必须在两端都存在、显式授权。
- donor(源库)用户(如
'clone_user'@'192.168.0.101')必须有:BACKUP_ADMIN(必需)、REPLICATION SLAVE(后续配主从用) - recipient(目标库)用户(如
'clone_user'@'192.168.0.102')必须有:CLONE_ADMIN(隐含BACKUP_ADMIN+SHUTDOWN),否则直接报ERROR 3095 (HY000): Insufficient privileges - recipient 上还需提前运行:
SET GLOBAL clone_valid_donor_list = '192.168.0.101:3306';,否则连接被拒绝 - donor 的
bind_address不能是127.0.0.1,得设为0.0.0.0或具体内网 IP,并确保防火墙放行 3306 端口
克隆完成后必须手动配置复制关系
Clone 插件只复制物理数据和 GTID_EXECUTED 值,不启动复制线程、不写 master.info、不设置 source_host,一切都要你补上。
- 克隆完成后,recipient 实例会自动退出并由 systemd / mysqld_safe 拉起——但原
my.cnf中的server_id、gtid_mode等配置不会自动生效,需确认已正确配置 - 务必检查 donor 和 recipient 的
server_uuid是否不同,虚拟机克隆环境极易重复,重复会导致 GTID 冲突;可手动改:SET PERSIST server_uuid = 'xxx-xxx-xxx'; - 登录 recipient 执行:
SELECT @@global.gtid_executed;,再查 donor 的SHOW MASTER STATUS\G或SELECT * FROM performance_schema.replication_applier_status_by_coordinator\G获取最新 GTID 集合 - 用
CHANGE REPLICATION SOURCE TO(MySQL 8.0.23+)显式设置:SOURCE_HOST、SOURCE_USER、SOURCE_AUTO_POSITION = 1,然后START REPLICA;
克隆过程卡住时怎么快速定位
别干等,performance_schema.clone_status 是唯一实时可观测入口,它比命令行返回更早暴露问题。
- 执行
SELECT * FROM performance_schema.clone_status\G查看当前阶段(STATE)、错误码(ERROR_NO)、错误信息(ERROR_MESSAGE) - 常见卡点:
Stage: clone_type→ 目标磁盘空间不足或权限不对;Stage: apply_log→ 源库未开innodb_file_per_table或 redo 日志损坏 - 目标
datadir剩余空间建议 ≥ 源库ibdata1+ 所有.ibd总大小 × 1.2(克隆过程额外写日志和临时文件) - Linux 上注意 SELinux/AppArmor 是否拦截,临时验证可
setenforce 0;进程用户(如mysql)必须对datadir有完整读写权限
最易被忽略的是克隆后实例的“干净性”:它没有复制元数据、没有运行中的 IO/SQL 线程、server_uuid 可能和 donor 冲突——这些都不会报错,但会让后续主从同步直接失效。











