#### 5.6.7.10 监控克隆操作

[](<>)[](<>)

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

-   [使用性能模式克隆表监控克隆操作](clone-plugin-monitoring.html#clone-plugin-monitoring-performance-schema-clone-tables)

-   [使用性能模式阶段事件监视克隆操作](clone-plugin-monitoring.html#clone-plugin-monitoring-stage-events)

-   [使用性能模式克隆检测监视克隆操作](clone-plugin-monitoring.html#clone-plugin-performance-schema-instruments)

-   [通讯\_克隆状态变量](clone-plugin-monitoring.html#clone-plugin-com-clone)

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

[](<>)[](<>)[](<>)[](<>)

克隆操作可能需要一些时间才能完成，具体取决于数据量和与数据传输相关的其他因素。您可以使用[`克隆状态`](performance-schema-clone-status-table.html)和[`克隆进度`](performance-schema-clone-progress-table.html)性能模式表。

笔记

这[`克隆状态`](performance-schema-clone-status-table.html)和[`克隆进度`](performance-schema-clone-progress-table.html)性能模式表只能用于监视接收 MySQL 服务器实例上的克隆操作。要监视捐助 MySQL 服务器实例上的克隆操作，请使用克隆阶段事件，如中所述[使用性能模式阶段事件监视克隆操作](clone-plugin-monitoring.html#clone-plugin-monitoring-stage-events).

-   这[`克隆状态`](performance-schema-clone-status-table.html)表提供当前或上次执行的克隆操作的状态。克隆操作有四种可能的状态：`没有开始`,`进行中`,`完全的`， 和`失败的`.

-   这[`克隆进度`](performance-schema-clone-progress-table.html)表按阶段提供当前或上次执行的克隆操作的进度信息。克隆操作的阶段包括`删除数据`,`文件复制`,`PAGE_COPY`,`REDO_COPY`,`文件同步`,`重新开始`， 和`恢复`.

    这[`选择`](privileges-provided.html#priv_select)和[`执行`](privileges-provided.html#priv_execute)访问 Performance Schema 克隆表需要 Performance Schema 的权限。

    要检查克隆操作的状态：

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

2.  查询[`克隆状态`](performance-schema-clone-status-table.html)桌子：

    ```
    mysql> SELECT STATE FROM performance_schema.clone_status;
    +-----------+
    | STATE     |
    +-----------+
    | Completed |
    +-----------+
    ```

    如果在克隆操作过程中发生故障，您可以查询[`克隆状态`](performance-schema-clone-status-table.html)错误信息表：


```
mysql> SELECT STATE, ERROR_NO, ERROR_MESSAGE FROM performance_schema.clone_status;
+-----------+----------+---------------+
| STATE     | ERROR_NO | ERROR_MESSAGE |
+-----------+----------+---------------+
| Failed    |      xxx | "xxxxxxxxxxx" |
+-----------+----------+---------------+
```

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

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

2.  查询[`克隆进度`](performance-schema-clone-progress-table.html)桌子。例如，以下查询为克隆操作的每个阶段提供状态和结束时间数据：

    ```
    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 节，“性能模式克隆表”](performance-schema-clone-tables.html).

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

[](<>)

克隆操作可能需要一些时间才能完成，具体取决于数据量和与数据传输相关的其他因素。有三个阶段事件用于监视克隆操作的进度。各阶段活动报道`WORK_COMPLETED`和`WORK_ESTIMATED`价值观。报告值随着操作的进行而修改。

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

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

-   `stage/innodb/clone（文件拷贝）`：表示克隆操作的文件复制阶段的进度。`WORK_ESTIMATED`和`WORK_COMPLETED`单位是文件块。在文件复制阶段开始时，要传输的文件数是已知的，并且根据文件数估计块数。`WORK_ESTIMATED`设置为估计的文件块数。`WORK_COMPLETED`在发送每个块后更新。

-   `stage/innodb/clone（页面复制）`：表示克隆操作的页面复制阶段的进度。`WORK_ESTIMATED`和`WORK_COMPLETED`单位是页。一旦文件复制阶段完成，要传输的页数是已知的，并且`WORK_ESTIMATED`设置为此值。`WORK_COMPLETED`每页发送后更新。

-   `阶段/innodb/克隆（重做副本）`：表示克隆操作的重做复制阶段的进度。`WORK_ESTIMATED`和`WORK_COMPLETED`单位是重做块。一旦页面复制阶段完成，要传输的重做块的数量是已知的，并且`WORK_ESTIMATED`设置为此值。`WORK_COMPLETED`在发送每个块后更新。

    以下示例演示如何启用`阶段/innodb/克隆%`事件工具和相关的消费者表来监视克隆操作。有关 Performance Schema 阶段事件工具和相关使用者的信息，请参阅[第 27.12.5 节，“性能模式阶段事件表”](performance-schema-stage-tables.html).

1.  启用`阶段/innodb/克隆%`仪器：

    ```
    mysql> UPDATE performance_schema.setup_instruments SET ENABLED = 'YES'
           WHERE NAME LIKE 'stage/innodb/clone%';
    ```

2.  启用舞台事件消费者表，其中包括[`events_stages_current`](performance-schema-events-stages-current-table.html),[`events_stages_history`](performance-schema-events-stages-history-table.html)， 和[`events_stages_history_long`](performance-schema-events-stages-history-long-table.html).

    ```
    mysql> UPDATE performance_schema.setup_consumers SET ENABLED = 'YES'
           WHERE NAME LIKE '%stages%';
    ```

3.  运行克隆操作。在此示例中，本地数据目录被克隆到名为`克隆目录`.

    ```
    mysql> CLONE LOCAL DATA DIRECTORY = '/path/to/cloned_dir';
    ```

4.  通过查询 Performance Schema 检查克隆操作的进度[`events_stages_current`](performance-schema-events-stages-current-table.html)桌子。显示的阶段事件因正在进行的克隆阶段而异。这`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`](performance-schema-events-stages-current-table.html)如果克隆操作完成，表返回一个空集。在这种情况下，您可以检查[`events_stages_history`](performance-schema-events-stages-history-table.html)表以查看已完成操作的事件数据。例如：

    ```
    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.html)为克隆操作的高级性能监控提供工具。要查看可用的克隆检测，请发出以下查询：

```
mysql> SELECT * FROM performance_schema.setup_instruments
       WHERE NAME LIKE 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/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     |
+----------------------------------------------+---------+
```

###### 等待仪器

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

-   `等待/同步/互斥/innodb/clone_snapshot_mutex`：跟踪克隆快照互斥锁的等待事件，它在多个克隆线程之间同步对动态快照对象（在施主和受主上）的访问。

-   `等待/同步/互斥/innodb/clone_sys_mutex`：跟踪克隆系统互斥体的等待事件。MySQL 服务器实例中有一个克隆系统对象。此互斥锁同步对捐赠者和接受者上的克隆系统对象的访问。它由克隆线程和其他前台和后台线程获取。

-   `等待/同步/互斥/innodb/clone_task_mutex`：跟踪克隆任务互斥体的等待事件，用于克隆任务管理。这`clone_task_mutex`由克隆线程获取。

-   `等待/io/file/innodb/innodb_clone_file`：跟踪克隆操作的文件的所有 I/O 等待操作。

    有关监控的信息`InnoDB`互斥体等待，请参阅[第 15.16.2 节，“使用性能模式监控 InnoDB Mutex 等待”](monitor-innodb-mutex-waits-performance-schema.html).有关监视等待事件的一般信息，请参阅[第 27.12.4 节，“性能模式等待事件表”](performance-schema-wait-tables.html).

###### 舞台乐器

性能模式阶段事件跟踪语句执行过程中发生的步骤。克隆舞台事件工具包括：

-   `stage/innodb/clone（文件拷贝）`：表示克隆操作的文件复制阶段的进度。

-   `阶段/innodb/克隆（重做副本）`：表示克隆操作的重做复制阶段的进度。

-   `stage/innodb/clone（页面复制）`：表示克隆操作的页面复制阶段的进度。

    有关使用阶段事件监视克隆操作的信息，请参阅[使用性能模式阶段事件监视克隆操作](clone-plugin-monitoring.html#clone-plugin-monitoring-stage-events).有关监视阶段事件的一般信息，请参阅[第 27.12.5 节，“性能模式阶段事件表”](performance-schema-stage-tables.html).

###### 报表工具

性能模式语句事件跟踪语句执行。当启动克隆操作时，克隆语句工具跟踪的不同语句类型可以并行执行。您可以在 Performance Schema 语句事件表中观察这些语句事件。执行的语句数取决于[`clone_max_concurrency`](clone-plugin-options-variables.html#sysvar_clone_max_concurrency)和[`clone_autotune_concurrency`](clone-plugin-options-variables.html#sysvar_clone_autotune_concurrency)设置。

克隆声明事件工具包括：

-   `陈述/摘要/克隆`：跟踪任何克隆操作的语句事件，然后将其分类为本地、客户端或服务器操作类型。

-   `语句/克隆/本地`：跟踪本地克隆操作的克隆语句事件；执行时生成[`克隆本地`](clone.html)陈述。

-   `语句/克隆/客户端`：跟踪接收方 MySQL 服务器实例上发生的远程克隆语句事件；执行时生成[`克隆实例`](clone.html)收件人的声明。

-   `语句/克隆/服务器`：跟踪在捐赠者 MySQL 服务器实例上发生的远程克隆语句事件；执行时生成[`克隆实例`](clone.html)收件人的声明。

    有关监视 Performance Schema 语句事件的信息，请参阅[第 27.12.6 节，“性能模式语句事件表”](performance-schema-statement-tables.html).

###### 记忆仪器

Performance Schema 内存工具跟踪内存使用情况。克隆内存使用工具包括：

-   `内存/innodb/克隆`：跟踪分配的内存`InnoDB`用于动态快照。

-   `内存/克隆/数据`：跟踪克隆操作期间克隆插件分配的内存。

    有关使用 Performance Schema 监控内存使用情况的信息，请参阅[第 27.12.20.10 节，“内存汇总表”](performance-schema-memory-summary-tables.html).

##### 通讯\_克隆状态变量

[](<>)

这`[Com_clone](服务器状态变量.html#statvar_Com_xxx)`状态变量提供计数[`克隆`](clone.html)语句执行。

有关详细信息，请参阅有关`[Com_xxx](服务器状态变量.html#statvar_Com_xxx)`语句计数器变量[第 5.1.10 节，“服务器状态变量”](server-status-variables.html).
