使用clone plugin将当前实例进行本地或者远程的clone,可以用于创建从库和mgr新成员加入。

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL8.0.17推出了一个重量级的功能:clone plugin。允许用户可以将当前实例进行本地或者远程的clone操作。适用于整个实例快速备份和mgr新成员加入。

MySQL8.0.17推出了一个重量级的功能:clone plugin。允许用户可以将当前实例进行本地或者远程的clone操作。适用于整个实例快速备份和mgr新成员加入。


安装clone插件

mysql> INSTALL PLUGIN clone SONAME 'mysql_clone.so';
Query OK, 0 rows affected (0.06 sec)
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
    ->        FROM INFORMATION_SCHEMA.PLUGINS
    ->        WHERE PLUGIN_NAME = 'clone';
+-------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+-------------+---------------+
| clone       | ACTIVE        |
+-------------+---------------+
1 row in set (0.01 sec)


本地clone

image.png

还不用先创建目录


mysql> CLONE LOCAL DATA DIRECTORY = '/home/scutech/mysql/enterprise/monitor/mysql/data2';
ERROR 1007 (HY000): Can't create database '/home/scutech/mysql/enterprise/monitor/mysql/data2'; database exists
mysql> CLONE LOCAL DATA DIRECTORY = '/home/scutech/mysql/enterprise/monitor/mysql/data2';
Query OK, 0 rows affected (17.10 sec)

clone完成后启动新的实例:

sudo /home/scutech/mysql/enterprise/monitor/mysql/bin/mysqld_safe --defaults-file=/home/scutech/mysql/enterprise/monitor/mysql/my2.cnf --pid-file=/home/scutech/mysql/enterprise/monitor/mysql/runtime/mysqld2.pid --user=scutech &


登录进入新的实例

root@scutech:~# mysql  --socket=/home/scutech/mysql/enterprise/monitor/mysql/tmp/mysql2.sock
mysql> show variables like 'data%';
+---------------+-----------------------------------------------------+
| Variable_name | Value                                               |
+---------------+-----------------------------------------------------+
| datadir       | /home/scutech/mysql/enterprise/monitor/mysql/data2/ |
+---------------+-----------------------------------------------------+
1 row in set (0.03 sec)


远程clone


image.png

远程clone需要启动clone操作的本地MySQL服务器实例(“recipient”)和源数据所在的远程MySQL服务器实例(“donor”)。和我之前想象的不一样,clone是在recipient上启动远程clone操作,clone数据通过网络从发送方传输到接收方。默认情况下,远程clone操作删除recipient数据目录中的数据,并用clone的数据替换它。可以选择将数据复制到recipient上的另一个目录,以避免删除现有数据。

clone plugin还支持复制。除了clone数据之外,clone操作还从donor提取和传输复制坐标,并将它们应用于recipient,这使得可以使用clone plugin来提供组复制成员和复制从属节点。与复制大量事务相比,使用clone plugin进行供应要快得多,效率也高得多。组复制成员还可以配置为使用clone插件作为另一种恢复方法,以便成员自动选择从种子成员检索组数据的最有效方法。clone plugin支持加密的和页面压缩的数据。

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

语法里指定: ip,端口,用户,密码,目录。


clone的限制

支持步骤datadir目录的文件clone,但要有访问权限,可以检查 SELECT FILE_NAME FROM

INFORMATION_SCHEMA.FILES;识别出来的内容才会被clone;

clone插件必须在发送方(donor)和接收方(recipient)的MySQL服务器实例上都是活动的

源端Donor登录的用户需要BACKUP_ADMIN特权来访问和传输来自clone服务器的数据,并在操作期间阻塞DDL。

目标端Recipient用户需要clone_ADMIN特权来替换收件人数据,在操作期间阻塞DDL,并自动重新启动服务器。clone_ADMIN特权隐式地包括BACKUP_ADMIN和SHUTDOWN特权。

clone用于复制

clone完成后,在源上查看

mysql> show master status;
+----------------+----------+--------------+------------------+-------------------+
| File           | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------+----------+--------------+------------------+-------------------+
| monitor.000001 |      156 |              |                  |                   |
+----------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)


在recipient上查看:


mysql> SELECT BINLOG_FILE, BINLOG_POSITION FROM performance_schema.clone_status;
+----------------+-----------------+
| BINLOG_FILE    | BINLOG_POSITION |
+----------------+-----------------+
| monitor.000001 |             156 |
+----------------+-----------------+
1 row in set (0.03 sec)


查看clone状态

这里有两种方式。

1 performance_schema下提供了两张表: clone_status,clone_progress来监控执行状态和情况

mysql> SELECT STATE, ERROR_NO, ERROR_MESSAGE FROM performance_schema.clone_status;
+-----------+----------+---------------+
| STATE     | ERROR_NO | ERROR_MESSAGE |
+-----------+----------+---------------+
| Completed |        0 |               |
+-----------+----------+---------------+
1 row in set (0.00 sec)
mysql> SELECT STAGE, STATE, END_TIME FROM performance_schema.clone_progress;
+-----------+-----------+----------------------------+
| STAGE     | STATE     | END_TIME                   |
+-----------+-----------+----------------------------+
| DROP DATA | Completed | 2020-06-29 05:53:08.728786 |
| FILE COPY | Completed | 2020-06-29 05:53:24.039983 |
| PAGE COPY | Completed | 2020-06-29 05:53:24.245478 |
| REDO COPY | Completed | 2020-06-29 05:53:24.448446 |
| FILE SYNC | Completed | 2020-06-29 05:53:25.815581 |
| RESTART   | Completed | 2020-06-29 05:54:39.487882 |
| RECOVERY  | Completed | 2020-06-29 05:54:42.656002 |
+-----------+-----------+----------------------------+
7 rows in set (0.00 sec)


