本节介绍用于监控克隆操作的选项。
克隆操作可能需要一些时间才能完成,具体取决于数据量以及与数据传输相关的其他因素。您可以使用 clone_status
和 clone_progress
性能架构表监控接收方 MySQL 服务器实例上的克隆操作的状态和进度。
clone_status
和 clone_progress
性能架构表只能用于监控接收方 MySQL 服务器实例上的克隆操作。要监控捐赠方 MySQL 服务器实例上的克隆操作,请使用克隆阶段事件,如 使用性能架构阶段事件监控克隆操作 中所述。
clone_status
表提供了当前或最后一次执行的克隆操作的状态。克隆操作有四种可能的状态:未开始
、正在进行
、已完成
和失败
。clone_progress
表按阶段提供当前或最后一次执行的克隆操作的进度信息。克隆操作的阶段包括DROP DATA
、FILE COPY
、PAGE_COPY
、REDO_COPY
、FILE_SYNC
、RESTART
和RECOVERY
。
访问性能架构克隆表需要对性能架构具有 SELECT
和 EXECUTE
权限。
要检查克隆操作的状态
连接到接收方 MySQL 服务器实例。
查询
clone_status
表mysql> SELECT STATE FROM performance_schema.clone_status; +-----------+ | STATE | +-----------+ | Completed | +-----------+
如果在克隆操作期间发生故障,您可以查询 clone_status
表以获取错误信息
mysql> SELECT STATE, ERROR_NO, ERROR_MESSAGE FROM performance_schema.clone_status;
+-----------+----------+---------------+
| STATE | ERROR_NO | ERROR_MESSAGE |
+-----------+----------+---------------+
| Failed | xxx | "xxxxxxxxxxx" |
+-----------+----------+---------------+
要查看克隆操作每个阶段的详细信息
连接到接收方 MySQL 服务器实例。
查询
clone_progress
表。例如,以下查询提供了克隆操作每个阶段的状态和结束时间数据mysql> SELECT STAGE, STATE, END_TIME FROM performance_schema.clone_progress; +-----------+-----------+----------------------------+ | stage | state | end_time | +-----------+-----------+----------------------------+ | DROP DATA | Completed | 2019-01-27 22:45:43.141261 | | FILE COPY | Completed | 2019-01-27 22:45:44.457572 | | PAGE COPY | Completed | 2019-01-27 22:45:44.577330 | | REDO COPY | Completed | 2019-01-27 22:45:44.679570 | | FILE SYNC | Completed | 2019-01-27 22:45:44.918547 | | RESTART | Completed | 2019-01-27 22:45:48.583565 | | RECOVERY | Completed | 2019-01-27 22:45:49.626595 | +-----------+-----------+----------------------------+
有关您可以监控的其他克隆状态和进度数据点,请参阅 第 29.12.19 节,“性能架构克隆表”。
克隆操作可能需要一些时间才能完成,具体取决于数据量以及与数据传输相关的其他因素。有三个阶段事件用于监控克隆操作的进度。每个阶段事件都报告
和 WORK_COMPLETED
值。报告的值会随着操作的进行而修改。WORK_ESTIMATED
此监控克隆操作的方法可以在捐赠方或接收方 MySQL 服务器实例上使用。
按发生顺序,克隆操作阶段事件包括
stage/innodb/clone (file copy)
:指示克隆操作的文件复制阶段的进度。
和WORK_ESTIMATED
单位是文件块。要在文件复制阶段开始时知道要传输的文件数,并根据文件数估算块数。WORK_COMPLETED
WORK_ESTIMATED
设置为估计的文件块数。WORK_COMPLETED
在发送每个块后更新。stage/innodb/clone (页面复制)
:指示克隆操作页面复制阶段的进度。WORK_ESTIMATED
和WORK_COMPLETED
单位是页面。文件复制阶段完成后,要传输的页面数量已知,并将WORK_ESTIMATED
设置为此值。每发送一个页面后,都会更新WORK_COMPLETED
。stage/innodb/clone (重做日志复制)
:指示克隆操作重做日志复制阶段的进度。WORK_ESTIMATED
和WORK_COMPLETED
单位是重做日志块。页面复制阶段完成后,要传输的重做日志块数量已知,并将WORK_ESTIMATED
设置为此值。每发送一个块后,都会更新WORK_COMPLETED
。
以下示例演示了如何启用 stage/innodb/clone%
事件检测工具和相关的使用者表来监控克隆操作。有关 Performance Schema 阶段事件检测工具和相关使用者的信息,请参阅 第 29.12.5 节,“Performance Schema 阶段事件表”。
启用
stage/innodb/clone%
检测工具mysql> UPDATE performance_schema.setup_instruments SET ENABLED = 'YES' WHERE NAME LIKE 'stage/innodb/clone%';
启用阶段事件使用者表,其中包括
events_stages_current
、events_stages_history
和events_stages_history_long
。mysql> UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE '%stages%';
运行克隆操作。在本例中,将本地数据目录克隆到名为
cloned_dir
的目录。mysql> CLONE LOCAL DATA DIRECTORY = '/path/to/cloned_dir';
通过查询 Performance Schema
events_stages_current
表来检查克隆操作的进度。显示的阶段事件因正在进行的克隆阶段而异。WORK_COMPLETED
列显示已完成的工作。WORK_ESTIMATED
列显示总共需要的工作量。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 | +--------------------------------+----------------+----------------+
如果克隆操作已完成,则
events_stages_current
表将返回一个空集。在这种情况下,您可以检查events_stages_history
表以查看已完成操作的事件数据。例如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 | +--------------------------------+----------------+----------------+
Performance Schema 提供了用于高级性能监控克隆操作的检测工具。要查看可用的克隆检测工具,请发出以下查询
mysql> SELECT NAME,ENABLED FROM performance_schema.setup_instruments
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/synch/mutex/group_rpl/LOCK_clone_donor_list | NO |
| wait/synch/mutex/group_rpl/LOCK_clone_handler_run | NO |
| wait/synch/mutex/group_rpl/LOCK_clone_query | NO |
| wait/synch/mutex/group_rpl/LOCK_clone_read_mode | NO |
| wait/synch/cond/group_rpl/COND_clone_handler_run | 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 |
+---------------------------------------------------+---------+
等待检测工具
Performance Schema 等待检测工具跟踪需要时间的事件。克隆等待事件检测工具包括
wait/synch/mutex/innodb/clone_snapshot_mutex
:跟踪克隆快照互斥量的等待事件,该互斥量同步多个克隆线程之间对动态快照对象(在捐赠者和接收者上)的访问。wait/synch/mutex/innodb/clone_sys_mutex
:跟踪克隆系统互斥量的等待事件。一个 MySQL 服务器实例中有一个克隆系统对象。此互斥量同步对捐赠者和接收者上克隆系统对象的访问。它由克隆线程以及其他前台和后台线程获取。wait/synch/mutex/innodb/clone_task_mutex
:跟踪克隆任务互斥量的等待事件,用于克隆任务管理。clone_task_mutex
由克隆线程获取。wait/io/file/innodb/innodb_clone_file
:跟踪克隆操作的文件的所有 I/O 等待操作。
有关监控 InnoDB
互斥量等待的信息,请参阅 第 17.16.2 节,“使用 Performance Schema 监控 InnoDB 互斥量等待”。有关监控等待事件的一般信息,请参阅 第 29.12.4 节,“Performance Schema 等待事件表”。
阶段检测工具
Performance Schema 阶段事件跟踪语句执行过程中发生的步骤。克隆阶段事件检测工具包括
stage/innodb/clone (文件复制)
:指示克隆操作的文件复制阶段的进度。stage/innodb/clone (重做日志复制)
:指示克隆操作的重做日志复制阶段的进度。stage/innodb/clone (页面复制)
:指示克隆操作的页面复制阶段的进度。
有关使用阶段事件监控克隆操作的信息,请参阅 使用 Performance Schema 阶段事件监控克隆操作。有关监控阶段事件的一般信息,请参阅 第 29.12.5 节,“Performance Schema 阶段事件表”。
语句检测工具
Performance Schema 语句事件跟踪语句执行。当克隆操作启动时,克隆语句检测工具跟踪的不同语句类型可能会并行执行。您可以在 Performance Schema 语句事件表中观察这些语句事件。执行的语句数取决于 clone_max_concurrency
和 clone_autotune_concurrency
设置。
克隆语句事件检测工具包括
statement/abstract/clone
:跟踪任何克隆操作的语句事件,然后将其分类为本地、客户端或服务器操作类型。statement/clone/local
:跟踪本地克隆操作的克隆语句事件;在执行CLONE LOCAL
语句时生成。statement/clone/client
:跟踪在接收方 MySQL 服务器实例上发生的远程克隆语句事件;在接收方上执行CLONE INSTANCE
语句时生成。statement/clone/server
:跟踪在捐赠者 MySQL 服务器实例上发生的远程克隆语句事件;在接收方上执行CLONE INSTANCE
语句时生成。
有关监控 Performance Schema 语句事件的信息,请参阅 第 29.12.6 节,“Performance Schema 语句事件表”。
内存检测工具
Performance Schema 内存检测工具跟踪内存使用情况。克隆内存使用情况检测工具包括
memory/innodb/clone
:跟踪InnoDB
为动态快照分配的内存。memory/clone/data
:跟踪克隆插件在克隆操作期间分配的内存。
有关使用 Performance Schema 监控内存使用情况的信息,请参阅 第 29.12.20.10 节,“内存摘要表”。