- 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_SCHEMA
PROCESSLIST
表中的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 节,“监控多源复制”。