clone instance 能在5–10分钟内完成tb级从库初始化,前提是插件状态为active、 donor需backup_admin权限、recipient需clone_admin权限、两端版本及架构完全一致、server-uuid须手动更新、datadir必须为空且支持硬链接。

CLONE INSTANCE 能在 5–10 分钟内完成 TB 级从库初始化,但前提是插件真正激活、权限严格分治、配置完全对齐——跳过任一环节都会卡住或静默失败。
确认 clone 插件状态为 ACTIVE,不是 DISABLED 或空
很多人执行了 INSTALL PLUGIN clone SONAME 'mysql_clone.so' 就以为万事大吉,结果 CLONE INSTANCE 报错或卡住。关键要看实际状态:
- 必须运行
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'clone',返回值中PLUGIN_STATUS必须是ACTIVE - 若为
DISABLED:常见原因是mysql_clone.so文件不存在(检查SELECT @@plugin_dir路径下是否有该文件)、MySQL 启动用户无读+执行权限(chmod 755)、SELinux 拦截(临时用setenforce 0验证) - 若查不到记录:说明插件根本没加载,
my.cnf中需明确写plugin-load-add = mysql_clone.so,且不能漏掉=;升级后首次启动不能直接加该配置,得先正常启一次再重启生效
远程克隆必须两端用户权限分离,不能混用
克隆不是复制,不走 REPLICATION SLAVE 权限体系。源(donor)和目标(recipient)要各自拥有不同权限,且账号必须在两边都存在、密码一致:
- donor(主库)上的克隆用户需
BACKUP_ADMIN(必需)+REPLICATION SLAVE(后续配主从用) - recipient(从库)上的克隆用户需
CLONE_ADMIN(隐含BACKUP_ADMIN和SHUTDOWN),仅给BACKUP_ADMIN不行 - 执行
GRANT CLONE_ADMIN ON *.* TO 'cloner'@'%'后必须FLUSH PRIVILEGES,否则权限不生效 - donor 的
bind_address不能是127.0.0.1,得设为0.0.0.0或具体内网 IP,并确保防火墙放行 3306 端口
克隆完成后自动重启,但 server-uuid 保留、复制配置全丢失
CLONE INSTANCE 执行完,recipient 实例会主动退出并由 systemd/mysqld_safe 拉起——这是设计行为,不是异常。但以下三点极易被忽略:
- auto.cnf 中的
server-uuid不会被覆盖,必须手动改掉,否则后续CHANGE REPLICATION SOURCE TO会因 UUID 冲突拒绝连接 donor -
gtid_executed是克隆时 donor 的快照值,但binlog相关配置(如log_bin、binlog_format)不会复制,需提前在 recipient 的my.cnf中配好 -
SHOW SLAVE STATUS必为空,必须手动执行CHANGE REPLICATION SOURCE TO SOURCE_HOST='x.x.x.x', SOURCE_USER='repl', SOURCE_PASSWORD='xxx', SOURCE_AUTO_POSITION=1,再START REPLICA
克隆卡住时,优先查 performance_schema.clone_status
别只盯着命令行是否返回,CLONE INSTANCE 卡在 Stage: clone_type 或 Stage: apply_log 时,真实原因往往藏在状态表里:
- 运行
SELECT * FROM performance_schema.clone_status\G,看STATE和ERROR_NUMBER字段,比如ER_CLONE_DONOR_NOT_SUPPORTED通常意味着 donor 的innodb_file_per_table = OFF - 目标
datadir剩余空间必须 ≥ donor 的ibdata1+ 所有.ibd文件总大小 × 1.2(克隆过程写临时日志) - 版本必须完全一致:
SELECT VERSION()要比对到小数点后第三位(如 8.0.33 → 8.0.33 可行,8.0.33 → 8.0.34 不行);x86_64 不能克隆到 ARM64
克隆不是“一键复制”,它是物理快照搬运,依赖底层一致性。最常出问题的地方不在命令本身,而在 donor/recipient 的配置对齐、权限分治、磁盘与网络准备——这些细节没对齐,CLONE INSTANCE 就会停在某个 stage 不动,连错误都不报。











