- 29.12.11.1 replication_connection_configuration 表
- 29.12.11.2 replication_connection_status 表
- 29.12.11.3 replication_asynchronous_connection_failover 表
- 29.12.11.4 replication_asynchronous_connection_failover_managed 表
- 29.12.11.5 replication_applier_configuration 表
- 29.12.11.6 replication_applier_status 表
- 29.12.11.7 replication_applier_status_by_coordinator 表
- 29.12.11.8 replication_applier_status_by_worker 表
- 29.12.11.9 replication_applier_global_filters 表
- 29.12.11.10 replication_applier_filters 表
- 29.12.11.11 replication_group_members 表
- 29.12.11.12 replication_group_member_stats 表
- 29.12.11.13 replication_group_member_actions 表
- 29.12.11.14 replication_group_configuration_version 表
- 29.12.11.15 replication_group_communication_information 表
- 29.12.11.16 binary_log_transaction_compression_stats 表
Performance Schema 提供了公开复制信息的表。这类似于从 SHOW REPLICA STATUS
语句中获得的信息,但以表格形式表示更易于访问,并且具有可用性优势
SHOW REPLICA STATUS
输出对于视觉检查很有用,但不太适合编程使用。相比之下,使用 Performance Schema 表,可以利用通用的SELECT
查询(包括复杂的WHERE
条件、联接等)来搜索有关副本状态的信息。查询结果可以保存在表中以供进一步分析,或者分配给变量,从而在存储过程中使用。
复制表提供了更好的诊断信息。对于多线程副本操作,
SHOW REPLICA STATUS
使用Last_SQL_Errno
和Last_SQL_Error
字段报告所有协调器和工作线程错误,因此只有最新的错误可见,信息可能会丢失。复制表以每线程为基础存储错误,不会丢失信息。最后一个已知的交易在复制表中以每工作线程为基础可见。这是
SHOW REPLICA STATUS
中不可用的信息。熟悉 Performance Schema 接口的开发人员可以通过在表中添加行来扩展复制表以提供其他信息。
复制表描述
Performance Schema 提供了以下与复制相关的表
包含有关副本与源连接的信息的表
replication_connection_configuration
:连接到源的配置参数replication_connection_status
:连接到源的当前状态replication_asynchronous_connection_failover
:异步连接故障转移机制的源列表
包含有关交易应用器的一般(非线程特定)信息的表
replication_applier_configuration
:副本上交易应用器的配置参数。replication_applier_status
:副本上交易应用器的当前状态。
包含有关负责应用从源接收的交易的特定线程的信息的表
replication_applier_status_by_coordinator
: 协调器线程的状态(除非副本是多线程,否则为空)。replication_applier_status_by_worker
: 应用器线程或工作线程的状态,如果副本是多线程。
包含有关基于通道的复制过滤器的信息表
replication_applier_filters
: 提供有关特定复制通道上配置的复制过滤器的信息。replication_applier_global_filters
: 提供有关全局复制过滤器的信息,这些过滤器适用于所有复制通道。
包含有关组复制成员的信息表
replication_group_members
: 提供组成员的网络和状态信息。replication_group_member_stats
: 提供有关组成员和他们参与的交易的统计信息。
有关更多信息,请参见 第 20.4 节,“监视组复制”。
当性能架构被禁用时,以下性能架构复制表将继续被填充
例外是复制表中的本地时间信息(交易的开始和结束时间戳)replication_connection_status
、replication_applier_status_by_coordinator
和 replication_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_Errno
和Last_SQL_Error
的别名,因此未保留Last_Errno Last_Error
在性能架构中,此错误信息可在
replication_applier_status_by_worker
表的LAST_ERROR_NUMBER
和LAST_ERROR_MESSAGE
列中获得(如果副本是多线程,则还有replication_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
未保留
Replica_IO_State
和Replica_SQL_Running_State
字段。如果需要,可以通过使用相应复制表的THREAD_ID
列并将其与INFORMATION_SCHEMA
的PROCESSLIST
表中的ID
列连接起来,从进程列表中获取这些值,以选择后者的表的STATE
列。未保留
Executed_Gtid_Set
字段。它可以显示包含大量文本的大型集合。相反,性能架构表显示副本当前正在应用的交易的 GTID。或者,可以从gtid_executed
系统变量的值获取已执行的 GTID 集。未保留
Seconds_Behind_Master
和Relay_Log_Space
字段。
复制通道
复制性能架构表的首列是 CHANNEL_NAME
。这使得可以按复制通道查看表。在非多源复制设置中,只有一个默认复制通道。当你在副本上使用多个复制通道时,可以按复制通道过滤表以监视特定复制通道。有关更多信息,请参见 第 19.2.2 节,“复制通道” 和 第 19.1.5.8 节,“监视多源复制”。