Documentation Home

5.6.7.10 监控克隆操作

本节介绍用于监视克隆操作的选项。

使用性能模式克隆表监视克隆操作

克隆操作可能需要一些时间才能完成,具体取决于数据量和与数据传输相关的其他因素。您可以使用性能模式表 监视接收方 MySQL 服务器实例上克隆操作的状态和进度 clone_statusclone_progress

笔记

和Performance Schema 表clone_statusclone_progress用于仅监视收件人 MySQL 服务器实例上的克隆操作。要监视捐赠者 MySQL 服务器实例上的克隆操作,请使用克隆阶段事件,如 使用性能模式阶段事件监视克隆操作中所述。

  • clone_status表提供了当前或上次执行的克隆操作的状态。克隆操作有四种可能的状态: Not StartedIn ProgressCompletedFailed

  • clone_progress表按阶段提供当前或上次执行的克隆操作的进度信息。克隆操作的阶段包括DROP DATAFILE COPYPAGE_COPYREDO_COPYFILE_SYNCRESTARTRECOVERY

访问性能模式克隆表需要性能模式 的SELECT和 权限。EXECUTE

要检查克隆操作的状态:

  1. 连接到收件人 MySQL 服务器实例。

  2. 查询clone_status表:

    Press CTRL+C to copy
    mysql> SELECT STATE FROM performance_schema.clone_status; +-----------+ | STATE | +-----------+ | Completed | +-----------+

如果在克隆操作期间发生故障,您可以查询clone_status表以获取错误信息:

Press CTRL+C to copy
mysql> SELECT STATE, ERROR_NO, ERROR_MESSAGE FROM performance_schema.clone_status; +-----------+----------+---------------+ | STATE | ERROR_NO | ERROR_MESSAGE | +-----------+----------+---------------+ | Failed | xxx | "xxxxxxxxxxx" | +-----------+----------+---------------+

查看克隆操作每个阶段的详细信息:

  1. 连接到收件人 MySQL 服务器实例。

  2. 查询clone_progress 表。例如,以下查询为克隆操作的每个阶段提供状态和结束时间数据:

    Press CTRL+C to copy
    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 | +-----------+-----------+----------------------------+

    对于您可以监控的其他克隆状态和进度数据点,请参阅 第 27.12.19 节,“性能模式克隆表”

使用性能模式阶段事件监视克隆操作

克隆操作可能需要一些时间才能完成,具体取决于数据量和与数据传输相关的其他因素。有三个阶段事件用于监视克隆操作的进度。每个阶段的事件报告 WORK_COMPLETEDWORK_ESTIMATED值。报告的值随着操作的进展而修改。

这种监视克隆操作的方法可用于捐赠者或接受者 MySQL 服务器实例。

按发生顺序,克隆操作阶段事件包括:

  • 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_ESTIMATEDWORK_COMPLETED一旦页面复制阶段完成,要传输的重做块的数量是已知的,并 WORK_ESTIMATED设置为此值。 WORK_COMPLETED在发送每个块后更新。

以下示例演示如何启用 stage/innodb/clone%事件工具和相关的消费者表来监视克隆操作。有关性能模式阶段事件工具和相关消费者的信息,请参阅 第 27.12.5 节,“性能模式阶段事件表”

  1. 启用stage/innodb/clone% 仪器:

    Press CTRL+C to copy
    mysql> UPDATE performance_schema.setup_instruments SET ENABLED = 'YES' WHERE NAME LIKE 'stage/innodb/clone%';
  2. 启用阶段事件消费者表,其中包括 events_stages_currentevents_stages_historyevents_stages_history_long

    Press CTRL+C to copy
    mysql> UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE '%stages%';
  3. 运行克隆操作。在此示例中,本地数据目录被克隆到名为 cloned_dir.

    Press CTRL+C to copy
    mysql> CLONE LOCAL DATA DIRECTORY = '/path/to/cloned_dir';
  4. 通过查询 Performance Schema events_stages_current表来检查克隆操作的进度。显示的阶段事件因正在进行的克隆阶段而异。该 WORK_COMPLETED列显示已完成的工作。该WORK_ESTIMATED列显示了总共需要的工作。

    Press CTRL+C to copy
    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表以查看已完成操作的事件数据。例如:

    Press CTRL+C to copy
    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 Clone Instrumentation 监控克隆操作

Performance Schema 为克隆操作的高级性能监控提供了工具。要查看可用的克隆检测,并发出以下查询:

Press CTRL+C to copy
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 | +---------------------------------------------------+---------+
等待仪器

性能模式等待工具跟踪需要时间的事件。克隆等待事件工具包括:

  • 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 互斥等待的信息,请参阅 第 15.16.2 节,“使用性能模式监视 InnoDB 互斥等待”。有关一般监视等待事件的信息,请参阅 第 27.12.4 节,“性能模式等待事件表”

舞台乐器

性能模式阶段事件跟踪语句执行过程中发生的步骤。克隆舞台活动乐器包括:

  • stage/innodb/clone (file copy):指示克隆操作的文件复制阶段的进度。

  • stage/innodb/clone (redo copy):指示克隆操作的重做复制阶段的进度。

  • stage/innodb/clone (page copy):指示克隆操作的页面复制阶段的进度。

有关使用阶段事件监视克隆操作的信息,请参阅 使用性能模式阶段事件监视克隆操作。有关监视阶段事件的一般信息,请参阅 第 27.12.5 节,“性能模式阶段事件表”

报表工具

Performance Schema 语句事件跟踪语句执行。当启动克隆操作时,克隆语句工具跟踪的不同语句类型可以并行执行。您可以在 Performance Schema 语句事件表中观察这些语句事件。执行的语句数取决于 clone_max_concurrencyclone_autotune_concurrency 设置。

克隆语句事件工具包括:

  • statement/abstract/clone:在任何克隆操作被归类为本地、客户端或服务器操作类型之前跟踪语句事件。

  • statement/clone/local:跟踪本地克隆操作的克隆语句事件;执行 CLONE LOCAL语句时生成。

  • statement/clone/client:跟踪在接收方 MySQL 服务器实例上发生的远程克隆语句事件;CLONE INSTANCE在接收者上 执行语句时生成 。

  • statement/clone/server:跟踪发生在donor MySQL服务器实例上的远程克隆语句事件;CLONE INSTANCE在接收者上 执行语句时生成 。

有关监视性能模式语句事件的信息,请参阅 第 27.12.6 节,“性能模式语句事件表”

记忆仪器

性能模式内存工具跟踪内存使用情况。克隆内存使用工具包括:

  • memory/innodb/cloneInnoDB:跟踪为动态快照 分配的内存。

  • memory/clone/data:跟踪克隆插件在克隆操作期间分配的内存。

有关使用性能模式监视内存使用情况的信息,请参阅 第 27.12.20.10 节,“内存摘要表”

Com_clone 状态变量

Com_clone status 变量提供 CLONE语句执行 的 计数。

有关详细信息,请参阅第 5.1.10 节“服务器状态变量”中 关于 Com_xxx 语句计数器变量 的讨论。