### 27.12.11 性能模式复制表

[27.12.11.1 复制\_联系\_配置表](performance-schema-replication-connection-configuration-table.html)
[27.12.11.2 复制\_联系\_状态表](performance-schema-replication-connection-status-table.html)
[27.12.11.3 复制\_异步\_联系\_故障转移表](performance-schema-replication-asynchronous-connection-failover-table.html)
[27.12.11.4 复制\_异步\_联系\_故障转移\_托管表](performance-schema-replication-asynchronous-connection-failover-managed-table.html)
[27.12.11.5 复制\_应用程序\_配置表](performance-schema-replication-applier-configuration-table.html)
[27.12.11.6 复制\_应用程序\_状态表](performance-schema-replication-applier-status-table.html)
[27.12.11.7 复制\_应用程序\_状态\_经过\_协调员表](performance-schema-replication-applier-status-by-coordinator-table.html)
[27.12.11.8 复制\_应用程序\_状态\_经过\_工人表](performance-schema-replication-applier-status-by-worker-table.html)
[27.12.11.9 复制\_应用程序\_全球的\_过滤器表](performance-schema-replication-applier-global-filters-table.html)
[27.12.11.10 复制\_应用程序\_过滤器表](performance-schema-replication-applier-filters-table.html)
[27.12.11.11 复制\_团体\_成员表](performance-schema-replication-group-members-table.html)
[27.12.11.12 复制\_团体\_成员\_统计表](performance-schema-replication-group-member-stats-table.html)
[27.12.11.13 复制\_团体\_成员\_行动表](performance-schema-replication-group-member-actions-table.html)
[27.12.11.14 复制\_团体\_配置\_版本表](performance-schema-replication-group-configuration-version-table.html)
[27.12.11.15 复制\_团体\_沟通\_信息表](performance-schema-replication-group-communication-information-table.html)
[27.12.11.16 二进制文件\_日志\_交易\_压缩\_统计表](performance-schema-binary-log-transaction-compression-stats-table.html)

性能模式提供了公开复制信息的表。这与从[`显示副本状态`](show-replica-status.html)声明，但表格形式的表示更易于访问并且具有可用性优势：

-   [`显示副本状态`](show-replica-status.html)输出对于目视检查很有用，但对于编程使用却没有那么多。相比之下，使用 Performance Schema 表，可以使用常规搜索有关副本状态的信息[`选择`](select.html)查询，包括复杂的`在哪里`条件、连接等。

-   查询结果可以保存在表中以供进一步分析，或分配给变量，从而在存储过程中使用。

-   复制表提供更好的诊断信息。对于多线程复制操作，[`显示副本状态`](show-replica-status.html)使用`Last_SQL_Errno`和`Last_SQL_Error`字段，因此只有最近的错误是可见的，并且信息可能会丢失。复制表在每个线程的基础上存储错误，而不会丢失信息。

-   最后一次看到的事务在每个工作人员的复制表中是可见的。这是无法从[`显示副本状态`](show-replica-status.html).

-   熟悉 Performance Schema 接口的开发人员可以通过向表中添加行来扩展复制表以提供附加信息。

#### 复制表描述

Performance Schema 提供了以下与复制相关的表：

-   包含有关副本与源的连接信息的表：

    -   [`复制连接配置`](performance-schema-replication-connection-configuration-table.html): 连接源的配置参数

    -   [`复制连接状态`](performance-schema-replication-connection-status-table.html)：与源的连接的当前状态

    -   [`replication_asynchronous_connection_failover`](performance-schema-replication-asynchronous-connection-failover-table.html)：异步连接故障转移机制的源列表

-   包含有关事务应用程序的一般（非线程特定）信息的表：

    -   [`复制应用程序配置`](performance-schema-replication-applier-configuration-table.html)：副本上的事务应用程序的配置参数。

    -   [`复制应用程序状态`](performance-schema-replication-applier-status-table.html)：副本上的事务应用程序的当前状态。

-   包含有关负责应用从源接收的事务的特定线程的信息的表：

    -   [`replication_applier_status_by_coordinator`](performance-schema-replication-applier-status-by-coordinator-table.html)：协调线程的状态（除非副本是多线程的，否则为空）。

    -   [`replication_applier_status_by_worker`](performance-schema-replication-applier-status-by-worker-table.html)：如果副本是多线程的，则应用程序线程或工作线程的状态。

-   包含有关基于通道的复制过滤器信息的表：

    -   [`复制应用程序过滤器`](performance-schema-replication-applier-filters-table.html)：提供有关在特定复制通道上配置的复制过滤器的信息。

    -   [`复制应用程序全局过滤器`](performance-schema-replication-applier-global-filters-table.html)：提供有关适用于所有复制通道的全局复制过滤器的信息。

-   包含有关组复制成员信息的表：

    -   [`复制组成员`](performance-schema-replication-group-members-table.html)：为组成员提供网络和状态信息。

    -   [`replication_group_member_stats`](performance-schema-replication-group-member-stats-table.html)：提供有关组成员和他们参与的交易的统计信息。

        有关更多信息，请参阅[第 18.4 节，“监控组复制”](group-replication-monitoring.html).

    禁用性能模式时，将继续填充以下性能模式复制表：

-   [`复制连接配置`](performance-schema-replication-connection-configuration-table.html)

-   [`复制连接状态`](performance-schema-replication-connection-status-table.html)

-   [`replication_asynchronous_connection_failover`](performance-schema-replication-asynchronous-connection-failover-table.html)

-   [`复制应用程序配置`](performance-schema-replication-applier-configuration-table.html)

-   [`复制应用程序状态`](performance-schema-replication-applier-status-table.html)

