可行,但需 donor 和 recipient 双向对齐插件激活(plugin_status 必须为 active)、权限分离(donor 用 backup_admin+replication slave,recipient 用 clone_admin)、白名单设置、bind_address 非 127.0.0.1、防火墙放行,并在克隆后手动删除 auto.cnf 重置 server_uuid,否则主从同步必然失败。

跨网络迁移 MySQL 8.0 实例用 CLONE 插件可行,但不是“发起一条命令就自动完成”,必须 donor(源)和 recipient(目标)双向对齐配置、权限、网络与元数据处理,否则大概率卡在 ERROR 3864 (HY000): Clone Donor connection failed 或静默超时。
确认 clone 插件在 donor 和 recipient 上都永久激活
插件未真正加载是远程克隆失败的首要原因。动态执行 INSTALL PLUGIN clone SONAME 'mysql_clone.so' 只在当前会话有效,MySQL 重启即失效。
- 检查状态:两边都运行
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'clone';,结果中PLUGIN_STATUS必须为ACTIVE - Linux 下确认插件文件存在:
SELECT @@plugin_dir;,然后ls -l看mysql_clone.so是否可读+可执行(属主应为mysql) - 永久启用必须改
my.cnf的[mysqld]段:plugin-load-add = mysql_clone.so和clone = FORCE_PLUS_PERMANENT,改完必须systemctl restart mysqld(reload不触发插件重载)
donor 和 recipient 权限、账号、白名单必须严格分离
克隆不走复制权限体系,不能复用同一个账号,也不能混用权限。recipient 克隆完成后要自动重启,所以 CLONE_ADMIN 隐含 SHUTDOWN;donor 则需 BACKUP_ADMIN 才能提供快照。
- donor 上建用户(如
'clone_donor'@'192.168.0.10'),授予:GRANT BACKUP_ADMIN, REPLICATION SLAVE ON *.* TO 'clone_donor'@'192.168.0.10'; - recipient 上建**另一个**用户(如
'clone_recip'@'localhost'),授予:GRANT CLONE_ADMIN ON *.* TO 'clone_recip'@'localhost'; - recipient 上必须提前设白名单:
SET GLOBAL clone_valid_donor_list = '192.168.0.10:3306';(不能带http://,不能用127.0.0.1代替真实内网 IP) - donor 的
bind_address不能是127.0.0.1,得设成0.0.0.0或具体内网 IP,并确保防火墙/云安全组放行3306端口
克隆后 recipient 必须手动清理 auto.cnf 并校验 server_uuid
克隆是物理拷贝,auto.cnf 文件原样复制,导致 server_uuid 冲突——这是后续配主从时 CHANGE REPLICATION SOURCE TO 直接拒绝连接的最常见原因。
- recipient 完成克隆并自动重启后,立刻执行:
rm -f /var/lib/mysql/auto.cnf(Linux 路径;Windows 是 datadir 下同名文件) - 再重启 MySQL,登录后查:
SELECT @@server_uuid;,确认值与 donor 不同 - 若仍相同,说明
auto.cnf没删干净,或 MySQL 启动时又自动生成了旧值(检查datadir下是否还有残留) -
my.cnf中必须已配好唯一server_id、gtid_mode = ON、log_bin开启,否则克隆完无法直接启主从
远程克隆实际停机时间不可忽略
克隆本身 donor 端只加轻量备份锁(不影响 DML,但阻塞 DDL),看似“无感”;但 recipient 在克隆结束时会自动退出并重启,这个过程就是真实停机点,通常 5–15 秒,且无法跳过。
- 不要被“秒级克隆”宣传误导:TB 级数据在网络传输+解压+重建目录阶段仍需数分钟,取决于磁盘 I/O、网络带宽和
clone_buffer_size设置 -
clone_buffer_size默认 4MB,大库建议调到32M(仅 recipient 端生效,写入my.cnf) - 克隆期间 recipient 的原有数据会被清空(除非指定
CLONE LOCAL DATA DIRECTORY到其他路径),操作前务必确认目标实例无不可丢失数据











