- 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 节,“监控组复制”。
当 Performance Schema 被禁用时,以下 Performance Schema 复制表将继续被填充
例外情况是复制表中有关本地时间的信息(事务的开始和结束时间戳) replication_connection_status、replication_applier_status_by_coordinator 和 replication_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_Errno和Last_SQL_Error的别名,因此没有保留Last_Errno Last_Error在 Performance Schema 中,此错误信息可以在
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_SCHEMAPROCESSLIST表中的ID列连接起来,从进程列表中获取这些值,以选择后者的表的STATE列。没有保留
Executed_Gtid_Set字段。它可以显示包含大量文本的大型集合。相反,Performance Schema 表显示副本当前正在应用的事务的 GTID。或者,可以从gtid_executed系统变量的值中获取已执行的 GTID 集。没有保留
Seconds_Behind_Master和Relay_Log_Space字段。
复制通道
复制 Performance Schema 表的第一列是 CHANNEL_NAME。这使得可以按复制通道查看这些表。在非多源复制设置中,有一个默认的复制通道。当您在副本上使用多个复制通道时,可以按复制通道过滤表,以监控特定的复制通道。有关更多信息,请参见 第 19.2.2 节,“复制通道” 和 第 19.1.5.8 节,“监控多源复制”。