-   [`replication_applier_status_by_coordinator`](performance-schema-replication-applier-status-by-coordinator-table.html)

-   [`replication_applier_status_by_worker`](performance-schema-replication-applier-status-by-worker-table.html)

    例外是复制表中的本地时间信息（事务的开始和结束时间戳）[`复制连接状态`](performance-schema-replication-connection-status-table.html), [`replication_applier_status_by_coordinator`](performance-schema-replication-applier-status-by-coordinator-table.html)， 和[`replication_applier_status_by_worker`](performance-schema-replication-applier-status-by-worker-table.html).禁用性能架构时不会收集此信息。

    以下部分更详细地描述了每个复制表，包括生成的列之间的对应关系[`显示副本状态`](show-replica-status.html)以及出现相同信息的复制表列。

    复制表介绍的其余部分描述了性能模式如何填充它们以及来自哪些字段[`显示副本状态`](show-replica-status.html)未在表中表示。

#### 复制表生命周期

性能模式按如下方式填充复制表：

-   执行前[`将复制源更改为`](change-replication-source-to.html)\|[`将主更改为`](change-master-to.html)，表是空的。

-   后[`将复制源更改为`](change-replication-source-to.html)\|[`将主更改为`](change-master-to.html)，配置参数见表。此时，没有活动的复制线程，所以`THREAD_ID`列是`空值`和`服务状态`列的值为`离开`.

-   后[`开始复制`](start-replica.html)（或在 MySQL 8.0.22 之前，[`启动奴隶`](start-slave.html))，非`空值` `THREAD_ID`值可以看出。空闲或活动的线程有一个`服务状态`的价值`在`.连接到源的线程的值为`连接`当它建立连接时，并且`在`此后，只要连接持续。

-   后[`停止复制`](stop-replica.html)， 这`THREAD_ID`列成为`空值`和`服务状态`不再存在的线程的列的值为`离开`.

-   表格保存后[`停止复制`](stop-replica.html)或线程因错误而停止。

-   这[`replication_applier_status_by_worker`](performance-schema-replication-applier-status-by-worker-table.html)仅当副本在多线程模式下运行时，表才为非空。也就是说，如果[`replica_parallel_workers`](replication-options-replica.html#sysvar_replica_parallel_workers)要么[`slave_parallel_workers`](replication-options-replica.html#sysvar_slave_parallel_workers)系统变量大于 0 时，此表被填充[`开始复制`](start-replica.html)执行，行数显示worker数。

#### 副本状态信息不在复制表中

Performance Schema 复制表中的信息与可从[`显示副本状态`](show-replica-status.html)因为这些表面向使用全局事务标识符 (GTID)，而不是文件名和位置，并且它们代表服务器 UUID 值，而不是服务器 ID 值。由于这些差异，一些[`显示副本状态`](show-replica-status.html)列未保留在 Performance Schema 复制表中，或者以不同的方式表示：

-   以下字段是指文件名和位置，不会保留：

    ```
    Master_Log_File
    Read_Master_Log_Pos
    Relay_Log_File
    Relay_Log_Pos
    Relay_Master_Log_File
    Exec_Master_Log_Pos
    Until_Condition
    Until_Log_File
    Until_Log_Pos
    ```

-   这`Master_Info_File`字段不保留。它指的是`主信息`用于副本的源元数据存储库的文件，已被存储库的崩溃安全表所取代。

-   以下字段基于[`server_id`](replication-options.html#sysvar_server_id)， 不是[`server_uuid`](replication-options.html#sysvar_server_uuid)，并且不保留：

    ```
    Master_Server_Id
    Replicate_Ignore_Server_Ids
    ```

-   这`Skip_Counter`字段基于事件计数，而不是 GTID，并且不保留。

-   这些错误字段是`Last_SQL_Errno`和`Last_SQL_Error`，所以它们不会被保留：

    ```
    Last_Errno
    Last_Error
    ```

    在 Performance Schema 中，此错误信息可在`LAST_ERROR_NUMBER`和`LAST_ERROR_MESSAGE`的列[`replication_applier_status_by_worker`](performance-schema-replication-applier-status-by-worker-table.html)表（和[`replication_applier_status_by_coordinator`](performance-schema-replication-applier-status-by-coordinator-table.html)如果副本是多线程的）。这些表提供了比从`Last_Errno`和`Last_Error`.

-   不保留提供有关命令行过滤选项信息的字段：

    ```
    Replicate_Do_DB
    Replicate_Ignore_DB
    Replicate_Do_Table
    Replicate_Ignore_Table
    Replicate_Wild_Do_Table
    Replicate_Wild_Ignore_Table
    ```

-   这`Replica_IO_State`和`Replica_SQL_Running_State`字段不保留。如果需要，可以使用`THREAD_ID`相应复制表的列并将其与`ID`列中的`INFORMATION_SCHEMA` [`进程列表`](information-schema-processlist-table.html)表来选择`状态`后表的列。

-   这`Executed_Gtid_Set`字段可以显示包含大量文本的大集合。相反，Performance Schema 表显示副本当前正在应用的事务的 GTID。或者，可以从[`gtid_executed`](replication-options-gtids.html#sysvar_gtid_executed)系统变量。

-   这`Seconds_Behind_Master`和`Relay_Log_Space`字段处于待定状态，不保留。

#### 复制通道

复制性能模式表的第一列是`CHANNEL_NAME`.这使得可以按复制通道查看表。在非多源复制设置中，有一个默认复制通道。当您在副本上使用多个复制通道时，您可以过滤每个复制通道的表以监控特定的复制通道。看[第 17.2.2 节，“复制通道”](replication-channels.html)和[第 17.1.5.8 节，“监控多源复制”](replication-multi-source-monitoring.html)了解更多信息。
