推选一篇徐老师的文章,正文如下:
克隆有两种方式:
-
本地克隆:克隆数据至一个其他的路径。
-
远程克隆:从远程的MySQL服务器实例上克隆数据。
使用克隆功能时,需要在作为捐献者和接收者的MySQL服务器上都必须安装克隆插件。安装克隆插件可以通过“plugin-load”或“plugin-load-add”两个启动选项加载“mysql_clone.so”,例如,
[mysqld]
plugin-load-add=mysql_clone.so
利用该启动选项可以确保在每次服务器重启时自动加载克隆插件。
也可以在MySQL服务器正在运行的时候,利用“INSTALL PLUGIN”语句安装克隆插件,例如,
mysql>INSTALL PLUGIN clone SONAME 'mysql_clone.so'
安装后的插件将注册到“mysql.plugins”系统表中,将在后续的每次服务器重启时进行加载。
用户如果需要验证插件是否成功安装,可以从“INFORMATION_SCHEMA.PLUGINS”中查询,或者使用“SHOW PLUGINS”语句查看。
用户执行本地
克隆操作时,需要具备“BACKUP_ADMIN”权限。
mysql>GRANT BACKUP_ADMIN ON *.* 'username';
执行远程克隆操作时,用户在接收服务器上需要具有“CLONE_AMDIN”权限,该权限具有置换数据、克隆期间阻挡DDL操作,及自动重启服务器的能力。在捐献服务器上需要“BACKUP_ADMIN”权限用于访问和传输数据、阻挡DDL操作。
本地克隆
本地克隆是指在同一台主机上克隆MySQL数据至其他路径,需要在运行克隆语句时,指定“LOCAL DATA DIRECTORY”选项、端口及连接信息。
mysql> CLONE LOCAL DATA DIRECTORY = '/path/to_clone_dir';
远程克隆
数据需要从一台远程MySQL服务器实例(捐献者),克隆至本地MySQL服务器实例(接收者)。需要在全局变量“clone_valid_donor_list”中配置捐献者的主机和端口。
mysql>SET GLOBAL clone_valid_donor_list = 'donor_host:3306';
之后在接收者服务器上运行“CLONE”语句:
mysql>CLONE INSTANCE FORM 'donor_user'@'donor_host:3306' IDENTIFIED BY 'password';
注意事项:
运行远程克隆时,需要满足下列条件:
-
捐献者和接收者必须运行相同的操作系统和平台。
-
接收者必须具有足够的磁盘容量。
-
如果捐献者的表空间文件在数据路径之外,克隆操作必须能够写入这些路径。
-
如果捐献者上面有激活的插件,接收者的插件也必须激活。
-
捐献者和接收者必须具有相同的字符串和排序。
-
捐献者和接收者的“innodb_page_size”和“innodb_data_file_path”的配置必须相同。
-
如果克隆加密或者压缩的数据,要求捐献者和接收者具有一致的文件系统块大小。
-
克隆加密数据时,要求使用安全连接。
-
“clone_valid_donor_list”中必须包含捐献者的主机地址。
-
克隆时,不允许其他的克隆操作。
-
“max_allowed_packet”值至少为2MB。
克隆插件的限制
-
克隆操作中,全部的DDL被阻挡,DML允许执行。
-
克隆操作仅支持InnoDB表,其他引擎表会被克隆为空表。
-
无法克隆服务器的配置和二进制日志。
-
本地克隆无法克隆使用绝对路径创建的通用表空间。
-
远程克隆不支持X协议端口。
-
无法通过MySQL Router连接捐献者MySQL服务器实例。
以上内容是关于克隆插件的详细介绍。
文章至此。