mysql clone 插件架构、特性、参数、及使用方法

一、Clone Plugin 插件介绍

特点

1、Clone Plugin 是 MySQL 8.0.17 版本推出一个插件,用于进行数据库的物理备份。

2、 Clone Plugin 只备份 InnoDB 存储引擎表,其他类型表不进行备份。

架构

在这里插入图片描述

从上图可以发现,Clone Plugin 很不同的一点是 redo copy 的过程非常短,不需要备份30分钟内所产生的所有 redo log。

1、这意味着通过 Clone Plugin 恢复物理备份的速度要远远快于 Xtrabackup 。

2、在 redo copy 前有一个 page copy,这是 Xtrabackup 所没有的步骤。

3、也就是在备份完 InnoDB 磁盘文件后,Clone Plugin 还会对 Buffer Pool 中的脏页进行备份,这样就可以减少对于 redo 日志的拷贝。

4、脏页的备份会先对(space,page_no)排序,以比较顺序的方式写入备份文件。

5、同时,为了记录在拷贝脏页过程中,又有新的变化产生,所以在 file copy 后启用 page tracking 的机制,记录当前已经 Checkpoint 完成的 LSN。

6、后续的redo copy 只需要拷贝该 LSN 之后的重做日志即可。

总结

优点

对比 Xtrabackup,Clone Plugin 额外实现了以下几个功能:

  1. page copy:拷贝脏页,减少重做日志的备份量,提升恢复速度;

  2. page tracking:记录 LSN 的变化,用于后续重做日志的备份;

  3. redo archiving:备份重做日志,避免重做日志文件写入太快,覆盖写入无法备份的场景,这点Xtrabackup就无能为力了;

    4.Clone Plugin 的一大优势是远程备份。

缺点

1.进行远程克隆的两个 MySQL 实例版本号必须完全一样。5.7 和 8.0 显然不行,8.0.19 和 8.0.20 小版本不同也不行。

2.MySQL 8.0.27 版本前不允许 DDL 操作,DDL 操作会被阻塞,甚至影响后续的 SELECT查询操作;MySQL 8.0.27 版本已经可以在备份过程中进行并发的 DDL 操作。(由clone_block_ddl参数控制)

3.Clone Plugin 不备份 MySQL 配置文件,而 Xtrabackup 是备份的。

4.克隆插件不支持克隆二进制日志。

5.不支持连接中间件(VIP)地址

二、安装clone插件

1、数据库里面执行加载clone插件

INSTALL PLUGIN clone SONAME 'mysql_clone.so';

2、配置文件里面添加

[mysqld]
plugin-load-add=mysql_clone.so

3、检查插件状态

SELECT PLUGIN_NAME, PLUGIN_STATUS
       FROM INFORMATION_SCHEMA.PLUGINS
       WHERE PLUGIN_NAME = 'clone';

在这里插入图片描述

三、克隆数据
1、本地克隆
克隆用户需要有的权限 BACKUP_ADMIN
GRANT BACKUP_ADMIN ON *.* TO 'clone_user';

创建数据库的用户有权限写到的宿主机目录
CLONE LOCAL DATA DIRECTORY = '/tmp/cs'; #cs是自定义的目录

基于克隆数据恢复数据库(启动的时候指定数据目录 clone插件不会clone 配置文件)

mysqld_safe --datadir=/tmp/cs
2、远程克隆

目标端执行

set global clone_valid_donor_list='IP:端口';   #集群对应灾备库ip:端口
clone instance from 用户名@IP:端口 identified by '密码';

远程克隆到某个目录

CLONE INSTANCE FROM '用户'@'':端口
       IDENTIFIED BY '密码'
       DATA DIRECTORY = '/tmp/cs';  #cs是自定义的目录

远程克隆直接库里面执行

SET GLOBAL clone_valid_donor_list = ‘245.0.2.99:3306’;

set global super_read_only=off ;

CLONE INSTANCE FROM ‘root’@‘245.0.2.99’:3306 IDENTIFIED BY ‘l@fZc1dCbeikqcp0’ ;

加密传输方式

修改参数

clone_ssl_ca=/path/to/ca.pem
clone_ssl_cert=/path/to/client-cert.pem
clone_ssl_key=/path/to/client-key.pem

使用ssl

mysql> CLONE INSTANCE FROM 'user'@'example.donor.host.com':3306
       IDENTIFIED BY 'password'
       DATA DIRECTORY = '/path/to/clone_dir'
       REQUIRE SSL;
四、报错

如果克隆报错了查看错误返回

SELECT STATE, ERROR_NO, ERROR_MESSAGE FROM performance_schema.clone_status;

参数

clone_max_concurrency        # 变量定义可以使用的最大线程数产生。
clone-block-ddl              #开启后clone期间源端独占ddl锁
clone-buffer-size            #clone期间使用的最大内存,默认值为4MB。
clone-ddl-timeout            #clone期间是否要等待获取ddl锁,设置为0表示不等待。(遇到锁报错退出)
clone-donor-timeout-after-network-failure  #定义源端多长时间要重新连接并重新启动克隆操作。(备份失败后多少分钟重试)
clone-enable-compression     #在网络层启用数据压缩 远程克隆操作。
clone-max-concurrency        #定义远程连接最大能用的线程数量。
clone-max-data-bandwidth     #定义单个线程每秒传输数据传输速率(单位 MB  0表示不限制)。
clone-max-network-bandwidth  #定义最大网络使用情况,每秒多少MB。
clone-ssl-ca=file_name       #指定证书颁发机构 (CA) 文件的路径。
clone-ssl-cert=file_name     #指定公钥证书的路径。
clone-ssl-key=file_name      #指定私钥文件的路径。
clone-valid-donor-list=value #目标端修改,填写源端的地址IP。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值