Documentation Home

25.12.11 性能模式复制表

性能模式提供公开复制信息的表。这类似于SHOW SLAVE STATUS语句中可用的信息,但表格形式的表示更易于访问并且具有可用性优势:

  • SHOW SLAVE STATUSoutput 对于目视检查很有用,但对于编程用途则没有那么多。相比之下,使用 Performance Schema 表,可以使用一般SELECT查询来搜索有关副本状态的信息,包括复杂WHERE条件、连接等。

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

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

  • 最后看到的事务在每个工作人员的复制表中是可见的。这是无法从 获得的信息SHOW SLAVE STATUS

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

复制表说明

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

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

复制表介绍的其余部分描述了性能模式如何填充它们以及SHOW SLAVE STATUS表中未表示的字段。

复制表生命周期

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

  • 在执行之前CHANGE MASTER TO,表是空的。

  • 之后CHANGE MASTER TO,可以在表格中看到配置参数。此时,没有活动的副本线程,因此 THREAD_ID列为 NULL并且 SERVICE_STATE列的值为 OFF

  • 之后, 可以看到START SLAVE非值。NULL THREAD_ID空闲或活动线程的 SERVICE_STATE值为 ONCONNECTING连接到源的线程在建立连接时具有值,ON 此后只要连接持续。

  • 之后STOP SLAVETHREAD_ID列变为 NULL并且 SERVICE_STATE不再存在的线程的列的值为OFF

  • 这些表在STOP SLAVE线程因错误而死后或死后被保留。

  • replication_applier_status_by_worker 仅当副本在多线程模式下运行时, 该 表才为非空。即如果 slave_parallel_workers 系统变量大于0,START SLAVE则执行时填充此表,行数显示工人数。

SHOW SLAVE STATUS不在复制表中的信息

Performance Schema 复制表中的信息与可用信息有些不同, SHOW SLAVE STATUS因为这些表面向使用全局事务标识符 (GTID),而不是文件名和位置,并且它们表示服务器 UUID 值,而不是服务器 ID 值。由于这些差异,SHOW SLAVE 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字段基于事件计数,而不是 GTID,并且不会保留。

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

    Last_Errno
    Last_Error

    在 Performance Schema 中,此错误信息在表的LAST_ERROR_NUMBERLAST_ERROR_MESSAGE列中 可用replication_applier_status_by_workerreplication_applier_status_by_coordinator 如果副本是多线程的)。这些表提供了比 和 提供的更具体的每线程错误 Last_Errno信息 Last_Error

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

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

  • Executed_Gtid_Set字段可以显示包含大量文本的大集合。相反,性能模式表显示副本当前正在应用的事务的 GTID。或者,可以从gtid_executed系统变量的值中获取一组已执行的 GTID。

  • 和字段处于待定状态,不保留 Seconds_Behind_MasterRelay_Log_Space

状态变量移至复制表

从 MySQL 版本 5.7.5 开始,以下状态变量(以前使用 监视SHOW STATUS)已移至 Perfomance Schema 复制表:

这些状态变量现在仅在使用单个复制通道时才相关,因为它们 报告默认复制通道的状态。当存在多个复制通道时,使用本节中描述的性能模式复制表,它为每个现有的复制通道报告这些变量。

复制通道

复制性能模式表的第一列是 CHANNEL_NAME. 这使得可以按复制通道查看表。在非多源复制设置中,只有一个默认复制通道。当您在副本上使用多个复制通道时,您可以过滤每个复制通道的表以监视特定的复制通道。有关详细信息,请参阅第 16.2.2 节,“复制通道”第 16.1.5.8 节,“多源复制监视”