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

能,但必须满足版本一致、权限分治、配置对齐、网络可达四个硬性条件,缺一不可;插件状态须为 ACTIVE,innodb_file_per_table = ON,donor 与 recipient 权限分设且账号双端存在,recipient 需预设 clone_valid_donor_list,bind_address 不能为 127.0.0.1,克隆后须手动配置复制参数并校验 server_uuid。
确认 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,且不能漏掉=;升级后首次启动不能直接加该配置,得先正常启一次再重启生效
远程克隆必须 donor 和 recipient 分开配权,不能混用一个账号
克隆不是复制,不走 REPLICATION SLAVE 权限体系。源(donor)和目标(recipient)角色严格分离,权限不能复用:
- donor 实例上用户(如
'cloner'@'192.168.1.10')必须有:BACKUP_ADMIN(必需)、REPLICATION SLAVE(后续配主从用) - recipient 实例上用户(如
'cloner'@'%')必须有:CLONE_ADMIN(隐含SHUTDOWN,因克隆完要自动重启) - 两边账号必须都存在、密码一致;执行
GRANT后必须FLUSH PRIVILEGES - 若使用 SSL 连接,需确保双方
require_secure_transport=ON时,该用户也启用了REQUIRE SSL
执行远程克隆并立即启动复制
克隆完成后,recipient 实例自动重启(这是设计行为),数据目录被完全覆盖,但 auto.cnf 中的 server-uuid 会被保留——这点至关重要,否则后续启动复制会因 UUID 冲突拒绝连接 master。
- 在 recipient 实例上执行:
CLONE INSTANCE FROM 'cloner'@'192.168.1.10':3306 IDENTIFIED BY 'StrongPass123!' - 克隆期间 donor 实例仍可读写,但会短暂加全局读锁(毫秒级),不影响业务
- 克隆结束、recipient 自动重启后,立刻执行:
CHANGE REPLICATION SOURCE TO SOURCE_HOST='192.168.1.10', SOURCE_USER='repl', SOURCE_PASSWORD='xxx', SOURCE_AUTO_POSITION=1(注意用你的复制账号,不是cloner) - recipient 重启后第一件事:
rm -f /var/lib/mysql/auto.cnf(Linux 路径,Windows 是datadir下同名文件);重启 MySQL 后检查SELECT @@server_uuid,确认与 donor 不同
克隆完成后 recipient 自动重启,但 auto.cnf 和 server_uuid 不会更新
这是最常被忽略的致命断点:克隆是物理拷贝,auto.cnf 文件原样复制,导致 server_uuid 冲突,后续 CHANGE REPLICATION SOURCE TO 直接拒绝连接。
-
gtid_executed是 donor 克隆时刻的快照,但binlog相关配置(如log_bin、binlog_format)不会复制,需提前在 recipient 的my.cnf中配好 -
SHOW SLAVE STATUS必为空,必须手动执行CHANGE REPLICATION SOURCE TO,且source_host必须指向 donor IP,不能写localhost或127.0.0.1 -
server_id必须唯一,gtid_mode = ON,log_bin开启——这些不是克隆能带过来的,必须提前配妥,否则START REPLICA会失败
真正麻烦的不是克隆本身,而是克隆后那一连串“必须手动补全”的配置项:删 auto.cnf、重设 server_id、核对 gtid_mode、补 CHANGE REPLICATION SOURCE TO ——少一步,复制就起不来。











