文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  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 提供了以下与复制相关的表

当性能架构被禁用时,以下性能架构复制表将继续被填充

例外是复制表中的本地时间信息(交易的开始和结束时间戳)replication_connection_statusreplication_applier_status_by_coordinatorreplication_applier_status_by_worker。当性能架构被禁用时,不收集此信息。

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

本复制表介绍的其余部分描述了性能架构如何填充它们以及 SHOW REPLICA STATUS 中哪些字段未在表中表示。

复制表生命周期

性能架构按以下方式填充复制表

  • 在执行 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 时,将填充此表,并且行数显示了工作线程的数量。

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

性能架构复制表中的信息与从 SHOW REPLICA STATUS 获取的信息略有不同,因为表面向使用全局交易标识符 (GTID) 而不是文件名和位置,并且它们表示服务器 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
  • 未保留基于事件计数而不是 GTID 的 Skip_Counter 字段。

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

    Last_Errno
    Last_Error

    在性能架构中,此错误信息可在 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_SCHEMAPROCESSLIST 表中的 ID 列连接起来,从进程列表中获取这些值,以选择后者的表的 STATE 列。

  • 未保留 Executed_Gtid_Set 字段。它可以显示包含大量文本的大型集合。相反,性能架构表显示副本当前正在应用的交易的 GTID。或者,可以从 gtid_executed 系统变量的值获取已执行的 GTID 集。

  • 未保留 Seconds_Behind_MasterRelay_Log_Space 字段。

复制通道

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