MySQL 从8.0.17开始支持克隆插件,允许在本地或远程 MySQL 实例在线克隆数据。克隆数据是存储在 InnoDB 其中的数据的物理快照,其中包括库、表、表空间和数据字典元数据。克隆的数据包含一个功能齐全的数据目录,允许使用克隆插件进行 MySQL 服务器配置。
克隆插件支持两种克隆方式:
插件库文件必须位于MySQL插件目录(由plugin_dir系统变量命名的目录)中,插件库文件的基本名称为 mysql_clone.so。文件名后缀因平台.so而异(例如,对于Unix和类似Unix的系统,.dll对于Windows。
root@mysql 14:12: [(none)]> show variables like '%plugin_dir%';
+---------------+-----------------------------+
| Variable_name | Value |
+---------------+-----------------------------+
| plugin_dir | /var/soft/mysql/lib/plugin/ |
+---------------+-----------------------------+
1 row in set (0.01 sec)
要在服务器启动时加载插件,请使用–plugin-load-add选项来命名包含该插件 的库文件。使用此插件加载方法,每次服务器启动时都必须给出该选项。例如,将这些行放在my.cnf 文件中,并.so根据需要调整平台的后缀:
#--plugin-load-add在从以前的MySQL版本升级期间重新启动服务器时,无法使用该选项加载克隆插件。例如,将二进制文件或程序包从MySQL 5.7升级到MySQL 8.0后,尝试重新启动服务器 plugin-load-add=mysql_clone.so 会导致以下错误:[ERROR] [MY-013238] [Server]安装插件'clone'时出错:升级期间无法安装。解决方法是在尝试使用启动服务器之前先升级服务器 plugin-load-add=mysql_clone.so。
[mysqld]
plugin-load-add=mysql_clone.so
使用INSTALL PLUGIN加载插件,并将其注册到mysql.plugins 系统表中,以使插件在每次后续的正常服务器启动时都加载,而无需 --plugin-load-add。
root@mysql 14:12: [(none)]> INSTALL PLUGIN clone SONAME 'mysql_clone.so';
Query OK, 0 rows affected (0.01 sec)
root@mysql 14:12: [(none)]> SELECT * FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'clone'\G
*************************** 1. row ***************************
PLUGIN_NAME: clone
PLUGIN_VERSION: 1.0
PLUGIN_STATUS: ACTIVE
PLUGIN_TYPE: CLONE
PLUGIN_TYPE_VERSION: 1.0
PLUGIN_LIBRARY: mysql_clone.so
PLUGIN_LIBRARY_VERSION: 1.10
PLUGIN_AUTHOR: Oracle Corporation
PLUGIN_DESCRIPTION: CLONE PLUGIN
PLUGIN_LICENSE: GPL
LOAD_OPTION: ON
root@mysql 14:12: [(none)]> show variables like '%clone%';
+-----------------------------+---------+
| Variable_name | Value |
+-----------------------------+---------+
| clone_autotune_concurrency | ON |
| clone_buffer_size | 4194304 |
| clone_ddl_timeout | 300 |
| clone_enable_compression | OFF |
| clone_max_concurrency | 16 |
| clone_max_data_bandwidth | 0 |
| clone_max_network_bandwidth | 0 |
| clone_ssl_ca | |
| clone_ssl_cert | |
| clone_ssl_key | |
| clone_valid_donor_list | |
+-----------------------------+---------+
11 rows in set (0.00 sec)
拥有BACKUP_ADMIN权限才能执行CLONE LOCAL DATA DIRECTORY的语句。
root@mysql 14:42: [(none)]> create user clone_user;
Query OK, 0 rows affected (0.01 sec)
root@mysql 14:42: [(none)]> GRANT BACKUP_ADMIN ON *.* TO 'clone_user';
Query OK, 0 rows affected (0.01 sec)
clone插件支持以下用于在本地克隆数据的语法:将数据从本地MySQL数据目录克隆到运行MySQL服务器实例的同一服务器或节点上的另一个目录:
clone_user@mysql 14:48: [(none)]> CLONE LOCAL DATA DIRECTORY = '/data/mysql/clone';
Query OK, 0 rows affected (1 min 23.15 sec)
其中/data/mysql/clone是将数据克隆到的本地目录的完整路径。绝对路径是必需的,并且指定的目录(“ clone_dir”)一定不存在,但是指定的路径必须是存在的路径。MySQL服务器必须具有创建目录所需的写权限。
克隆目录可以直接作为数据目录启动数据库。
[root@zijie mysql]# mv data/ data_bak
[root@zijie mysql]# mv clone/ data/
[root@zijie mysql]# mysqld_safe --defaults-file=/etc/my.cnf &
root@mysql 17:39: [performance_schema]> select * from clone_status;
+------+------+-----------+-------------------------+-------------------------+----------------+----------------+----------+---------------+---------------+-----------------+---------------------------------------------+
| ID | PID | STATE | BEGIN_TIME | END_TIME | SOURCE | DESTINATION | ERROR_NO | ERROR_MESSAGE | BINLOG_FILE | BINLOG_POSITION | GTID_EXECUTED |
+------+------+-----------+-------------------------+-------------------------+----------------+----------------+----------+---------------+---------------+-----------------+---------------------------------------------+
| 1 | 0 | Completed | 2020-12-27 15:01:31.205 | 2020-12-27 15:10:08.372 | LOCAL INSTANCE | LOCAL INSTANCE | 0 | | binlog.000013 | 196 | 594f981f-43ac-11eb-abbb-00163e0c8a51:1-2101 |
+------+------+-----------+-------------------------+-------------------------+----------------+----------------+----------+---------------+---------------+-----------------+---------------------------------------------+
1 row in set (0.01 sec)
root@mysql 17:39: [performance_schema]> select * from clone_progress;
+------+-----------+-----------+----------------------------+----------------------------+---------+------------+------------+---------+------------+---------------+
| ID | STAGE | STATE | BEGIN_TIME | END_TIME | THREADS | ESTIMATE | DATA | NETWORK | DATA_SPEED | NETWORK_SPEED |
+------+-----------+-----------+----------------------------+----------------------------+---------+------------+------------+---------+------------+---------------+
| 1 | DROP DATA | Completed | 2020-12-27 15:01:31.204701 | 2020-12-27 15:01:31.213885 | 1 | 0 | 0 | 0 | 0 | 0 |
| 1 | FILE COPY | Completed | 2020-12-27 15:01:31.213946 | 2020-12-27 15:02:15.155140 | 2 | 2357319361 | 2357319361 | 0 | 0 | 0 |
| 1 | PAGE COPY | Completed | 2020-12-27 15:02:15.155312 | 2020-12-27 15:02:15.460111 | 2 | 0 | 0 | 0 | 0 | 0 |
| 1 | REDO COPY | Completed | 2020-12-27 15:02:15.460294 | 2020-12-27 15:02:15.661953 | 2 | 3072 | 3072 | 0 | 0 | 0 |
| 1 | FILE SYNC | Completed | 2020-12-27 15:02:15.662069 | 2020-12-27 15:02:58.471690 | 2 | 0 | 0 | 0 | 0 | 0 |
| 1 | RESTART | Completed | 2020-12-27 15:02:58.471690 | 2020-12-27 15:10:01.386918 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | RECOVERY | Completed | 2020-12-27 15:10:01.386918 | 2020-12-27 15:10:08.371822 | 0 | 0 | 0 | 0 | 0 | 0 |
+------+-----------+-----------+----------------------------+----------------------------+---------+------------+------------+---------+------------+---------------+
7 rows in set (0.00 sec)
clone插件支持从远程MySQL服务器实例(捐赠者)克隆数据,并将其传输到发起克隆操作的MySQL实例(接受者)。
CLONE INSTANCE FROM 'user'@'host':port
IDENTIFIED BY 'password'
[DATA DIRECTORY [=] 'clone_dir']
[REQUIRE [NO] SSL];
#DATA DIRECTORY [=] 'clone_dir'是一个可选子句,用于指定接受者上要克隆的数据的目录。如果不想删除接受者数据目录中的现有数据,可以使用此选项。必须使用绝对路径,且目录必须不存在。MySQL服务器必须具有创建目录所需的写权限。如果不使用optional子句,则克隆操作将删除接受者数据目录中的现有数据,将其替换为克隆的数据,然后自动重新启动服务器。
#[REQUIRE [NO] SSL]指定在通过网络传输克隆数据时是否使用加密连接。如果无法满足显式规范,则返回错误。如果未指定SSL子句,则克隆会默认尝试建立加密连接,如果安全连接尝试失败,则会回退到不安全的连接。无论是否指定此子句,克隆加密数据时都需要安全连接。
要执行克隆操作,克隆插件必须在捐赠者和和接收者MySQL服务器实例上均处于活动状态。执行克隆操作需要捐赠者和和接收者上的MySQL用户。
注意:
捐赠者和接收者必须具有相同的MySQL服务器版本。MYSQL 8.0.17及更高版本支持clone插件。
捐赠者和接收者MySQL服务器实例必须在相同的操作系统和平台上运行。
接收者必须具有足够的磁盘空间来存储克隆的数据。默认情况下,在克隆供体数据之前会删除接收者的数据,因此只需要足够的空间即可存储捐赠者数据。如果使用该DATA DIRECTORY子句克隆到命名目录,则必须有足够的磁盘空间用于现有的接收者的数据和克隆的数据。
InnoDB允许在数据目录之外创建一些表空间类型。如果捐赠者MySQL服务器实例的表空间位于数据目录之外,则克隆操作必须能够访问这些表空间。可以查询 INFORMATION_SCHEMA.FILES 表以标识驻留在数据目录之外的表空间。驻留在数据目录之外的文件具有到数据目录以外的目录的标准路径。
在捐赠者上活动的插件(包括任何密钥插件)也必须在接收者上活动。您可以通过发布SHOW PLUGINS语句或查询 INFORMATION_SCHEMA.PLUGINS 表来标识活动插件 。
捐赠者和接受者必须具有相同的MySQL服务器字符集和排序规则。
捐赠者和接受者必须具有相同的innodb_page_size和innodb_data_file_path。
如果克隆加密或页面压缩的数据,则捐赠者和接受者必须具有相同的文件系统块大小。
clone_valid_donor_list 参数需要在接收者设置,值为捐赠者MySQL服务器实例的主机地址。只能从有效捐赠者列表上的主机克隆数据。
一次只能进行一次克隆操作。要确定克隆操作是否正在运行,可以查询 clone_status表。
克隆插件以1MB数据包以及元数据的形式传输数据。因此,在捐助者和接收者MySQL服务器实例上的最低要求max_allowed_packet值为2MB。max_allowed_packet小于2MB的 值将导致错误。使用以下查询来检查您的 max_allowed_packet 设置:
捐赠者上的undo表空间文件名必须唯一。当将数据克隆到接收者时,undo表空间(无论在捐赠者上的位置如何)都将克隆到innodb_undo_directory 接收者的位置或子句指定的目录(如果使用)中。因此,不允许在施主上使用重复的undo表空间文件名。从MySQL 8.0.18开始,如果在克隆操作期间遇到重复的undo表空间文件名,则会报告错误。在MySQL 8.0.18之前,克隆具有相同文件名的undo表空间可能导致undo表空间文件在接收者上被覆盖。
默认情况下,克隆数据后,接收者MySQL服务器实例将自动重新启动(停止和启动)。为了进行自动重启,接收者上必须有一个监视过程来检测服务器关闭。否则,在克隆数据并关闭接收方MySQL服务器实例后,克隆操作会因以下错误而暂停:
ERROR 3707 (HY000): Restart server failed (mysqld is not managed by supervisor process).
此错误并不表示克隆失败。这意味着克隆数据后,必须再次手动启动接收者MySQL服务器实例。手动启动服务器后,可以连接到接收者MySQL服务器实例,并检查克隆操作是否成功完成。
示例:
捐赠者:
CREATE USER 'donor_clone_user'@'%' IDENTIFIED BY '123456';
GRANT BACKUP_ADMIN on *.* to 'donor_clone_user'@'%';
INSTALL PLUGIN clone SONAME 'mysql_clone.so';
接受者:
CREATE USER 'recipient_clone_user'@'%' IDENTIFIED BY '123456';
GRANT CLONE_ADMIN on *.* to 'recipient_clone_user'@'%';
INSTALL PLUGIN clone SONAME 'mysql_clone.so';
SET GLOBAL clone_valid_donor_list = '127.0.0.1:3306';
#在接收者执行
root@mysql 17:36: [(none)]> CLONE INSTANCE FROM 'donor_clone_user'@'127.0.0.1':3306 IDENTIFIED BY '123456';
Query OK, 0 rows affected (1 min 1.33 sec)
root@mysql 17:37: [(none)]> Restarting mysqld...
2020-12-27T09:37:35.504997Z mysqld_safe Number of processes running now: 0
2020-12-27T09:37:35.509610Z mysqld_safe mysqld restarted
root@mysql 17:38: [performance_schema]> select * from clone_progress;
+------+-----------+-----------+----------------------------+----------------------------+---------+------------+------------+------------+------------+---------------+
| ID | STAGE | STATE | BEGIN_TIME | END_TIME | THREADS | ESTIMATE | DATA | NETWORK | DATA_SPEED | NETWORK_SPEED |
+------+-----------+-----------+----------------------------+----------------------------+---------+------------+------------+------------+------------+---------------+
| 1 | DROP DATA | Completed | 2020-12-27 17:36:31.099998 | 2020-12-27 17:36:31.479585 | 1 | 0 | 0 | 0 | 0 | 0 |
| 1 | FILE COPY | Completed | 2020-12-27 17:36:31.479697 | 2020-12-27 17:36:51.912601 | 2 | 1128502977 | 1128502977 | 1128571265 | 0 | 0 |
| 1 | PAGE COPY | Completed | 2020-12-27 17:36:51.912710 | 2020-12-27 17:36:52.319905 | 2 | 0 | 0 | 197 | 0 | 0 |
| 1 | REDO COPY | Completed | 2020-12-27 17:36:52.320053 | 2020-12-27 17:36:52.620652 | 2 | 3584 | 3584 | 4079 | 0 | 0 |
| 1 | FILE SYNC | Completed | 2020-12-27 17:36:52.620782 | 2020-12-27 17:37:32.412985 | 2 | 0 | 0 | 0 | 0 | 0 |
| 1 | RESTART | Completed | 2020-12-27 17:37:32.412985 | 2020-12-27 17:37:35.863105 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | RECOVERY | Completed | 2020-12-27 17:37:35.863105 | 2020-12-27 17:37:37.250319 | 0 | 0 | 0 | 0 | 0 | 0 |
+------+-----------+-----------+----------------------------+----------------------------+---------+------------+------------+------------+------------+---------------+
7 rows in set (0.01 sec)
root@mysql 17:39: [performance_schema]> select * from clone_status;
+------+------+-----------+-------------------------+-------------------------+----------------+----------------+----------+---------------+---------------+-----------------+---------------------------------------------------------------------------------------+
| ID | PID | STATE | BEGIN_TIME | END_TIME | SOURCE | DESTINATION | ERROR_NO | ERROR_MESSAGE | BINLOG_FILE | BINLOG_POSITION | GTID_EXECUTED |
+------+------+-----------+-------------------------+-------------------------+----------------+----------------+----------+---------------+---------------+-----------------+---------------------------------------------------------------------------------------+
| 1 | 0 | Completed | 2020-12-27 17:36:31.085 | 2020-12-27 17:37:37.250 | 127.0.0.1:3306 | LOCAL INSTANCE | 0 | | binlog.000014 | 1278 | 594f981f-43ac-11eb-abbb-00163e0c8a51:1-2101,
8e07f60e-4812-11eb-b202-00163e0c8a51:1-5 |
+------+------+-----------+-------------------------+-------------------------+----------------+----------------+----------+---------------+---------------+-----------------+---------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
#克隆到指定目录
root@mysql 17:47: [performance_schema]> select * from clone_progress;
+------+-----------+-------------+----------------------------+----------------------------+---------+------------+------------+------------+------------+---------------+
| ID | STAGE | STATE | BEGIN_TIME | END_TIME | THREADS | ESTIMATE | DATA | NETWORK | DATA_SPEED | NETWORK_SPEED |
+------+-----------+-------------+----------------------------+----------------------------+---------+------------+------------+------------+------------+---------------+
| 1 | DROP DATA | Completed | 2020-12-27 17:42:02.556278 | 2020-12-27 17:42:02.688091 | 1 | 0 | 0 | 0 | 0 | 0 |
| 1 | FILE COPY | Completed | 2020-12-27 17:42:02.688182 | 2020-12-27 17:42:23.207776 | 2 | 1128388289 | 1128388289 | 1128456442 | 0 | 0 |
| 1 | PAGE COPY | Completed | 2020-12-27 17:42:23.207910 | 2020-12-27 17:42:23.519334 | 2 | 0 | 0 | 197 | 0 | 0 |
| 1 | REDO COPY | Completed | 2020-12-27 17:42:23.519444 | 2020-12-27 17:42:23.819936 | 2 | 3584 | 3584 | 4079 | 0 | 0 |
| 1 | FILE SYNC | Completed | 2020-12-27 17:42:23.820066 | 2020-12-27 17:43:03.065116 | 2 | 0 | 0 | 0 | 0 | 0 |
| 1 | RESTART | Not Started | NULL | NULL | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | RECOVERY | Not Started | NULL | NULL | 0 | 0 | 0 | 0 | 0 | 0 |
+------+-----------+-------------+----------------------------+----------------------------+---------+------------+------------+------------+------------+---------------+
7 rows in set (0.00 sec)
root@mysql 17:47: [performance_schema]> select * from clone_status;
+------+------+-----------+-------------------------+-------------------------+----------------+------------------------+----------+---------------+-------------+-----------------+---------------+
| ID | PID | STATE | BEGIN_TIME | END_TIME | SOURCE | DESTINATION | ERROR_NO | ERROR_MESSAGE | BINLOG_FILE | BINLOG_POSITION | GTID_EXECUTED |
+------+------+-----------+-------------------------+-------------------------+----------------+------------------------+----------+---------------+-------------+-----------------+---------------+
| 1 | 11 | Completed | 2020-12-27 17:42:02.383 | 2020-12-27 17:43:03.065 | 127.0.0.1:3306 | /data/mysql/clone_dir/ | 0 | | | 0 | |
+------+------+-----------+-------------------------+-------------------------+----------------+------------------------+----------+---------------+-------------+-----------------+---------------+
1 row in set (0.01 sec)
克隆插件支持复制。除了克隆数据之外,克隆操作还从捐赠者提取复制位点并将其传递给接收者,从而可以使用克隆插件来配置组复制成员和副本。与复制大量事务相比,使用克隆插件进行配置要快得多,效率也更高。在克隆操作期间,二进制日志位置(文件名,偏移量)和 gtid_executed提取GTID集,并将其从捐赠者MySQL服务器实例传输到接收者。此数据允许在复制流中的一致位置启动复制。二进制日志和中继日志(保存在文件中)不会从捐赠者复制到收件人。要启动复制,在克隆数据的时间和开始复制的时间之间,不能清除接收者追赶捐赠者所需的二进制日志。如果所需的二进制日志不可用,则会报告复制握手错误。因此,应将克隆的实例添加到复制组中,而不会产生过多的延迟,以避免清除必需的二进制日志或新成员明显滞后。还可以将组复制成员配置为使用克隆插件作为分布式恢复的选项,在这种情况下,加入成员会自动选择最有效的方式从现有组成员中检索组数据。
root@mysql 17:57: [(none)]> SELECT BINLOG_FILE, BINLOG_POSITION FROM performance_schema.clone_status;
+---------------+-----------------+
| BINLOG_FILE | BINLOG_POSITION |
+---------------+-----------------+
| binlog.000014 | 1459 |
+---------------+-----------------+
1 row in set (0.00 sec)
root@mysql 17:57: [(none)]> SELECT @@GLOBAL.GTID_EXECUTED;
+---------------------------------------------------------------------------------------+
| @@GLOBAL.GTID_EXECUTED |
+---------------------------------------------------------------------------------------+
| 594f981f-43ac-11eb-abbb-00163e0c8a51:1-2101,
8e07f60e-4812-11eb-b202-00163e0c8a51:1-6 |
+---------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
CHANGE MASTER TO MASTER_HOST ='127.0.0.1',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_PORT=3306,MASTER_AUTO_POSITION = 1;
在MySQL 8.0中,默认情况下,复制元数据存储库保存在表中,这些表在克隆操作期间从捐赠者复制到接收者。复制元数据存储库包含与复制相关的配置设置,可用于在克隆操作之后正确地恢复复制。
克隆数据后,将创建以下目录和文件以供内部使用。它们不应该被修改。
#clone:包含克隆操作使用的内部克隆文件。在要克隆数据的目录中创建。
#ib_archive:包含内部存档的日志文件,该日志文件在克隆操作期间存档在捐赠者上。
*.#clone files:当现有数据目录被远程克隆操作替换时,在收件人上创建的临时数据文件。
[Warning] [MY-013453] [InnoDB] Clone removing all user data for provisioning:
Started...
[Warning] [MY-013453] [InnoDB] Clone removing all user data for provisioning:
Finished
如果在删除数据时发生故障,则在克隆操作之前,接收者可能会剩下一部分模式,表和表空间。在执行克隆操作期间或发生故障之后的任何时间,服务器始终处于一致状态。
从捐赠者克隆数据。克隆了用户创建的数据,字典元数据和其他系统数据。如果在克隆数据时发生故障,则回滚克隆操作并删除所有克隆的数据。在此阶段,还删除了接受者上先前存在的数据,这使接收者没有用户数据。
如果发生这种情况,可以纠正故障原因并重新执行克隆操作,也可以放弃克隆操作并从克隆操作之前进行的备份中还原接收者数据。
服务器自动重新启动(适用于不克隆到命名目录的远程克隆操作)。在启动期间,将执行典型的服务器启动任务。如果服务器自动重启失败,则可以手动重启服务器以完成克隆操作。
如果在克隆操作期间发生网络错误,并且在五分钟内解决了错误,则操作将恢复。否则,该操作将中止并返回错误。
接收者使用clone_status和 clone_progress表来监视克隆操作
捐赠者需要通过Performance Schema下的事件表进行监控
stage/innodb/clone (file copy):指示克隆操作的文件复制阶段的进度。 WORK_ESTIMATED和 WORK_COMPLETED单位是文件块。在文件复制阶段开始时就知道要传输的文件数,并且基于文件数来估计块数。 WORK_ESTIMATED设置为估计的文件块数。WORK_COMPLETED 发送每个块后更新。
stage/innodb/clone (page copy):指示克隆操作的页面复制阶段的进度。WORK_ESTIMATED和 WORK_COMPLETED单位是页面。一旦完成文件复制阶段,就知道要传输的页数,并将 WORK_ESTIMATED其设置为该值。 WORK_COMPLETED发送每页后更新。
stage/innodb/clone (redo copy):指示克隆操作的重做复制阶段的进度。WORK_ESTIMATED和 WORK_COMPLETED单位是重做块。一旦页面复制阶段完成,就知道要传输的重做块的数量,并将 WORK_ESTIMATED其设置为该值。 WORK_COMPLETED发送每个块后更新。
UPDATE performance_schema.setup_instruments SET ENABLED = 'YES' WHERE NAME LIKE 'stage/innodb/clone%';
UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE '%stages%';
root@mysql 18:30: [(none)]> SELECT * FROM performance_schema.setup_instruments WHERE NAME LIKE '%clone%';
+----------------------------------------------+---------+-------+------------+------------+---------------+
| NAME | ENABLED | TIMED | PROPERTIES | VOLATILITY | DOCUMENTATION |
+----------------------------------------------+---------+-------+------------+------------+---------------+
| wait/synch/mutex/innodb/clone_snapshot_mutex | NO | NO | | 0 | NULL |
| wait/synch/mutex/innodb/clone_sys_mutex | NO | NO | | 0 | NULL |
| wait/synch/mutex/innodb/clone_task_mutex | NO | NO | | 0 | NULL |
| wait/io/file/innodb/innodb_clone_file | YES | YES | | 0 | NULL |
| stage/innodb/clone (file copy) | YES | YES | progress | 0 | NULL |
| stage/innodb/clone (redo copy) | YES | YES | progress | 0 | NULL |
| stage/innodb/clone (page copy) | YES | YES | progress | 0 | NULL |
| statement/abstract/clone | YES | YES | mutable | 0 | NULL |
| statement/clone/local | YES | YES | | 0 | NULL |
| statement/clone/client | YES | YES | | 0 | NULL |
| statement/clone/server | YES | YES | | 0 | NULL |
| memory/innodb/clone | YES | NULL | | 0 | NULL |
| memory/clone/data | YES | NULL | | 0 | NULL |
+----------------------------------------------+---------+-------+------------+------------+---------------+
13 rows in set (0.00 sec)
root@mysql 18:27: [performance_schema]> 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) | 1077 | 1077 |
| stage/innodb/clone (page copy) | 0 | 0 |
| stage/innodb/clone (redo copy) | 1 | 1 |
+--------------------------------+----------------+----------------+
3 rows in set (0.00 sec)
root@mysql 18:29: [(none)]> 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 (file copy) | 520 | 1077 |
+--------------------------------+----------------+----------------+
1 row in set (0.01 sec)
相关等待事件: