29.12.11 性能模式复制表格
- 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 表
性能模式提供了用于暴露复制信息的表格。这与SHOW REPLICA STATUS
语句提供的信息类似,但在表格形式中更易于访问,具有更好的可用性:
-
SHOW REPLICA STATUS
输出对于视觉检查很有用,但不太适合程序化使用。相比之下,使用性能模式表格,可以使用通用的SELECT
查询来搜索复制状态信息,包括复杂的WHERE
条件、连接等。 -
查询结果可以保存到表格中进行进一步分析,也可以分配给变量并因此在存储程序中使用。
-
复制表提供了更好的诊断信息。对于多线程副本操作,
SHOW REPLICA STATUS
报告所有协调器和工作线程的错误使用Last_SQL_Errno
和Last_SQL_Error
字段,因此只有最近的那些错误是可见的,信息可能会丢失。复制表格存储每个线程的错误,没有信息丢失。 -
最后一次看到的事务在复制表中按工作人员显示。这是
SHOW REPLICA STATUS
不可见的信息。 -
熟悉性能模式接口的开发人员可以通过向表格中添加行来提供额外信息来扩展复制表。
复制 Table Descriptions
性能模式提供以下与复制相关的表格:
-
包含副本连接到源的信息的表格:
-
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
的字段不在表中表示的介绍,余下部分。
复制 Table Life Cycle
性能模式填充复制表的方式如下:
-
在执行
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
时被填充,行数表示工作线程的数量。
Replica Status Information Not In the 复制 Tables
性能模式中的复制表与 SHOW REPLICA STATUS
中的信息有所不同,因为它们针对全局事务标识符(GTIDs)而不是文件名和位置,并且它们表示服务器 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
-
Skip_Counter
字段基于事件计数,而不是 GTIDs,不被保留。 -
这些错误字段是对
Last_SQL_Errno
和Last_SQL_Error
的别名,因此它们不会被保留:Last_Errno Last_Error
在性能模式中,这些错误信息可以在
replication_
applier_status_by_worker
表(以及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
字段可能显示一个包含大量文本的大集合。相反,性能模式表显示了复制器正在应用的事务的GTIDs。或者,可以从gtid_
executed
系统变量的值中获取执行过的GTID集合。 -
Seconds_Behind_Master
和Relay_Log_Space
字段处于待决状态,不会被保留。
复制 Channels
复制性能模式表的第一列是 CHANNEL_NAME
。这使得可以按复制通道查看这些表。在非多源复制设置中,有一个单一的默认复制通道。当你在复制器上使用多个复制通道时,可以通过筛选表来监控特定的复制通道。请参阅 第19.2.2节,“复制通道” 和 第19.1.5.8节,“监控多源复制” 以获取更多信息。