clone instance快速部署需满足插件active、权限分治(donor需backup_admin+replication slave,recipient需clone_admin)、clone_valid_donor_list正确设置、配置完全对齐、datadir为空且克隆后手动删除auto.cnf重置server_uuid。

直接用 CLONE INSTANCE 拉物理快照是最快路径,但升级后不能直接开干——插件默认不启用、权限模型已变、auto.cnf 冲突风险陡增,跳过任一检查都会卡在报错或静默失败。
确认 clone 插件状态为 ACTIVE,不是“装了就行”
MySQL 8.0 升级后,mysql_clone.so 文件虽存在,但插件不会自动加载。执行 SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'clone';,结果中 PLUGIN_STATUS 必须是 ACTIVE;若为 DISABLED 或空行,说明没真正激活。
- 动态安装命令
INSTALL PLUGIN clone SONAME 'mysql_clone.so';只对当前会话有效,重启 mysqld 后失效 - 永久生效必须改
my.cnf:[mysqld] plugin-load-add = mysql_clone.so clone = FORCE_PLUS_PERMANENT
然后systemctl restart mysqld(reload不起作用) - 检查
SELECT @@plugin_dir;返回路径下是否存在mysql_clone.so,且 MySQL 进程用户有读+执行权限(chmod 755) - SELinux 或 AppArmor 可能拦截,临时用
setenforce 0排查
donor 和 recipient 权限必须分治,混用账号必报 ERROR 3095
克隆不走复制权限体系,REPLICATION SLAVE 对 CLONE INSTANCE 完全无效。升级后权限粒度更细,必须严格按角色配权:
- donor(源库)用户需同时具备:
BACKUP_ADMIN(必需)、REPLICATION SLAVE(后续配主从用) - recipient(目标库)用户必须有:
CLONE_ADMIN(隐含BACKUP_ADMIN+SHUTDOWN),只给BACKUP_ADMIN会直接报ERROR 3095 (HY000): Insufficient privileges - 账号必须在 donor 和 recipient 上都存在、密码完全一致;执行
GRANT后务必FLUSH PRIVILEGES - donor 的
bind_address不能是127.0.0.1,得设为0.0.0.0或具体内网 IP,并放行防火墙/云安全组的 3306 端口
克隆后必须手动处理 server_uuid 和复制参数,否则无法连主库
克隆是物理拷贝,auto.cnf 文件原样复制,导致 recipient 启动后 @@server_uuid 与 donor 完全相同——这是最常被忽略的致命断点,CHANGE REPLICATION SOURCE TO 会直接拒绝连接。
- recipient 克隆完成并自动重启后,第一件事:删除
/var/lib/mysql/auto.cnf(Linux)或对应datadir下的同名文件 - 重启 MySQL,执行
SELECT @@server_uuid;确认已生成新值;若仍相同,说明auto.cnf没删干净 -
my.cnf中必须提前配好唯一server_id、gtid_mode = ON、log_bin = ON,否则克隆后复制线程无法启动 - 用
SELECT BINLOG_FILE, BINLOG_POSITION FROM performance_schema.clone_status;查 donor 的位点,再手动执行CHANGE REPLICATION SOURCE TO ... SOURCE_AUTO_POSITION = 1;
配置项和存储路径必须严格对齐,否则克隆中途报错
MySQL 8.0 升级后对一致性校验更严,以下任意一项不匹配,克隆就会在 FILE COPY 或 REDO COPY 阶段中断并报错:
- donor 与 recipient 的小版本号(如 8.0.33 和 8.0.34)必须完全相同(8.0.37+ 才支持跨小版本)
-
innodb_file_per_table必须为ON(recipient 强制要求,否则报ER_CLONE_DONOR_NOT_SUPPORTED) -
innodb_page_size、character_set_server、collation_server必须完全一致 - recipient 的
datadir必须为空目录,且磁盘剩余空间 ≥ donor 当前数据大小 × 1.2(预留 redo 归档空间) - 若 donor 使用了独立表空间(
CREATE TABLE ... TABLESPACE ts_name),recipient 上对应路径必须存在且可写,否则报ERROR 1086 (HY000)
真正麻烦的不是命令怎么写,而是所有条件必须同时满足——插件状态、权限分治、配置对齐、auto.cnf 处理,缺一不可。任何一个环节漏掉,CLONE INSTANCE 就不是慢,而是根本走不下去。











