################

MySQL8.0.17推出了一个重量级的功能:Clone Plugin,可以对mysql实例进行本地或远程clone

有两方面作用:快速搭建复制和快速备份。

 

 

安装clone插件:

linux上执行:

mysql> install plugin clone soname 'mysql_clone.so';


windows上执行:(需要将so换成dll)

mysql> install plugin clone soname 'mysql_clone.dll';

 

检查插件是否激活:

mysql>  select plugin_name, plugin_status  from information_schema.plugins where plugin_name = 'clone';
+-------------+---------------+ | plugin_name | plugin_status | +-------------+---------------+ | clone | ACTIVE | +-------------+---------------+ 1 row in set (0.00 sec) mysql>

 

 

本地克隆:

windows上执行:(需要将\换成/)

mysql> clone local data directory ="d:/data/apple";
Query OK, 0 rows affected (3.71 sec)

mysql>


linux上执行:

mysql> clone local data directory ="/home/work/apple";

 

 

路径:directory=/home/work/apple

1)路径必须是绝对路径,其中apple必须是不存在该目录

2)最后生成的数据,类似xtrabackup已经apply-log之后的data目录数据,可直接用于MySQL启动

 

 远程克隆:

 

假设将源实例10.10.10.10:3306的数据克隆到目标实例10.10.10.20:3306上:

1)在源实例10.10.10.10:3306上创建克隆账号:

mysql> create user 'clone_src'@'%' identified by '123456';

mysql> grant backup_admin on *.* to 'clone_src'@'%';

2)在目标实例10.10.10.20:3306上创建克隆账号:

mysql> create user 'clone_dst'@'%' identified by '123456';

mysql> grant clone_admin on *.* to 'clone_dst'@'%';


3)在目标实例10.10.10.20:3306上执行克隆操作:

mysql> set global clone_valid_donor_list = '%:3306';

mysql> clone instance from 'clone_src'@'%':3306  identified by '123456' data directory = '/home/work/mysql_3306/tmp/data';

 

 

 查看克隆进度:

# 在目标实例上执行:

mysql> select 
state,

cast(begin_time as datetime) as "start time",

case when end_time is null then lpad(sys.format_time(power(10,12) * (unix_timestamp(now()) - unix_timestamp(begin_time))), 10, ' ')

else lpad(sys.format_time(power(10,12) * (unix_timestamp(end_time) - unix_timestamp(begin_time))), 10, ' ')

end as duration,
source,destination,
binlog_file,binlog_position,
gtid_executed from
performance_schema.clone_status \G;

 

 要求与约束:

 

1)操作系统版本必须一致;

2)mysql主版本号、发行级别、发行系列版本号都必须一致,mysql8.0.19->mysql8.0.20 这种不支持

3)目前仅支持InnoDB引擎,其他引擎不支持,如果有非InnoDB引擎信息会在日志里面显示

4)支持压缩表clone操作,但文件系统的block size需要保持一致

5  在8.0.27之前不支持DDL操作(因为有backup lock),在8.0.27版本及以后,允许DDL操作,但不允许tablespace的操作(比如import、export)

 

 clone功能与xtrabackup备份工具性能比较:

操作系统 CentOS7.3
CPU类型 Silver4210*2
内存型号与大小 DDR4,16G
磁盘类型 SSD固态硬盘
实例数据量 500G
xtrabackup的xbstream流式备份至同机房其他机器的耗时 20分钟
MySQL的remote clone克隆至同机房其他机器的耗时 7分钟

 

 

 https://developer.aliyun.com/article/714009?spm=a2c6h.13262185.0.0.5ab07667eXfKgs

 

####################