Clone 插件是什么
MySQL 8.0.17 起内置 Clone 插件,可以从主库一键克隆物理数据(包含数据字典与 GTID 状态),既不需要停业务,也不需要手工 prepare 与 copy-back,是新建从库最省事的方式。克隆完成后接收端会自动重启,之后启动复制即可开始追增量。
基本信息
| 版本要求 | 两端均需 MySQL 8.0.17 及以上 |
|---|---|
| 前置条件 | 两端都安装 clone 插件 |
| 权限要求 | 源端账号需 BACKUP_ADMIN |
| 自动携带 | 克隆包含 gtid_executed,一般配合 AUTO_POSITION=1 |
| 限制 | 要求 InnoDB 表,部分特性与加密配置有限制 |
典型使用场景
- 新建从库:比逻辑导出导入快得多,且不易出错
- 大库扩容:数据量大时克隆能从物理层完成同步
- 测试环境搭建:快速复制一份与生产一致的数据
- 迁移演练:提前验证克隆流程与耗时
- 故障恢复:主库数据完好时快速重建一个副本
- 核对环境:克隆后对比版本与参数是否与源端一致
克隆流程
克隆流程
-- 主库(数据源)安装插件并授权
INSTALL PLUGIN clone SONAME 'mysql_clone.so';
GRANT BACKUP_ADMIN ON *.* TO 'clone_user'@'10.0.%';
-- 从库(接收端)安装插件后执行克隆
INSTALL PLUGIN clone SONAME 'mysql_clone.so';
CLONE INSTANCE FROM 'clone_user'@'10.0.0.10':3306 IDENTIFIED BY 'Str0ng#Clone!';
-- 克隆完成后接收端自动重启,重启后启动复制
START REPLICA;
SHOW REPLICA STATUS\G
-- 观察进度(克隆过程中)
SELECT stage, state, begin_time, end_time FROM performance_schema.clone_status;步骤与验证点
| 步骤 | 动作 | 验证什么 |
|---|---|---|
| 安装插件 | 两端 INSTALL PLUGIN clone | SELECT * FROM information_schema.plugins 可见 |
| 授权 | 源端授予 BACKUP_ADMIN | SHOW GRANTS 确认权限 |
| 执行克隆 | 接收端 CLONE INSTANCE FROM | clone_status 显示 Completed |
| 自动重启 | 接收端重启并加载克隆数据 | 实例可正常启动 |
| 启动复制 | START REPLICA 并核对状态 | 两个线程正常、无错误 |
克隆过程接收端会清空并重启,确保是对新实例操作。
克隆会覆盖接收端的现有数据:执行前确认这台实例上没有需要保留的库与账号,并核对两端版本与加密配置,避免克隆失败后又失去原有数据。
克隆前先核对接收端的磁盘空间与版本:传输数据量与数据文件规模相当,空间不足会在中途失败,而失败时通常已经进入清空数据的阶段。