MySQL使用Clone Plugin快速在线搭建从库

1 业务背景
在实际业务中,经常碰到需要重新搭建mysql从库的场景。除了常用的MySQL主从复制搭建(xtrabackup、mydumper备份恢复方案)外,本文介绍另外一种Clone Plugin方案,重建从库操作更简单,速度更快。
2 版本
mysql数据库版本须在8.0.17及之后,因Clone Plugin是8.0.17引入的一个新功能。
以下测试环境为CentOS7.9+MySQL8.0.26。
操作系统版本
#cat /etc/redhat-release

数据库版本

3 插件安装
有两种安装方式,所有库执行
一为动态加载的方式
root@localhost 17:37: [(none)]> install plugin clone soname'mysql_clone.so';
二为修改数据库配置文件my.cnf,此方法需要重启数据库:
vim my.cnf ... [mysqld] #Clone Plugin plugin-load-add=mysql_clone.so clone=FORCE_PLUS_PERMANENT ...
重启mysql
$service mysql restart
status状态为ACTIVE表示插件安装成功

涉及参数优化说明
clone_autotune_concurrency:默认为ON,用于在远程克隆操作时,额外生成动态线程,以优化传输速度。仅适用于接收实例。 clone_max_concurrency:定义远程克隆操作时,动态生成的线程的最大限制。和上面的参数有关。 clone_buffer_size:仅适用于本地克隆操作,定义在数据传输期间使用的缓冲期大小。默认为4M,较大的缓冲区可能会提高性能。 clone_ddl_timeout:定义在克隆操作时,等待备份锁定的超时时间,单位为秒,适用于接收和远程MySQL实例。需要注意的是,克隆操作不能与DDL操作同时进行。且克隆操作会上一个备份锁。设置为0时,如果有同时的DDL操作,那么克隆将会立即失败。 clone_enable_compression:仅适用于接收实例。该参数定义在远程克隆期间是否开启网络层的数据压缩,以节省带宽,提高传输速率。 clone_max_data_bandwidth:定义远程克隆操作的单个线程最大传输速率,以每秒(MB)为单位。如果有4个线程,那么总的传输速率就是每秒4MB。设置为0表示无限制。 clone_max_network_bandwidth:定义远程克隆操作的最大网络传输速率,同样以每秒(MB)为单位。该参数仅适用于接收实例。 clone_valid_donor_list:在远程克隆操作时,定义的远程实例地址,仅在接收实例上设置。
4 主从搭建
主库操作
创建用户并赋权,backup_admin是克隆操作必须权限,REPLICATION SLAVE是复制所必须的权限。如果已有复制权限用户,则仅需对该用户赋backup_admin权限即可。
root@localhost 17:47: [(none)]> create user 'repl'@'%' identified by '密码'; Query OK, 0 rows affected (0.00 sec) root@localhost 17:48: [(none)]> grant backup_admin on *.* to 'repl'@'%'; Query OK, 0 rows affected (0.00 sec)
从库操作
创建用户并赋clone_admin权限,隐式含有backup_admin(阻塞DDL)和shutdown(重启实例)权限。如果已有复制权限用户,则仅需对该用户赋clone_admin权限即可。
root@localhost 17:51: [(none)]> create user 'repl'@'%' identified by '密码'; Query OK, 0 rows affected (0.01 sec) root@localhost 17:51: [(none)]> grant clone_admin on *.* to 'repl'@'%'; Query OK, 0 rows affected (0.00 sec)
从库发起克隆命令,设置主库ip为白名单
root@localhost 17:57: [(none)]> set global clone_valid_donor_list = '172.21.55.101:3306'; Query OK, 0 rows affected (0.00 sec) root@localhost 18:16: [(none)]> clone instance from 'repl'@'172.21.55.101':3306 identified by '密码'; Query OK, 0 rows affected (17.92 sec)
查看clone进度及状态
root@localhost 18:17: [(none)]> SELECT STAGE, STATE, CAST(BEGIN_TIME AS TIME) 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(POW
MySQL使用Clone Plugin快速在线搭建从库
1 业务背景在实际业务中,经常碰到需要重新搭建mysql从库的场景。除了常用的MySQL主从复制搭建(xtrabackup、mydumper备份恢复方案)外,...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



