真实装上Clone Plugin,用一条命令把整个本机实例的数据目录克隆一份,启动成一个全新可用的独立实例,核对数据是否真的分毫不差。
代码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';
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 ← 真实和源实例完全一致
每一步都是本文上面用真实的Clone Plugin跑出来的原始结果。