MySQL运维实战之Clone插件(10.1)使用Clone插件
作者:俊达
clone插件介绍
mysql 8.0.17版本引入了clone插件。使用clone插件可以对本地l或远程的mysql实例进行clone操作。clone插件会拷贝innodb存储引擎表,clone得到的是原数据库的一个一致性的快照,可以使用该快照数据来启动新的实例。clone插件还会记录数据库的binlog位点,可以将clone得到的实例作为源实例的备库。可以通过clone插件实习MySQL InnoDB存储引擎数据的物理备份。MySQL Group Replication中可以使用clone插件来初始化新节点的数据。
clone插件支持本地clone和远程clone两种模式。本地clone将clone数据存放在实例所在主机。远程clone涉及到两个实例,提供数据的实例称为捐赠者(Donor),接收数据的实例称为接收者(Recipient)。捐赠者将clone的数据,通过MySQL协议发送给接受者,接受者将数据存放到数据目录。
使用clone插件
安装clone插件
可以在配置文件中配置:
[mysqld]
plugin-load-add=mysql_clone.so
或者通过install plugin命令安装插件:
mysql> install plugin clone soname 'mysql_clone.so';
通过show plugins命令或查询plugins表查看插件状态:
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS-> WHERE PLUGIN_NAME = 'clone';+-------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+-------------+---------------+
| clone | ACTIVE |
+-------------+---------------+
本地clone
本地clone得到的数据文件和原实例(被clone的实例)存放在同一台主机。

使用clone local命令发起本地clone,需要指定clone数据的存放路径。执行clone命令的账号需要backup_admin权限。
GRANT BACKUP_ADMIN ON *.* TO 'clone_user';
使用clone local命令:
CLONE LOCAL DATA DIRECTORY '/data/clone/mysql02_backup';
运行mysql的OS账号需要有相应路径的读写权限,不然clone命令会有以下错误:
ERROR 1006 (HY000): Can't create database '/data/clone/mysql02_backup/' (errno: 13 - Permission denied)
如果指定路径已经存在,clone命令也会报错:
ERROR 1007 (HY000): Can't create database '/data/clone/mysql02_backup'; database exists
查看clone状态
通过 performance_schema中的clone_status表,可以查询当前clone操作的状态:
mysql> select * from performance_schema.clone_status\G
*************************** 1. row ***************************ID: 1PID: 55STATE: CompletedBEGIN_TIME: 2023-08-22 15:11:26.581END_TIME: 2023-08-22 15:11:36.646SOURCE: LOCAL INSTANCEDESTINATION: /data/clone/mysql02_backup/ERROR_NO: 0ERROR_MESSAGE:BINLOG_FILE:
BINLOG_POSITION: 0GTID_EXECUTED:
1 row in set (0.00 sec)
使用clone的数据启动实例
clone得到的文件,是原实例的一个一致性的快照,可以使用这些文件来启动mysql实例。clone只备份了innodb表,不备份mysql的配置文件。可手动创建一个配置文件,将datadir指向clone路径,就可以启动mysql实例:
##/data/clone/my.cnf
[mysqld]
port=3333
datadir=/data/clone/mysql02_backup
...
mysqld_safe --defaults-file=/data/clone/my.cnf &
远程clone
远程clone将数据从捐赠者(Donor)复制到接收者(Recipient)。接收者实例原有的数据会被清理掉。

