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  /  ...  /  Performance Schema Replication Tables

29.12.11 性能模式复制表格

性能模式提供了用于暴露复制信息的表格。这与SHOW REPLICA STATUS语句提供的信息类似,但在表格形式中更易于访问,具有更好的可用性:

  • SHOW REPLICA STATUS输出对于视觉检查很有用,但不太适合程序化使用。相比之下,使用性能模式表格,可以使用通用的SELECT查询来搜索复制状态信息,包括复杂的WHERE条件、连接等。

  • 查询结果可以保存到表格中进行进一步分析,也可以分配给变量并因此在存储程序中使用。

  • 复制表提供了更好的诊断信息。对于多线程副本操作,SHOW REPLICA STATUS报告所有协调器和工作线程的错误使用Last_SQL_ErrnoLast_SQL_Error字段,因此只有最近的那些错误是可见的,信息可能会丢失。复制表格存储每个线程的错误,没有信息丢失。

  • 最后一次看到的事务在复制表中按工作人员显示。这是SHOW REPLICA STATUS不可见的信息。

  • 熟悉性能模式接口的开发人员可以通过向表格中添加行来提供额外信息来扩展复制表。

复制 Table Descriptions

性能模式提供以下与复制相关的表格:

以下性能模式复制表格在性能模式被禁用时仍将继续填充:

异常信息是关于本地时间戳(事务开始和结束时间戳)在复制表中 replication_connection_statusreplication_applier_status_by_coordinatorreplication_applier_status_by_worker。这类信息在性能模式被禁用时不会收集。

以下各节详细介绍每个复制表,包括 SHOW REPLICA STATUS 中的列与复制表中相同信息对应的列。

性能模式如何填充这些表以及哪些 SHOW REPLICA STATUS 的字段不在表中表示的介绍,余下部分。

复制 Table Life Cycle

性能模式填充复制表的方式如下:

  • 在执行 CHANGE REPLICATION SOURCE TO 之前,这些表是空的。

  • CHANGE REPLICATION SOURCE TO 之后,配置参数可以在表中看到。在这个时候,没有活动的复制线程,所以 THREAD_ID 列是 NULLSERVICE_STATE 列的值为 OFF

  • 在执行 START REPLICA 之后,THREAD_ID 列中的非空值可以看到。处于闲置或活动状态的线程有 SERVICE_STATE 值为 ON。连接到源服务器的线程在建立连接时有一个值为 CONNECTING,随后为 ON 直至连接持续存在。

  • 在执行 STOP REPLICA 之后,THREAD_ID 列变为 NULLSERVICE_STATE 列中线程不再存在的值为 OFF

  • 在执行 STOP REPLICA 或线程因错误停止之后,这些表将被保留。

  • 只有在复制器以多线程模式运行时,replication_applier_status_by_worker 表才会有数据。也就是说,如果 replica_parallel_workers 系统变量大于 0,这个表在执行 START REPLICA 时被填充,行数表示工作线程的数量。

Replica Status Information Not In the 复制 Tables

性能模式中的复制表与 SHOW REPLICA STATUS 中的信息有所不同,因为它们针对全局事务标识符(GTIDs)而不是文件名和位置,并且它们表示服务器 UUID 值,而不是服务器 ID 值。由于这些差异,一些 SHOW REPLICA STATUS 的字段在性能模式的复制表中没有保留,或者以不同的方式表示:

  • 以下字段指的是文件名和位置,不被保留:

    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 字段不被保留。它指向用于复制器源元数据存储库的 master.info 文件,这个文件已经被废弃,使用了崩溃安全表来替代存储库。

  • 以下字段基于 server_ id 而不是 server_ uuid,也不被保留:

    Master_Server_Id
    Replicate_Ignore_Server_Ids
  • Skip_Counter 字段基于事件计数,而不是 GTIDs,不被保留。

  • 这些错误字段是对 Last_SQL_ErrnoLast_SQL_Error 的别名,因此它们不会被保留:

    Last_Errno
    Last_Error

    在性能模式中,这些错误信息可以在 replication_applier_status_by_worker 表(以及 replication_applier_status_by_coordinator 如果复制器是多线程的)中找到。这些表提供了比 Last_ErrnoLast_Error 可用更具体的每个线程错误信息。

  • 提供命令行过滤选项信息的字段不被保留:

    Replicate_Do_DB
    Replicate_Ignore_DB
    Replicate_Do_Table
    Replicate_Ignore_Table
    Replicate_Wild_Do_Table
    Replicate_Wild_Ignore_Table
  • Replica_IO_StateReplica_SQL_Running_State 字段不会被保留。如果需要,这些值可以通过将适当复制表的 THREAD_ID 列与 INFORMATION_SCHEMA 中的 PROCESSLIST 表的 ID 列进行连接,来从进程列表中获取。然后可以选择后者表的 STATE 列。

  • Executed_Gtid_Set 字段可能显示一个包含大量文本的大集合。相反,性能模式表显示了复制器正在应用的事务的GTIDs。或者,可以从 gtid_executed 系统变量的值中获取执行过的GTID集合。

  • Seconds_Behind_MasterRelay_Log_Space 字段处于待决状态,不会被保留。

复制 Channels

复制性能模式表的第一列是 CHANNEL_NAME。这使得可以按复制通道查看这些表。在非多源复制设置中,有一个单一的默认复制通道。当你在复制器上使用多个复制通道时,可以通过筛选表来监控特定的复制通道。请参阅 第19.2.2节,“复制通道”第19.1.5.8节,“监控多源复制” 以获取更多信息。