文档主页
MySQL 8.4 参考手册
相关文档 下载此手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  Performance Schema 复制表

29.12.11 Performance Schema 复制表

Performance Schema 提供了公开复制信息的表。这类似于从 SHOW REPLICA STATUS 语句中获得的信息,但以表格形式表示更易于访问,并具有可用性优势

  • SHOW REPLICA STATUS 输出对于视觉检查很有用,但对于编程使用却没有那么有用。相反,使用 Performance Schema 表,可以使用一般 SELECT 查询(包括复杂的 WHERE 条件、联接等等)来搜索有关副本状态的信息。

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

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

  • 在复制表中可以按每个工作线程查看上次看到的交易。这些信息无法从 SHOW REPLICA STATUS 获得。

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

复制表描述

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

当 Performance Schema 被禁用时,以下 Performance Schema 复制表将继续被填充

例外情况是复制表中有关本地时间的信息(事务的开始和结束时间戳) replication_connection_statusreplication_applier_status_by_coordinatorreplication_applier_status_by_worker。当 Performance Schema 被禁用时,不收集此信息。

以下部分更详细地描述每个复制表,包括 SHOW REPLICA STATUS 生成的列与复制表中显示相同信息的列之间的对应关系。

对复制表的介绍的其余部分描述了 Performance Schema 如何填充这些表以及 SHOW REPLICA STATUS 中的哪些字段没有在表中表示。

复制表生命周期

Performance Schema 按如下方式填充复制表

  • 在执行 CHANGE REPLICATION SOURCE TO 之前,表为空。

  • CHANGE REPLICATION SOURCE TO 之后,可以在表中看到配置参数。此时,没有活动复制线程,因此 THREAD_ID 列为 NULL,而 SERVICE_STATE 列的值为 OFF

  • START REPLICA 之后,可以看到非空 THREAD_ID 值。处于空闲或活动状态的线程的 SERVICE_STATE 值为 ON。连接到源的线程在建立连接时值为 CONNECTING,并在连接持续期间之后一直为 ON

  • STOP REPLICA 之后,THREAD_ID 列变为 NULL,而不再存在的线程的 SERVICE_STATE 列的值为 OFF

  • STOP REPLICA 之后或线程因错误而停止时,表将被保留。

  • 当副本以多线程模式运行时,replication_applier_status_by_worker 表不为空。也就是说,如果 replica_parallel_workers 系统变量大于 0,则在执行 START REPLICA 时,该表将被填充,行数将显示工作线程数。

复制表中没有的副本状态信息

Performance Schema 复制表中的信息与从 SHOW REPLICA STATUS 获得的信息略有不同,因为这些表面向全局事务标识符 (GTID) 的使用,而不是文件名和位置,它们表示服务器 UUID 值,而不是服务器 ID 值。由于这些差异,几个 SHOW REPLICA STATUS 列没有保存在 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 字段。它引用用于副本的源元数据存储库的 master.info 文件,该文件已被用于存储库的崩溃安全表的用法取代。

  • 以下字段基于 server_id,而不是 server_uuid,并且没有保留

    Master_Server_Id
    Replicate_Ignore_Server_Ids
  • 没有保留 Skip_Counter 字段。它基于事件计数,而不是 GTID。

  • 这些错误字段是 Last_SQL_ErrnoLast_SQL_Error 的别名,因此没有保留

    Last_Errno
    Last_Error

    在 Performance Schema 中,此错误信息可以在 replication_applier_status_by_worker 表的 LAST_ERROR_NUMBERLAST_ERROR_MESSAGE 列(以及 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 字段。它可以显示包含大量文本的大型集合。相反,Performance Schema 表显示副本当前正在应用的事务的 GTID。或者,可以从 gtid_executed 系统变量的值中获取已执行的 GTID 集。

  • 没有保留 Seconds_Behind_MasterRelay_Log_Space 字段。

复制通道

复制 Performance Schema 表的第一列是 CHANNEL_NAME。这使得可以按复制通道查看这些表。在非多源复制设置中,有一个默认的复制通道。当您在副本上使用多个复制通道时,可以按复制通道过滤表,以监控特定的复制通道。有关更多信息,请参见 第 19.2.2 节,“复制通道”第 19.1.5.8 节,“监控多源复制”