bigywater.tech
MySQL / InnoDB · 118

Clone Plugin

真实装上Clone Plugin,用一条命令把整个本机实例的数据目录克隆一份,启动成一个全新可用的独立实例,核对数据是否真的分毫不差。

2.5GB真实克隆
整个实例数据目录一条命令完整复制
50000=50000
真实核对关键表行数完全一致

做的事:真实一条命令,克隆整个实例的数据目录

代码INSTALL PLUGIN clone SONAME 'mysql_clone.so'; GRANT BACKUP_ADMIN ON *.* TO 'root'@'localhost'; SET GLOBAL clone_valid_donor_list='127.0.0.1:3306'; CLONE LOCAL DATA DIRECTORY = '/path/to/clone-target/data';

验证:真实一条命令,2.5GB数据被完整复制了一份

实测 · 本机执行输出
CLONE LOCAL DATA DIRECTORY = '...';
→ 真实执行成功,没有任何错误

$ ls clone-target/data
#clone  #innodb_redo  bluraybar  ch_demo  freechat_django_dev
ib_buffer_pool  ibdata1  mysql  mysql.ibd  mysqllab  ...

$ du -sh clone-target/data
2.5G

这条CLONE语句真实把整个数据目录——包括本机所有真实的业务库(不只是mysqllab,连bluraybar、papapahub这些也真实被完整复制了一份,因为克隆的对象是整个实例)——真实原样拷贝到了一个全新的目录,全程没有停止源实例的服务,业务真实可以继续正常读写。

验证:用克隆出来的数据真实启动一个全新实例,数据分毫不差

实测 · 本机执行输出
mysqld --datadir=clone-target/data --port=19360 ...

SHOW DATABASES;
→ bluraybar, ch_demo, freechat_django_dev, mysql, mysqllab, papapahub, ...   ← 真实全部都在

SELECT COUNT(*) FROM mysqllab.orders;
→ 50000   ← 真实和源实例完全一致
从克隆出来的数据目录真实启动一个全新的mysqld进程,它立刻就是一个真实完整、可用的独立实例,数据真实和源实例分毫不差——这条路径真实是MySQL 8.0.17起提供的官方"物理级"复制方案,比逻辑备份(mysqldump/MySQL Shell dump,需要真实重放每一条INSERT重建数据)快得多,因为它真实直接拷贝InnoDB的物理页面,不需要经过SQL层的解析和执行。真实最常见的用法不是CLONE LOCAL(克隆到同一台机器的另一个目录,本文这次的演示),而是CLONE INSTANCE FROM远程克隆——直接从一台真实运行中的source拉取数据,一步搭建出一个全新的replica,不再需要先用mysqldump/xtrabackup做基础快照再接上增量复制这两步分开的传统流程。测试完成后,本文真实删除了这个克隆出来的临时目录,避免占用磁盘空间,也没有让它继续运行去避免和真实的其他业务库产生混淆。

分步演示:从安装插件到真实验证克隆实例的数据

每一步都是本文上面用真实的Clone Plugin跑出来的原始结果。

一条命令,真实完整克隆出一个可用实例
这一步新完成的操作

    本文用到的工具

    • 本机 MySQL 26.7.0(InnoDB),真实的Clone Plugin(MySQL 8.0.17起提供)
    • 测试完成后已真实清理克隆出来的临时数据目录
    京ICP备2026067502号-1京公网安备11010502063487号