MySQL 8.0.17 中引入的克隆插件允许在本地或从远程 MySQL 服务器实例克隆数据。克隆数据是存储在其中的数据的物理快照InnoDB,包括模式、表、表空间和数据字典元数据。克隆的数据包含一个功能齐全的数据目录,允许使用克隆插件进行 MySQL 服务器配置。


图 5.1 本地克隆操作



sql server 克隆数据 mysql 克隆数据库_数据


本地克隆操作将数据从启动克隆操作的 MySQL 服务器实例克隆到运行 MySQL 服务器实例的同一服务器或节点上的目录。


图 5.2 远程克隆操作



sql server 克隆数据 mysql 克隆数据库_数据库_02

远程克隆操作涉及启动克隆操作的本地 MySQL 服务器实例(“接收者”)和远程 MySQL 服务器实例( “捐赠者”) 源数据所在的位置。当在接受者上启动远程克隆操作时,克隆的数据通过网络从捐赠者传输到接受者。默认情况下,远程克隆操作会在从捐赠者克隆数据之前从接收者数据目录中删除现有的用户创建的数据(模式、表、表空间)和二进制日志。或者,您可以将数据克隆到收件人上的不同目录,以避免从当前收件人数据目录中删除数据。

与远程克隆操作相比,本地克隆操作克隆的数据没有区别。这两个操作都克隆了同一组数据。

克隆插件支持复制。除了克隆数据之外,克隆操作还从捐赠者那里提取和传输复制坐标,并将它们应用到接收者上,这样就可以使用克隆插件来配置组复制成员和副本。使用克隆插件进行配置比复制大量事务要快得多且更有效(请参阅 第 5.6.7.7 节,“复制的克隆”)。组复制成员也可以配置为使用克隆插件作为替代恢复方法,以便成员自动选择最有效的方式从种子成员中检索组数据。

安装克隆插件(在源服务器和目标服务器均需要安装)

插件必须放在插件目录中 plugin_dir 系统变量命名的目录中。在my.cnf 文件中的[mysqld]标签下添加参数plugin-load-add=mysql_clone.so

[mysqld]

plugin_load_add=mysql_clone.so

需要重启服务才能生效。如果服务不能重启可以使用如下命令进行安装

mysql# install plugin clone SONAME 'mysql_clone.so';
mysql>
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'clone';
+------------------------+---------------+ |
PLUGIN_NAME | PLUGIN_STATUS |
 clone                 | ACTIVE |

如果插件初始化失败,请查看服务器错误日志,查看与克隆或插件相关的诊断信息。如果插件之前已经在INSTALL plugin上注册过或者加载过——plugin-load-add,那么你可以在服务器启动时使用——clone选项来控制插件的激活状态。例如,要在启动时加载插件,并防止它在运行时被删除,可以使用以下选项:

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

如果你想阻止服务器在没有克隆插件的情况下运行,可以使用——clone,并将其值设为FORCE或FORCE_PLUS_PERMANENT,以便在插件未成功初始化时强制服务器启动失败。