<span>MySQL8.0.17的数据克隆clone功能</span>
################
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
####################