clone instance 能在5–10分钟内完成tb级从库初始化,前提是donor和recipient插件状态均为active、权限严格分离(donor需backup_admin+replication slave,recipient需clone_admin)、配置对齐(如clone_valid_donor_list、bind_address=0.0.0.0、文件系统支持硬链接),且克隆后必须手动删除auto.cnf并重置server_uuid与server_id,否则主从同步将因uuid冲突失败。

CLONE INSTANCE 能在 5–10 分钟内完成 TB 级从库初始化,但前提是 donor 和 recipient 两端插件状态均为 ACTIVE、权限严格分离、配置完全对齐——跳过任一环节就会卡住或静默失败。
确认 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,否则权限不生效 - 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 端口
克隆完成后必须手动清理 server_uuid 和 auto.cnf
CLONE INSTANCE 执行完,recipient 实例会主动退出并由 systemd/mysqld_safe 拉起——这是设计行为,不是异常。但以下三点极易被忽略:
-
auto.cnf中的server-uuid不会被覆盖,必须手动删掉让 MySQL 重生成,否则后续CHANGE REPLICATION SOURCE TO会因 UUID 冲突拒绝连接 -
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', ...
克隆前 recipient datadir 必须为空且支持硬链接
远程克隆默认会清空 recipient 的datadir 并替换为 donor 数据,但这个过程依赖底层文件系统支持硬链接(如 ext4、xfs):
- 执行前务必确认
datadir为空目录(非空会报ERROR 3862 (HY000): Directory not empty) - 不要用 NFS 或某些容器卷(如 Docker 默认 overlay2),它们不支持硬链接,会导致克隆中途失败或数据损坏
- 建议用
df -T /var/lib/mysql确认文件系统类型,避免踩坑 - 克隆过程中 donor 仅加轻量备份锁,不影响 DML,但任何 DDL 都会阻塞克隆——所以操作前最好暂停 DDL 变更
最常被跳过的动作是删 auto.cnf 和重设 server_id:克隆完直接配主从,90% 的同步失败都源于这两个值没改。别信“自动适配”,它真不自动。











