当前位置:

首页 > 编程开发 > 使用MySQL的Clone插件的方法详解

使用MySQL的Clone插件的方法详解

本文目录

    克隆插件简介MySQL8.0.17引入了Clone插件,可以进行本地或从远程MySQL服务器实例进行克隆,克隆的数据是存储在InnoDB中的数据的物理快照,包括schemas、tables、tablespaces和数据字典元数据。克隆操作包括本地克隆和远程克隆。本地克隆操作:远程克隆操作:安装克隆插件使用Clone插件进行克隆操作,必须先进行插件的安装和配置。插件的名称是mysql_clone.so,安装有两种方法。方法1:MySQL数据库的插件默认放在系统变量plugin_dir对应的目录中,在MySQ

    使用MySQL的Clone插件的方法详解

    克隆插件简介

    MySQL 8.0.17引入了Clone插件,可以进行本地或从远程MySQL服务器实例进行克隆,克隆的数据是存储在InnoDB中的数据的物理快照,包括schemas、tables、tablespaces和数据字典元数据。克隆操作包括本地克隆和远程克隆。

    本地克隆操作:                                                                   远程克隆操作:

    使用MySQL的Clone插件的方法详解

    安装克隆插件

    使用Clone插件进行克隆操作,必须先进行插件的安装和配置。插件的名称是mysql_clone.so,安装有两种方法。

    方法1:

    MySQL数据库的插件默认放在系统变量plugin_dir对应的目录中,在MySQL服务器启动时使用--plugin-load-add选项加载该插件即可,但该方法需每次启动服务器都需要指定对应的选项,可以将其配置到my.cnf文件中,即:

    [mysqld]
    plugin-load-add=mysql_clone.so

    方法2:

    运行时加载该插件,使用INSTALL PLUGIN进行安装,并将插件注册到mysql.plugin系统表中:

    install plugin clone soname 'mysql_clone.so';

    安装后,可在information_schema.plugins表或通过show plugins查看。

    克隆本地数据

    本地克隆数据是将MySQL数据目录克隆相同服务器或节点到另一个目录 支持的语法如下,

    CLONE LOCAL DATA DIRECTORY [=] '/path/to/clone_dir'

    执行上述语句,对应的用户需要有BACKUP_ADMIN权限,而且用户创建的文件或表空间必须在数据目录中,同时,克隆的目的地需指定绝对路径,目录完整路径必须存在,但clone_dir必须不存在。

    演示:克隆本地数据

    1)创建用户

    mysql> select version();
    +-----------+
    | version() |
    +-----------+
    | 8.0.25 |
    +-----------+
    1 row in set (0.00 sec)
    mysql> create user clone_admin identified by 'Cl0neTest';
    Query OK, 0 rows affected (0.02 sec)
    mysql> grant backup_admin on *.* to clone_admin;
    Query OK, 0 rows affected (0.10 sec)

    2)创建目录

    [root@node1 ~]# mkdir /mysql/clone/
    [root@node1 ~]# chown -R mysql:mysql /mysql/clone/

    3)克隆操作

    mysql> clone local data directory='/mysql/clone/clone_data';
    Query OK, 0 rows affected (17.09 sec)

    4)查看克隆后的文件

    [root@node1 ~]# ll /mysql/clone/clone_data/
    total 6348816
    drwxr-x---. 2 mysql mysql 89 Nov 28 11:26 #clone
    -rw-r-----. 1 mysql mysql 9231 Nov 28 11:26 ib_buffer_pool
    -rw-r-----. 1 mysql mysql 4294967296 Nov 28 11:26 ibdata1
    -rw-r-----. 1 mysql mysql 1073741824 Nov 28 11:26 ib_logfile0
    -rw-r-----. 1 mysql mysql 1073741824 Nov 28 11:26 ib_logfile1
    drwxr-x---. 2 mysql mysql 6 Nov 28 11:26 mysql
    -rw-r-----. 1 mysql mysql 25165824 Nov 28 11:26 mysql.ibd
    drwxr-x---. 2 mysql mysql 4096 Nov 28 11:26 sakila
    drwxr-x---. 2 mysql mysql 28 Nov 28 11:26 sys
    -rw-r-----. 1 mysql mysql 16777216 Nov 28 11:26 undo_001
    -rw-r-----. 1 mysql mysql 16777216 Nov 28 11:26 undo_002

    5)验证,使用克隆的目录启动数据库

    [root@node1 ~]# service mysql.server stop
    Shutting down MySQL.... SUCCESS!
    [root@node1 ~]# mysqld_safe --datadir=/mysql/clone/clone_data/ --lower-case-table-names=1 --user=mysql
    2021-11-28T03:47:11.012900Z mysqld_safe Logging to '/mysql/clone/clone_data/node1.com.cn.err'.
    2021-11-28T03:47:11.036181Z mysqld_safe Starting mysqld daemon with databases from /mysql/clone/clone_data

    克隆远程数据

    克隆远程MySQL服务器实例(donor)并将其传输至执行克隆操作的MySQL实例(recipient),支持的克隆远程数据的语法如下:

    CLONE INSTANCE FROM 'user'@'host':port
    IDENTIFIED BY 'password'
    [ DATA DIRECTORY [ = ] 'clone_dir' ]
    [ REQUIRE [ NO ] SSL ]

    其中,

    • user 是donor MySQL服务器实例的用户名;

    • password是user的密码;

    • host是donor MySQL服务器实例的hostname地址,目前支持IPv4,不支持IPv6,但可使用别名;

    • port是donor MySQL服务器实例的端口号;

    • DATA DIRECTORY [ = ] 'clone_dir'是可选的子句用于指定接收克隆数据的目录,不指定该选项会覆盖已存在的数据文件,指定该选项可将克隆数据传输至该目录;

    • REQUIRE [ NO ] SSL显式指定是否使用加密连接;

    执行克隆操作,克隆插件必须在donor和recipient MySQL服务器实例激活,在donor服务器实例,克隆用户需要BACKUP_ADMIN权限,在recipient服务器实例,克隆用户需要CLONE_ADMIN权限,CLONE_ADMIN权限包括BACKUP_ADMIN和SHUTDOWN权限。

    执行CLONE INSTANCE语句需满足下面的先决条件:

    • donor和recipient必须有相同的MySQL服务器版本,克隆插件在8.0.17版本后支持;

    • donor和recipient必须运行在相同的操作系统和平台;

    • 克隆数据,recipient必须有足够的磁盘空间;

    • InnoDB需要在数据目录外面创建表空间,可通过INFORMATION_SCHEMA.FILES查看;

    • 克隆插件必须在donor和recipient激活,可通过SHOW PLUGINS查看;

    • donor和recipient必须有相同的MySQL服务器字符集和排序规则;

    • donor和recipient需要有相同的innodb_page_size和innodb_data_file_path设置;

    • 若克隆加密或页压缩的数据,donor和recipient必须有相同的文件系统块大小;

    • 若克隆加密的数据,需要安全的连接;

    • recipient上的clone_valid_donor_list设置必须包括donor MySQL服务器实例的主机地址;

    • 一次只能有一个克隆操作,克隆期间不能有其他克隆操作,可通过clone_status查看;

    • 克隆插件以1MB数据包和元数据的形式传输数据,在donor和recipient MySQL服务器实例上所需的最小max_allowed_packet是2MB;

    • donor上的Undo表空间文件名必须唯一,当数据克隆到recipient,undo表空间克隆到recipient 上innodb_undo_directory指定的位置或DATA DIRECTORY [ = ] 'clone_dir' 子句指定的目录;

    • 默认,recipient MySQL服务器实例在克隆数据完成后自动重启;

    • 几个变量控制远程克隆操作的各个方面;

    演示:克隆远程数据

    默认将数据克隆到recipient端的数据目录,并使用donor的数据进行覆盖,然后进行自动重启recipient端的MySQL服务器实例

    1)登录到donor MySQL服务器实例,创建用户并安装插件(若安装可忽略)

    mysql> create user 'donor_clone_user' identified by 'donor_clone_user';
    Query OK, 0 rows affected (0.02 sec)
    mysql> grant backup_admin on *.* to donor_clone_user;
    Query OK, 0 rows affected (0.01 sec)

    2)登录到recipient MySQL服务器实例,创建账户并安装插件,并设置clone_valid_donor_list

    mysql> create user recipient_clone_user identified by 'recipient_clone_user';
    Query OK, 0 rows affected (0.04 sec)
    mysql> grant clone_admin,backup_admin on *.* to recipient_clone_user;
    Query OK, 0 rows affected (0.01 sec)
    mysql> install plugin clone soname 'mysql_clone.so';
    Query OK, 0 rows affected (0.01 sec)
    mysql> set global clone_valid_donor_list='192.168.56.53:3306';
    Query OK, 0 rows affected (0.00 sec)

    3)登录到recipient MySQL服务器实例,使用 recipient_clone_user用户或root用户执行克隆操作,操作完成后会自动重启

    mysql> clone instance from 'donor_clone_user'@'192.168.56.81':3306 identified by 'donor_clone_user';
    Query OK, 0 rows affected (51.08 sec)

    注:将donor的数据克隆到recipient端默认会覆盖其数据文件,也可以指定一个目录进行克隆,如下:

    mysql> clone instance from 'donor_clone_user'@'192.168.56.81':3306 identified by 'donor_clone_user' data directory='/mysql/clone/clone_data';
    Query OK, 0 rows affected (51.17 sec)

    使用新目录启动MySQL服务器实例:

    [root@node2 clone]# mysqld --lower-case-table-names=1 --datadir=/mysql/clone/clone_data/ --user=mysql &
    本文内容来源于网友投稿,如有侵权请联系删除。
    作者最新文章
    编程开发 MySQL
    相关文章 更多
    链表删除节点的时间复杂度是多少及其详细分析
    链表删除节点的时间复杂度是多少及其详细分析

    详细分析链表删除节点的时间复杂度,深入探讨单链表与双向链表在不同已知前提下的查找与删除开销,并结合完整代码与清晰图解进行对比总结。

    codex如何配置模型参数及文件设置教程
    codex如何配置模型参数及文件设置教程

    想知道如何让AI写出的代码更贴合你的习惯?本文手把手教你在VS Code中调整Codex相关模型参数,通过修改配置文件优化温度值和令牌限制,解决代码建议不准确或响应慢的问题。

    Claude Code AI编程工具实力揭秘与编程助手实测
    Claude Code AI编程工具实力揭秘与编程助手实测

    通过实测展示Claude Code在终端中如何理解自然语言指令、自动修改代码文件并处理复杂编程任务,帮助开发者评估其实际辅助能力。

    winforms教程自学入门与基础开发步骤详解
    winforms教程自学入门与基础开发步骤详解

    本教程详细讲解如何使用Visual Studio创建WinForms项目,通过添加按钮和标签控件并编写点击事件代码,实现一个基础的计数器功能,适合C#初学者快速上手Windows窗体应用开发。

    Cursor自动补全设置教程教你快速开启代码补全功能
    Cursor自动补全设置教程教你快速开启代码补全功能

    详解Cursor编辑器中自动补全功能的开启与优化设置,涵盖Tab触发机制、上下文窗口调整及模型切换,帮助开发者解决补全延迟、干扰大等问题,提升编码流畅度。

    pandas的数据格式怎么转换和设置方法教程
    pandas的数据格式怎么转换和设置方法教程

    详解Pandas中数据格式转换的核心方法,包括astype强制转换、to_numeric容错处理及日期解析技巧,解决常见类型错误并提升数据处理效率。

    VS Code中文设置方法 简体语言包安装与切换教程
    VS Code中文设置方法 简体语言包安装与切换教程

    详细介绍在Visual Studio Code中安装Chinese (Simplified)语言包的方法,包括通过扩展市场搜索、安装及自动重启切换至简体中文界面的完整步骤,帮助开发者快速将编辑器本地化。

    cursor安装过程无法更改安装位置的解决方法
    cursor安装过程无法更改安装位置的解决方法

    针对Cursor安装包默认锁定C盘且无路径选择界面的问题,提供通过手动移动文件并创建目录联结(Symbolic Link)的解决方案,实现将软件安装在其他磁盘分区。

    rust下载安装教程详解及Windows环境配置方法
    rust下载安装教程详解及Windows环境配置方法

    详解Windows系统下Rust语言的安装步骤,重点解析rustup工具链管理机制,解决环境变量配置错误及MSVC链接器缺失问题,提供可复制的命令验证方法与常见报错的因果排查思路。

    vs code怎么配置 chat实用设置教程步骤
    vs code怎么配置 chat实用设置教程步骤

    详解VS Code中Chat插件的安装与核心配置步骤,重点解决API连接失败、响应慢等常见问题,通过优化上下文设置提升代码生成质量,适合希望集成AI辅助工具的开发者阅读。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    macOS软件
    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    Mac软件 更多
    photoshop
    photoshop
    Windows、macOS 、 iPad

    Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

    Blender
    Blender
    Windows、macOS 和 Linux

    Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

    灵活计算器
    灵活计算器
    macOS/iOS/Android

    灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

    WINDOWS 更多
    3dmax(3ds max)
    3dmax(3ds max)
    Windows

    Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

    photoshop
    photoshop
    Windows、macOS 、 iPad

    Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

    Blender
    Blender
    Windows、macOS 和 Linux

    Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。