文档主页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  监控克隆操作

7.6.7.10 监控克隆操作

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

使用 Performance Schema 克隆表监控克隆操作

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

注意

clone_statusclone_progress Performance Schema 表只能用于监控接收 MySQL 服务器实例上的克隆操作。 要监控捐赠者 MySQL 服务器实例上的克隆操作,请使用克隆阶段事件,如 使用 Performance Schema 阶段事件监控克隆操作 中所述。

  • clone_status 表提供了当前或最后执行的克隆操作的状态。 克隆操作有四种可能的状态:未启动正在进行已完成失败

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

需要 Performance Schema 上的 SELECTEXECUTE 权限才能访问 Performance Schema 克隆表。

要检查克隆操作的状态

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

  2. 查询 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" |
+-----------+----------+---------------+

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

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

  2. 查询 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 节“Performance Schema 克隆表”

使用 Performance Schema 阶段事件监控克隆操作

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

此监控克隆操作的方法可以在捐赠者或接收 MySQL 服务器实例上使用。

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

  • stage/innodb/clone (file copy):表示克隆操作的文件复制阶段的进度。WORK_ESTIMATEDWORK_COMPLETED 单位是文件块。要在文件复制阶段开始时知道要传输的文件数,并根据文件数估算块数。WORK_ESTIMATED 设置为估计的文件块数。WORK_COMPLETED 在发送每个块后更新。

  • stage/innodb/clone (page copy):表示克隆操作的页面复制阶段的进度。WORK_ESTIMATEDWORK_COMPLETED 单位是页面。文件复制阶段完成后,要传输的页面数是已知的,并且 WORK_ESTIMATED 设置为该值。WORK_COMPLETED 在发送每个页面后更新。

  • stage/innodb/clone (redo copy):表示克隆操作的重做日志复制阶段的进度。WORK_ESTIMATEDWORK_COMPLETED 单位是重做日志块。页面复制阶段完成后,要传输的重做日志块数是已知的,并且 WORK_ESTIMATED 设置为该值。WORK_COMPLETED 在发送每个块后更新。

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

  1. 启用 stage/innodb/clone% 工具

    mysql> UPDATE performance_schema.setup_instruments SET ENABLED = 'YES'
           WHERE NAME LIKE 'stage/innodb/clone%';
  2. 启用阶段事件使用者表,其中包括 events_stages_currentevents_stages_historyevents_stages_history_long

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

    mysql> CLONE LOCAL DATA DIRECTORY = '/path/to/cloned_dir';
  4. 通过查询 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 克隆工具监控克隆操作

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 (file copy):表示克隆操作的文件复制阶段的进度。

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

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

有关使用阶段事件监控克隆操作的信息,请参阅 使用 Performance Schema 阶段事件监控克隆操作。有关监控阶段事件的一般信息,请参阅 第 29.12.5 节,“Performance Schema 阶段事件表”

语句工具

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:跟踪在捐赠者 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 节,“内存摘要表”

Com_clone 状态变量

Com_clone 状态变量提供 CLONE 语句执行次数的计数。

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