MySQL clone plugin(克隆插件)

前言

在MySQL 8.0.17版本中引入了新的插件clone plugin。克隆插件允许克隆本地或远程MySQL服务器实例中的数据。克隆数据是存储在InnoDB中的数据的物理快照,包括模式、表、表空间和数据字典元数据。克隆的数据包括一个功能完整的数据目录,它允许使用克隆插件用于MySQL服务器配置。clone plugin的可应用场景:
1.数据物理热备:(本地 or 远程)
2.快速构建集群从节点的复制
3.MGR节点的快速扩充

首先需要安装clone plugin:(远程克隆需要在多个节点同步安装)
如果mysqld服务尚未启动,则在my.cnf中配置初始化插件加载:

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

或者在mysql运行时加载插件,则通过:

INSTALL PLUGIN clone SONAME 'mysql_clone.so';

一.本地克隆(clone data locally)

参考文档:https://dev.mysql.com/doc/refman/8.0/en/clone-plugin-local.html
克隆操作需要用户具备backup_admin权限:

mysql> GRANT BACKUP_ADMIN ON *.* TO 'clone_user';

本地克隆语法:

mysql> CLONE LOCAL DATA DIRECTORY = '/path/to/clone_dir';

其中/path/to/clone_dir是数据克隆到的本地目录的完整路径。需要一个绝对路径,并且指定的目录(" clone_dir ")必须不存在,但是指定的路径必须是存在的路径。MySQL服务器必须具有创建目录所需的写访问权限
案例:

mysql > CLONE LOCAL DATA DIRECTORY = '/mysql/bak'

这里指定了不存在的路径/mysql/bak,且/mysql路径具备读写权限


p1.png

这里为克隆结果

二.远程克隆(clone remote data)

参考文档:https://dev.mysql.com/doc/refman/8.0/en/clone-plugin-remote.html

远程克隆前置条件:

  1. 克隆接收方和提供方均需要clone user,在提供方上,克隆用户需要BACKUP_ADMIN权限来访问和传输来自提供方的数据,以及在克隆操作期间阻止DDL。在接收方上,克隆用户需要CLONE_ADMIN特权来替换接收方数据、在克隆操作期间阻止DDL以及自动重新启动服务器。CLONE_ADMIN特权隐含地包括BACKUP_ADMIN和SHUTDOWN特权。
  2. 克隆操作期间不允许使用 DDL,允许并发DML
  3. 克隆接收方和提供方必须有相同的mysql server版本,且必须8.0.17+
  4. 克隆接收方和提供方必须是相同的操作系统平台。
  5. 接收方必须有足够的磁盘空间存放克隆的数据。默认情况下,在克隆提供数据之前会删除接收方数据,因此只需要足够的空间来存储克隆数据。如果使用DATA directory子句克隆到一个指定目录,则必须有足够的磁盘空间用于现有的接收方数据和克隆的数据。
  6. InnoDB允许在数据目录之外创建一些表空间类型。如果提供的MySQL服务器实例有位于数据目录之外的表空间,克隆操作必须能够访问这些表空间
  7. 克隆接收方和提供方必须具有相同的字符集和collation字符排序规则
  8. 克隆接收方和提供方必须具有相同的innodb_page_size和innodb_data_file_path参数设置
  9. 如果克隆加密或页面压缩的数据,则提供方和接收方必须具有相同的文件系统块大小
  10. 如果要克隆加密的数据,则需要配置SSL加密安全连接
  11. 克隆接收方的clone_valid_donor_list设置必须包含提供方MySQL服务器实例的主机地址
  12. 同一时间只能有一个克隆操作
  13. 克隆插件传输1MB包和元数据。因此,在提供方和接收方MySQL服务器实例上,所需的最小max_allowed_packet值为2MB
  14. 克隆接收方也需要启动mysqld服务

远程克隆需要在接收方创建具备clone admin权限的clone user:

mysql> GRANT CLONE_ADMIN on *.* to 'recipient_clone_user';

添加克隆提供方的ip列表与端口至clone_valid_donor_list

SET GLOBAL clone_valid_donor_list = 'example.donor.host.com:3306';

远程克隆至指定位置:(不会影响本实例)

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

远程克隆覆盖自身:(默认方式,提供方数据直接克隆到接收方,克隆后接收方实例重启)

mysql> CLONE INSTANCE FROM 'donor_clone_user'@'example.donor.host.com':3306
       IDENTIFIED BY 'password';

donor_clone_user:克隆提供方user

操作案例:


p2.png

具体的克隆流程可以查看performance_schema.clone_progress:

SELECT STAGE, STATE, END_TIME FROM performance_schema.clone_progress;
p3.png

指定DATA DIRECTORY参数则不会开启RESTART和RECOVERY步骤。

总结:

目前调研来看,新引入的clone plugin和xtrabackup都可以用于物理热备,不过各有优劣势,在部分场景可以考虑使用clone替代xtrabackup,如主从复制和mgr等等。可以期待官方后续clone plugin相关的更新。后续会再了解一下clone plugin和xtrabackup的原理。

END
————————————————————
更多技术文章欢迎关注微信公众号:数据库笔记

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352