使用clone instance命令发起远程clone:
CLONE INSTANCE FROM 'user'@'host':port
IDENTIFIED BY 'password'
[DATA DIRECTORY [=] 'clone_dir']
[REQUIRE [NO] SSL];
命令参数含义:
user:登陆捐赠者实例的用户名
host:捐赠者实例的主机名或IP
port:捐赠者实例的端口
password:捐赠者实例的密码
clone_dir:不指定clone_dir时,会清空接受者实例的datadir目录,并将数据放到datadir指定路径。如果指定了data directory,则该路径需要不存在,mysql服务需要有目录权限。
REQUIRE [NO] SSL:指定传输数据是是否使用加密协议。
远程clone前置条件
使用远程clone需要满足以下几点前置条件:
账号权限,捐赠者的账号需要有backup_admin权限。接受者的账号需要clone_admin权限。clone_admin权限包含backup_admin权限和shutdown权限。
捐赠者和接受者的版本需要保持一致。不仅大版本要一样,小版本也要一样。可使用show variables命令查看版本。
mysql> SHOW VARIABLES LIKE 'version';
+---------------+--------+
| Variable_name | Value |
+---------------+--------+
| version | 8.0.32 |
+---------------+--------+
捐赠者和接受者的运行平台和操作系统需要一致。
捐赠者和接受者都需要安装clone插件。
捐赠者和接受者字符集需要一样(character_set_server,collation_server)。
捐赠者和接受者的参数innodb_page_size,innodb_data_file_path需要一样。
接受者上,参数clone_valid_donor_list需要包含捐赠者的地址。
默认情况下,远程clone会在完成数据clone后,关闭接受者实例。需要有控制进程(如mysqld_safe脚本、systemctl等)来拉起接受者实例。如果缺少控制进程,则接受者实例关闭后,无法自动启动。
ERROR 3707 (HY000): Restart server failed (mysqld is not managed by supervisor process).
远程clone操作步骤
1、在捐赠者实例上创建相关账号并授权
mysql> CREATE USER 'donor'@'%' IDENTIFIED BY 'password';
mysql> GRANT BACKUP_ADMIN on *.* to 'donor'@'%';
2、在接受者实例上创建账号并授权
CREATE USER 'recipient'@'' IDENTIFIED BY 'password';
GRANT CLONE_ADMIN on *.* to 'recipient'@'%';
3、登陆接受者实例,发起clone操作
CLONE INSTANCE FROM 'donor'@'host':port
IDENTIFIED BY 'password';
clone完成后,会自动重启接受者实例。
clone插件的限制
8.0.27版本之前,clone时,捐赠者和接受者都不允许进行DDL。从8.0.27版本开始,捐赠者默认可以进行DDL。可以由参数clone_block_ddl进行控制。clone_block_ddl设置为ON时,clone运行时,DDL会被阻塞。
一次只能clone一个实例。
clone插件不会复制mysql参数。clone时,不会将捐赠者实例的参数复制到接受者实例。
clone插件不会复制binlog。
clone插件只复制存储在innodb存储引擎中的数据。不会复制myisam、csv等其他存储引擎的数据。
不支持通过mysql router连接到捐赠者实例
本地clone操作不支持复制使用绝对路径的通用表空间。
更多技术信息请查看云掣官网https://yunche.pro/?t=yrgw
相关文章:
MySQL运维实战之Clone插件(10.1)使用Clone插件
作者:俊达 clone插件介绍 mysql 8.0.17版本引入了clone插件。使用clone插件可以对本地l或远程的mysql实例进行clone操作。clone插件会拷贝innodb存储引擎表,clone得到的是原数据库的一个一致性的快照,可以使用该快照数据来启动新的实例。cl…...
【系统架构设计】数据库系统(三)
数据库系统(三) 数据库模式与范式数据库设计备份与恢复分布式数据库系统分布式数据库的概念特点分类目标 分布式数据库的架构分布式数据库系统与并行数据库系统 数据仓库数据挖掘NoSQL大数据 数据库模式与范式 数据库设计 备份与恢复 分布式数据库系统…...
免费视频批量横版转竖版
简介 视频处理器 v1.3 是一款由是貔貅呀开发的视频编辑和处理工具,提供高效便捷的视频批量横转竖,主要功能: 导入与删除文件:轻松导入多个视频文件,删除不必要的文件。暂停与继续处理:随时暂停和继续处理。…...
内存管理(知识点)
c语言与c对于内存管理的区别 c语言中动态内存管理方式 malloc\calloc\realloc\free c内存管理方式 c兼容c语言所以c语言中的方式也可以使用 但是用起来太麻烦 所以通过new和delete操作符竞选动态内存管理 单个对象 c语言: int* p2(int*)malloc(sizeof(int)) c : int*p3 new…...
【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【29】Sentinel
持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【29】Sentinel 简介熔断降级什么是熔断什么是降级相同点不同点 整合Sentinel自定义sentinel流控返回数据使用Sentinel来保护feign远程调用自定义资源给网关整合Sentinel参考 简介 熔断降…...
防范UDP Flood攻击的策略与实践
UDP Flood攻击是一种常见的分布式拒绝服务(DDoS)攻击手段,通过向目标服务器发送大量无效的UDP数据包,消耗其网络带宽和处理资源,最终导致合法的网络服务无法正常运行。本文将深入探讨UDP Flood攻击的原理、常见的防御策…...
昇思25天学习打卡营第17天 | CycleGAN图像风格迁移互换
通过深入学习CycleGAN模型,我对无监督图像到图像的转换技术有了更深的理解。CycleGAN不仅能在没有成对训练样本的情况下实现域之间的转换,而且在保持内容结构的同时成功转换图像风格,这在许多应用中都非常有用,如艺术风格转换、季…...
Leetcode 2520. 统计能整除数字的位数
问题描述: 给你一个整数 num ,返回 num 中能整除 num 的数位的数目。 如果满足 nums % val 0 ,则认为整数 val 可以整除 nums 。 示例 1: 输入:num 7 输出:1 解释:7 被自己整除࿰…...
WEB前端08-综合案例(动态表格)
使用 HTML、CSS 和 JavaScript 创建动态表格 在本教程中,我们将创建一个动态表格,允许用户添加行、选择项目,并执行批量操作,如全选或删除选中的行。我们将通过 HTML、CSS 和 JavaScript 来实现这一功能。让我们逐步了解每个部分…...
【面试题】Redo log和Undo log
Redo log 介绍Redo log之前我们需要了解一下,mysql数据操作的流程: 上述就是数据操作的流程图,可以发现sql语句并不是直接操作的磁盘而是通过操作内存,然后进行内存到磁盘的一个同步。这里我们必须要了解一些区域: 缓…...
开发实战经验分享:互联网医院系统源码与在线问诊APP搭建
作为一名软件开发者,笔者有幸参与了多个互联网医院系统的开发项目,并在此过程中积累了丰富的实战经验。本文将结合我的开发经验,分享互联网医院系统源码的设计与在线问诊APP的搭建过程。 一、需求分析 在开发任何系统之前,首先要…...
springboot系列教程(十六):配置Actuator组件,实现系统监控
一、Actuator简介 1、监控组件作用 在生产环境中,需要实时或定期监控服务的可用性。Spring Boot的actuator(健康监控)功能提供了很多监控所需的接口,可以对应用系统进行配置查看、相关功能统计等。 2、监控分类 Actuator 提供…...
单臂路由组网实验,单臂路由的定义、适用情况、作用
一、定义 单臂路由是指通过在路由器的一个接口上配置许多子接口,从而实现原来相互隔离的不同VLAN之间的互通。 子接口:把路由器上的实际的物理接口划分为多个逻辑上的接口,这些被划分的逻辑接口就是子接口。 二、适用情况 用在没有三层交换机,却要实现不同VLAN之间的互…...
【数据结构初阶】顺序表三道经典算法题(详解+图例)
Hello!很高兴又见到你了~~~ 看看今天要学点什么来充实大脑吧—— 目录 1、移除元素 【思路图解】 【总结】 2、删除有序数组中的重复项 【思路图解】 【总结】 3、合并两个有序数组 【思路图解】 【总结】 至此结束,Show Time! 1、…...
SpringBoot接入JPA连接数据库H2或MySQL例子
一,JPA相关的常用注解和对象 Entity,用于实体类声明语句之前,指出该Java类为实体类,将映射到指定的数据库表;Table,当实体类与其映射的数据库表名不同名时需要使用。该标注与Entity标注并列使用&…...
持续集成05--Gogs的安装与使用
前言 在持续集成/持续部署(CI/CD)的旅程中,版本控制系统是不可或缺的一环。当我们在使用jenkins,想要达到测试脚本有更新,就让项目自动去进行构建,或者当开发脚本有更新,也可以自动去构建的效果…...
C++--fill
把[first,last)之间的元素填充为val。 template<class ForwardIterator, class Type> void fill( ForwardIterator first, //起始迭代器 ForwardIterator last, //结束迭代器 const Type& val //设置的值 );源码剖析 template<class ForwardIterator, c…...
Java:对比一个对象更新前后具体被修改了哪些值
Java:对比一个对象更新前后具体被修改了哪些值 Zyyyyu 的个人博客 遇到一个需求就是要记录每行数据被修改更新后,要记录下当前值和修改前的值 那有人就会说写个if去判断值是否被修改了,然后记录下来不就行了,这是一个思路&#x…...
GO——GMP 好文整理
GMP相关好文推荐: Golang 调度器设计思想、GMP 协程调度模型详解 Golang的协程调度器原理及GMP设计思想 Golang调度器GMP原理与调度全分析...
园区AR导航系统构建详解:从三维地图构建到AR融合导航的实现
随着现代园区规模的不断扩大与功能的日益复杂,传统的二维地图导航已难以满足访客高效、精准定位的需求。园区内部错综复杂的布局、频繁变更的商户位置常常让访客感到迷茫,造成寻路上的时间浪费。园区AR导航系统以创新的技术手段,破解了私域地…...
打破单模态壁垒:SillyTavern多模态交互功能深度解析
打破单模态壁垒:SillyTavern多模态交互功能深度解析 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 当你尝试向AI描述一幅复杂的场景,却发现文字难以捕捉光影的微妙…...
python小白福音:跟着快马生成的图文指南,轻松搞定vscode环境配置
作为一个刚开始学Python的小白,第一次打开VSCode时完全不知道从哪里下手。各种专业术语看得一头雾水,网上的教程要么太简单要么太复杂。直到发现了InsCode(快马)平台,它帮我生成了这份超级详细的配置指南,现在终于能愉快地写代码了…...
PostgreSQL开机启动踩坑实录:从‘服务不存在’到‘权限拒绝’的完整排错指南
PostgreSQL开机启动故障排查实战指南:从日志分析到权限修复 当你满怀期待地在服务器上执行systemctl start postgresql命令,却看到刺眼的红色报错信息时,那种挫败感我深有体会。作为一款强大的开源数据库,PostgreSQL在Linux系统上…...
3步解锁音频自由:NCMDump工具全场景解密指南
3步解锁音频自由:NCMDump工具全场景解密指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 问题:被加密的音乐困境 音乐收藏者的痛点清单 现代音乐爱好者常面临一个共同难题:从音乐平台下载的N…...
从学术研究到工业部署,Python张量框架选型决策树(含模型规模×硬件约束×团队能力×合规要求4维评估矩阵)
第一章:从学术研究到工业部署,Python张量框架选型决策树(含模型规模硬件约束团队能力合规要求4维评估矩阵)在将深度学习模型从论文实验推向生产环境的过程中,张量框架的选择远不止“谁更流行”的简单判断。它是一次多目…...
CYBER-VISION零号协议SolidWorks设计文档智能解读与生成
CYBER-VISION零号协议:让AI读懂你的SolidWorks设计图 每次打开一个复杂的SolidWorks装配体文件,面对几十上百个零件,你是不是也头疼过整理物料清单、编写设计说明?或者,当同事发来一份设计文档,你需要花半…...
实时手机检测-通用模型教程:如何用Gradio搭建检测界面
实时手机检测-通用模型教程:如何用Gradio搭建检测界面 1. 引言与模型概述 1.1 手机检测的应用价值 在现代计算机视觉应用中,手机检测是一个具有广泛实用场景的技术。从智能监控系统中的打电话行为识别,到公共场所的手机使用管理࿰…...
别再手写Verilog了!用Intel Platform Designer(Qsys)在DE2-115上5分钟搭个LED控制器
图形化革命:5分钟用Platform Designer构建FPGA系统的实战指南 从代码到模块化思维的转变 在传统FPGA开发中,工程师往往需要从零开始编写Verilog代码,即使是简单的LED控制逻辑也不例外。这种开发方式不仅效率低下,而且容易出错——…...
Spring_couplet_generation 结合微信小程序:春节活动创意应用开发
Spring_couplet_generation 结合微信小程序:春节活动创意应用开发 春节,是中国人最重视的传统节日。贴春联,更是家家户户辞旧迎新的重要仪式。但每年都买现成的春联,总觉得少了点新意和专属感。有没有一种方式,能让每…...
OpenClaw浏览器自动化:Qwen3-32B-Chat智能爬虫实战
OpenClaw浏览器自动化:Qwen3-32B-Chat智能爬虫实战 1. 为什么选择OpenClaw做浏览器自动化? 去年我接手了一个市场调研项目,需要从200多个电商页面抓取商品信息和用户评价。传统爬虫遇到动态加载、反爬机制时频繁报错,手动操作又…...
