电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

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

来源:金蝶云社区作者:金蝶2024-09-231

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格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信