MySQL8快速克隆插件使用指南
# 使用 MySQL 8.0 克隆插件快速搭建主从复制
MySQL 8.0 的 clone 插件提供了一种高效的方式来克隆数据实例,便于快速创建 MySQL 实例,并支持主从复制和组复制的搭建。本文将介绍如何使用 MySQL 8.0 clone 插件来快速搭建主从复制。
# 环境准备
在开始之前,请确保您的环境符合以下要求:
- MySQL 版本:8.0.19 或更高(MySQL 8.0.17 版本后才引入 clone 插件)
- 主库 IP 地址:192.168.56.201
- 从库 IP 地址:192.168.56.202
本文将通过实例操作,演示如何从主库克隆数据到从库,并在克隆完成后搭建主从复制。
# 1. 安装 clone 插件
# 在主库执行
-- 安装克隆插件
INSTALL PLUGIN clone SONAME 'mysql_clone.so';
-- 验证插件安装
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME='clone';
1
2
3
4
5
2
3
4
5
# 在从库执行
-- 安装克隆插件
INSTALL PLUGIN clone SONAME 'mysql_clone.so';
-- 验证插件安装
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME='clone';
1
2
3
4
5
2
3
4
5
# 2. 创建用户并授权
# 在主库执行
-- 创建复制账号
CREATE USER 'repl'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
-- 创建克隆用户并授权
CREATE USER 'clone_user'@'%' IDENTIFIED BY 'clone123456';
GRANT BACKUP_ADMIN ON *.* TO 'clone_user'@'%';
GRANT CLONE_ADMIN ON *.* TO 'clone_user'@'%';
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 在从库执行
-- 只需创建克隆用户并授权
CREATE USER 'clone_user'@'%' IDENTIFIED BY 'clone123456';
GRANT BACKUP_ADMIN ON *.* TO 'clone_user'@'%';
GRANT CLONE_ADMIN ON *.* TO 'clone_user'@'%';
1
2
3
4
2
3
4
# 3. 执行克隆任务
# 在从库执行
-- 设置克隆源(主库地址)
SET GLOBAL clone_valid_donor_list = '192.168.56.201:3306';
-- 开始克隆(从主库克隆数据到从库)
CLONE INSTANCE FROM 'clone_user'@'192.168.56.201':3306 IDENTIFIED BY 'clone123456';
1
2
3
4
5
2
3
4
5
注意:克隆过程中,从库的数据目录将被清空,请确保没有重要数据。执行克隆命令后,从库会自动重启。
# 4. 启动复制
# 在从库执行(重启后)
-- 查看克隆后的 Binlog 文件和位置
SELECT BINLOG_FILE, BINLOG_POSITION FROM performance_schema.clone_status;
-- 查看 GTID 信息
SELECT @@GLOBAL.GTID_EXECUTED;
-- 配置并启动复制
CHANGE MASTER TO
MASTER_HOST='192.168.56.201',
MASTER_PORT=3306,
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_AUTO_POSITION=1;
-- 启动从库复制线程
START SLAVE;
-- 查看从库状态
SHOW SLAVE STATUS\G
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 5. 克隆过程中的状态监控
# 在从库执行
-- 监控克隆状态
SELECT STATE, ERROR_NO, ERROR_MESSAGE FROM performance_schema.clone_status;
-- 监控克隆进度
SELECT STAGE, STATE, END_TIME FROM performance_schema.clone_progress;
1
2
3
4
5
2
3
4
5
# 6. 跨机房传输限速设置
# 在主库执行
-- 限制克隆过程的网络带宽(单位:MB/s)
SET GLOBAL clone_max_network_bandwidth = 20; -- 设置为 20MB/s,相当于 160Mbit/s
1
2
2
# 7. 使用限制
克隆功能的限制包括:
- 克隆期间不允许在主库执行 DDL 操作(如 truncate table)
- 克隆的 MySQL 实例版本必须一致
- 每次只能克隆一个实例
- 不支持克隆 MySQL 配置信息和 Binlog 日志
- 仅支持克隆 Innodb 存储引擎的数据
上次更新: 4/24/2025