利用 MySQL 克隆插件搭建主从
前言:
MySQL 的利用隆插 Clone 插件是一个强大的功能,首次引入于 MySQL 8.0.17 版本。搭建主简单来说,利用隆插Clone Plugin 是搭建主一款物理克隆数据工具,它能够帮助我们快速、利用隆插高效地克隆或复制数据库,搭建主极大地简化了数据库迁移、利用隆插备份和恢复的搭建主过程,让我们在处理大量数据时更加得心应手。利用隆插本篇文章我们一起来学习下如何使用克隆插件。搭建主
克隆插件介绍
克隆插件的利用隆插工作原理是创建存储在 InnoDB 中的 schema、table、搭建主tablespaces 和 data dictionary metadata的利用隆插物理快照。这个快照实际上是搭建主一个完整的数据目录,MySQL克隆插件可以使用这个目录来配置并恢复一个 MySQL 服务器。利用隆插

使用克隆插件,用户可以执行本地克隆和远程克隆两种操作:
本地克隆:将数据从启动克隆操作的 MySQL 服务器克隆到该服务器主机上的指定目录下。远程克隆:涉及到本地 MySQL 服务器(接收方)和远程 MySQL 服务器(发送方),免费源码下载克隆的数据通过网络从发送方传输到接收方。默认情况下,远程克隆操作会删除接收方数据目录中的现有数据,并用克隆的新数据替换。不过克隆插件的使用也是有一定的限制的,参考官方文档,总结几点如下:
DDL阻塞与兼容性:在早期版本中,克隆操作期间会阻塞源服务器(Donor)上的所有 DDL 操作,但从 MySQL 8.0.27 开始,克隆命令不再阻塞 Donor 上的 DDL 操作。
克隆操作要求源和目标 MySQL 服务器版本兼容,通常不允许跨大版本克隆。直至最近更新(如MySQL 8.0.37),小版本间的克隆限制有所放宽,但仍需注意版本兼容性。
存储引擎限制:克隆操作仅支持InnoDB表,对于其他存储引擎的表,只会克隆其表结构而不会复制数据。
配置与日志不复制:克隆插件不会复制 Donor 服务器的服务器租用配置参数和二进制日志(Binlog)设置,这意味着目标实例需要独立配置。
操作系统与网络限制:捐赠者和接受者必须运行在相同的操作系统上,并且在某些情况下,要求网络连接直接而不通过MySQL Router。
指定的 Donor 端口不能是X Protocol端口。
字符集与排序规则:源和目标 MySQL 服务器必须具有相同的字符集和排序规则。
利用 Clone Plugin 搭建主从下面我们来具体操作下如何利用远程克隆来搭建主从复制:
复制# 主从服务器安装克隆插件 mysql> INSTALL PLUGIN clone SONAME mysql_clone.so; # 写入my.cnf配置文件 [mysqld] plugin-load-add=mysql_clone.so # 查看插件状态 确认为 ACTIVE mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = clone; +------------------------+---------------+ | PLUGIN_NAME | PLUGIN_STATUS | +------------------------+---------------+ | clone | ACTIVE | +------------------------+---------------+ # 从节点执行远程克隆 # 远程克隆语法: CLONE INSTANCE FROM user@host:port IDENTIFIED BY password [DATA DIRECTORY [=] clone_dir] [REQUIRE [NO] SSL]; DATA DIRECTORY:是一个可选子句,用于在接收端指定要克隆的数据的目录。 如果不想删除接受方原数据目录中的现有数据,可以使用此选项修改数据copy的目录,必须有绝对路径,且目录必须不存在。 不指定的话,则默认克隆到接受方的数据目录下。 # 执行克隆操作,用户需要有BACKUP_ADMIN权限,建议使用管理员账号 mysql> CLONE INSTANCE FROM root@172.16.255.49:3306 IDENTIFIED BY xxxxxxx; Query OK, 0 rows affected (12.40 sec) # 克隆完成后 数据库服务会自动重启,再次进入查看克隆状态 mysql> select * from performance_schema.clone_status\G;站群服务器