Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL8.0克隆插件

MySQL8.0克隆插件 (Clone Plugin)的实现

作者:gjc592

本文主要介绍了MySQL8.0克隆插件 (Clone Plugin)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

MySQL 8.0 的克隆插件 (Clone Plugin) 是一项从 MySQL 8.0.17 版本开始引入的强大功能,它允许你便捷地创建本地或远程MySQL实例数据的物理快照。本文将详细介绍其用途、使用方法、限制以及应用场景。

1. 克隆插件简介

克隆插件用于创建MySQL实例的物理快照。这个快照包含了存储在InnoDB中的完整数据目录,如表、表空间、数据字典元数据等,使得克隆后的数据立即可用。它主要支持两种模式:

两者的对比如下:

特性

本地克隆

远程克隆

数据源

本地MySQL实例

远程MySQL实例 (捐赠者)

目标位置

同一服务器上的指定目录

接受者实例的数据目录或指定目录

主要权限

BACKUP_ADMIN

捐赠者需BACKUP_ADMIN,接受者需CLONE_ADMIN

网络要求

捐赠者与接受者之间网络可达

2. 如何使用克隆插件

2.1  安装插件

首先,需要在MySQL实例上安装克隆插件。你可以通过SQL语句动态安装,或将其配置为随服务器启动自动加载。

mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'clone';Empty set (0.19 sec)mysql> INSTALL PLUGIN clone SONAME 'mysql_clone.so';Query OK, 0 rows affected (0.14 sec)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.01 sec)

若希望插件永久生效,可在my.cnf配置文件中添加:

[mysqld]plugin-load-add=mysql_clone.soclone=FORCE_PLUS_PERMANENT

2.2  配置用户权限

执行克隆操作需要特定的权限,本地复制和远程复制权限不同:

本地克隆:执行克隆操作的用户需要BACKUP_ADMIN权限

GRANT BACKUP_ADMIN ON *.* TO 'clone_user';

远程克隆:捐赠者(数据源)用户需要BACKUP_ADMIN权限;接受者(目标)用户需要CLONE_ADMIN权限(该权限隐含了BACKUP_ADMIN和SHUTDOWN权限)

-- 在捐赠者上执行CREATE USER 'donor_user'@'%' IDENTIFIED BY 'password';GRANT BACKUP_ADMIN ON *.* TO 'donor_user'@'%';
-- 在接受者上执行CREATE USER 'recipient_user'@'%' IDENTIFIED BY 'password';GRANT CLONE_ADMIN ON *.* TO 'recipient_user'@'%';

2.3  执行克隆操作

1) 本地克隆示例:

CLONE LOCAL DATA DIRECTORY = '/path/to/clone_dir';

/path/to/clone_dir必须是绝对路径,且该目录不能已存在,但其父目录必须存在。

例如:

先创建目录

mkdir -p /data/mysql/mysql3309chown -R mysql:mysql /data/mysql/mysql3309

/data/mysql/mysql3309/data必须是绝对路径,且该目录不能已存在,但其父目录(/data/mysql/mysql3309)必须存在。

执行克隆

CLONE LOCAL DATA DIRECTORY = '/data/mysql/mysql3309/data';

克隆完毕后可见已经生成数据目录

2) 远程克隆示例:

在接受者实例上执行以下命令:

-- 首先,设置有效的捐赠者列表SET GLOBAL clone_valid_donor_list = 'donor_host_ip:3306';
-- 然后,执行远程克隆CLONE INSTANCE FROM 'donor_user'@'donor_host_ip':3306 IDENTIFIED BY 'password';

远程克隆操作完成后,接受者MySQL实例通常会自动重启。

2.4 监控克隆操作

如果库比较大,可以通过查询performance_schema中的相关表来监控克隆进度和状态。

-- 查看克隆进度SELECT STAGE, STATE, END_TIME FROM performance_schema.clone_progress;
-- 查看克隆最终状态SELECT * FROM performance_schema.clone_status;

3. 注意事项

使用克隆插件时,需要注意以下限制:

4. 总结

MySQL 8.0的克隆插件是一个功能强大且高效的数据库克隆工具,主要应用场景:

到此这篇关于MySQL8.0克隆插件 (Clone Plugin)的实现的文章就介绍到这了,更多相关MySQL8.0克隆插件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文