Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Monitoring Cloning Operations

7.6.7.10 监控克隆操作

本节描述了监控克隆操作的选项。

使用性能_schema克隆表监控克隆操作

克隆操作可能需要一些时间来完成,取决于数据量和其他影响数据传输的因素。您可以使用clone_statusclone_progress性能_schema表来监控克隆操作的状态和进度。

Note

可以使用clone_statusclone_progress性能chema表来监控接收端MySQL服务器实例上的克隆操作。要监控捐赠端MySQL服务器实例上的克隆操作,使用 clone 阶段事件,如使用性能schema阶段事件监控克隆操作

  • clone_status表提供当前或最后执行的克隆操作的状态。克隆操作有四种可能状态:未开始进行中完成失败

  • clone_progress表提供当前或最后执行的克隆操作的进度信息,按阶段分。克隆操作的阶段包括:DROP DATA文件复制页面复制redo复制文件同步重启恢复

需要在性能_schema中拥有SELECTEXECUTE权限来访问克隆表。

检查克隆操作状态:

  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节,“性能_schema克隆表”中查看。

使用性能_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): 克隆操作的redo复制阶段进度指示器。WORK_ESTIMATEDWORK_COMPLETED 单位是 redo 块。页面复制完成后,需要传输的redo 块数就确定了,WORK_ESTIMATED 设置为该值。WORK_COMPLETED 在每个块发送后更新。

以下示例演示如何启用 stage/innodb/clone% 事件仪器和相关消费者表来监控克隆操作。关于性能_schema_阶段事件仪器和相关消费者的信息,请参见第29.12.5节,“性能_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. 通过查询性能_schema中的events_stages_current表来检查克隆操作的进度。当前阶段的stage事件会因而不同。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 |
    +--------------------------------+----------------+----------------+
使用性能_schema克隆工具监控克隆操作

性能_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     |
+---------------------------------------------------+---------+
Wait Instruments

性能_schema等待工具跟踪时间事件。克隆等待事件工具包括:

  • wait/synch/mutex/innodb/clone_snapshot_mutex:跟踪克隆快照锁定,同步多个克隆线程对动态快照对象(在捐赠者和接受者之间)的访问。

  • wait/synch/mutex/innodb/clone_sys_mutex:跟踪克隆系统互斥锁的等待事件。每个 MySQL 服务器实例中都有一个克隆系统对象。这把互斥锁由克隆线程和其他前台和后台线程获取。

  • wait/synch/mutex/innodb/clone_task_mutex:跟踪克隆任务互斥锁的等待事件,用于克隆任务管理。克隆任务互斥锁由克隆线程获取。

  • wait/io/file/innodb/innodb_clone_file:跟踪克隆操作中的所有 I/O 等待操作。

关于监控 InnoDB 互斥锁等待的信息,见第17.16.2节,“使用性能 Schema 监控 InnoDB 互斥锁等待”。关于监控等待事件的信息,见第29.12.4节,“性能 Schema 等待事件表”

Stage Instruments

性能 Schema 阶段事件跟踪语句执行过程中的步骤。克隆阶段事件工具包括:

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

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

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

关于使用阶段事件监控克隆操作的信息,请参阅使用性能架构阶段事件监控克隆操作。关于监控阶段事件的总体信息,请参阅第29.12.5节,“性能架构阶段事件表”

Statement Instruments

性能架构语句事件跟踪语句执行。当克隆操作被启动时,clone 语句工具可能会并行地执行不同的语句类型。您可以在性能架构语句事件表中观察这些语句事件。执行的语句数量取决于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 语句事件表”

Memory Instruments

性能_schema内存工具跟踪内存使用。克隆内存使用工具包括:

  • memory/innodb/clone:追踪 InnoDB 对动态快照分配的内存。

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

关于使用性能_schema监控内存使用的信息,见第29.12.20.10节,“内存总结表”

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

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