2 通过performance_schema.setup_instruments参看执行情况

mysql> UPDATE performance_schema.setup_instruments SET ENABLED = 'YES'
       WHERE NAME LIKE 'stage/innodb/clone%';
mysql> UPDATE performance_schema.setup_consumers SET ENABLED = 'YES'
       WHERE NAME LIKE '%stages%';
mysql> SELECT EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED FROM performance_schema.events_stages_current
       WHERE EVENT_NAME LIKE 'stage/innodb/clone%';
+--------------------------------+----------------+----------------+
| EVENT_NAME                     | WORK_COMPLETED | WORK_ESTIMATED |
+--------------------------------+----------------+----------------+
| stage/innodb/clone (redo copy) |              1 |              1 |
+--------------------------------+----------------+----------------+
mysql> SELECT EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED FROM events_stages_history
       WHERE EVENT_NAME LIKE 'stage/innodb/clone%';
+--------------------------------+----------------+----------------+
| EVENT_NAME                     | WORK_COMPLETED | WORK_ESTIMATED |
+--------------------------------+----------------+----------------+
| stage/innodb/clone (file copy) |            301 |            301 |
| stage/innodb/clone (page copy) |              0 |              0 |
| stage/innodb/clone (redo copy) |              1 |              1 |
+--------------------------------+----------------+----------------+
mysql> SELECT * FROM performance_schema.setup_instruments
       WHERE NAME LIKE WHERE NAME LIKE '%clone%';
+----------------------------------------------+---------+
| NAME                                         | ENABLED |
+----------------------------------------------+---------+
| wait/synch/mutex/innodb/clone_snapshot_mutex | NO      |
| wait/synch/mutex/innodb/clone_sys_mutex      | NO      |
| wait/synch/mutex/innodb/clone_task_mutex     | NO      |
| wait/io/file/innodb/innodb_clone_file        | YES     |
| stage/innodb/clone (file copy)               | YES     |
| stage/innodb/clone (redo copy)               | YES     |
| stage/innodb/clone (page copy)               | YES     |
| statement/abstract/clone                     | YES     |
| statement/clone/local                        | YES     |
| statement/clone/client                       | YES     |
| statement/clone/server                       | YES     |
| memory/innodb/clone                          | YES     |
| memory/clone/data                            | YES     |
+----------------------------------------------+---------+
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
人工智能 数据挖掘 CDN
魔哈镜像迄今最大合成数据集 Cosmopedia
Cosmopedia 是一个由Mixtral-8x7B-Instruct-v0.1生成的合成教科书、博文、故事、帖子和WikiHow文章的数据集。该数据集包含超过3000万个文件和250亿个tokens,是HuggingFace用了10k张H100生成的迄今为止最大的开放合成数据集。
273 0
|
Kubernetes 前端开发 Docker
使用GitLab CI/CD部署应用到Kubernetes集群的方案
使用GitLab CI/CD部署应用到Kubernetes集群的方案
3451 0
使用GitLab CI/CD部署应用到Kubernetes集群的方案
|
网络协议 Windows
网络连接正常但百度网页打不开显示无法访问此网站解决方案
网络连接正常但百度网页打不开显示无法访问此网站解决方案
2523 0
网络连接正常但百度网页打不开显示无法访问此网站解决方案
|
10月前
|
机器学习/深度学习 自然语言处理 数据格式
社区供稿 |【8卡从零训练Steel-LLM】微调探索与评估
本篇文章主要介绍下微调上的探索以及评估。另外,还特意试了试训练CMMLU数据集,能在榜单上提多少分
|
12月前
|
SQL Java
flywa报错Detected resolved migration not applied to database: 20221103.10000
flywa报错Detected resolved migration not applied to database: 20221103.10000
232 2
|
11月前
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
279 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
|
数据可视化 JavaScript
< elementUi 中 树状侧边栏,机构单位 - 岗位 字典 >
本文介绍了如何在Vue + ElementUI环境中,利用Tree组件和Dropdown下拉菜单实现组织单位、岗位的树状数据可视化展示及操作。案例展示了包含头部搜索、节点下拉菜单功能的树形控件,支持增删改查操作。同时,提供了效果截图。注意,案例中混合使用了Vue2和Vue3语法,可能存在潜在问题,仅作参考。
335 0
< elementUi 中 树状侧边栏,机构单位 - 岗位 字典 >
|
SQL 监控 druid
MySQL连接池DataSource怎么使用?
**摘要:** 本文探讨了数据库连接池在高并发Web应用中的重要性,特别聚焦于阿里巴巴的DruidDataSource。DruidDataSource是一个高效的Java数据库连接池,包含监控、SQL防护和日志功能。文中通过示例展示了如何配置和使用DruidDataSource,包括在Java应用中的直接配置和在Spring Boot中的集成,并提到了启用SQL监控。此外,还分享了设置连接池参数的技巧,如合理设定初始、最大和最小连接数,并强调了定期监控和使用内置监控工具优化性能的重要性。
626 0
|
JSON 缓存 前端开发
Django视图层探索:GET/POST请求处理、参数传递与响应方式详解
Django视图层探索:GET/POST请求处理、参数传递与响应方式详解
|
算法 数据处理 异构计算
CatBoost高级教程:分布式训练与大规模数据处理
CatBoost高级教程:分布式训练与大规模数据处理【2月更文挑战第15天】
1005 14