- 25.12.11.1 复制连接配置表
- 25.12.11.2 复制连接状态表
- 25.12.11.3 replication_applier_configuration 表
- 25.12.11.4 replication_applier_status 表
- 25.12.11.5 replication_applier_status_by_coordinator 表
- 25.12.11.6 replication_applier_status_by_worker 表
- 25.12.11.7 replication_group_members 表
- 25.12.11.8 replication_group_member_stats 表
性能模式提供公开复制信息的表。这类似于SHOW SLAVE STATUS
语句中可用的信息,但表格形式的表示更易于访问并且具有可用性优势:
SHOW SLAVE STATUS
output 对于目视检查很有用,但对于编程用途则没有那么多。相比之下,使用 Performance Schema 表,可以使用一般SELECT
查询来搜索有关副本状态的信息,包括复杂WHERE
条件、连接等。查询结果可以保存在表中以供进一步分析,或分配给变量,从而在存储过程中使用。
复制表提供更好的诊断信息。对于多线程副本操作, 使用和 字段
SHOW SLAVE STATUS
报告所有协调器和工作线程错误 ,因此只有最近的这些错误是可见的,信息可能会丢失。复制表以每个线程为基础存储错误,不会丢失信息。Last_SQL_Errno
Last_SQL_Error
最后看到的事务在每个工作人员的复制表中是可见的。这是无法从 获得的信息
SHOW SLAVE STATUS
。熟悉 Performance Schema 接口的开发人员可以扩展复制表,通过向表中添加行来提供额外的信息。
复制表说明
Performance Schema 提供了以下与复制相关的表:
包含有关副本与复制源服务器的连接信息的表:
replication_connection_configuration
: 连接源的配置参数replication_connection_status
:与源连接的当前状态
包含有关事务应用程序的一般(非线程特定)信息的表:
replication_applier_configuration
:副本上事务应用程序的配置参数。replication_applier_status
:副本上事务应用程序的当前状态。
包含有关负责应用从源接收的事务的特定线程的信息的表:
replication_applier_status_by_coordinator
:协调器线程的状态(除非副本是多线程的,否则为空)。replication_applier_status_by_worker
:如果副本是多线程的,应用程序线程或工作线程的状态。
包含有关复制组成员信息的表:
replication_group_members
:提供群组成员的网络和状态信息。replication_group_member_stats
:提供群组成员及其参与交易的统计信息。
以下部分更详细地描述了每个复制表,包括生成的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
值为ON
。CONNECTING
连接到源的线程在建立连接时具有值,ON
此后只要连接持续。之后
STOP SLAVE
,THREAD_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_Errno
,Last_SQL_Error
因此不会保留它们:Last_Errno Last_Error
在 Performance Schema 中,此错误信息在表的
LAST_ERROR_NUMBER
和LAST_ERROR_MESSAGE
列中 可用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
和
Slave_IO_State
字段Slave_SQL_Running_State
不会保留。THREAD_ID
如果需要,可以通过使用适当复制表的列并将其与表中的ID
列 连接INFORMATION_SCHEMA
PROCESSLIST
以选择后表的 列,从进程列表中获取这些值STATE
。该
Executed_Gtid_Set
字段可以显示包含大量文本的大集合。相反,性能模式表显示副本当前正在应用的事务的 GTID。或者,可以从gtid_executed
系统变量的值中获取一组已执行的 GTID。和字段处于待定状态,不保留
Seconds_Behind_Master
。Relay_Log_Space
状态变量移至复制表
从 MySQL 版本 5.7.5 开始,以下状态变量(以前使用 监视SHOW
STATUS
)已移至 Perfomance Schema 复制表:
这些状态变量现在仅在使用单个复制通道时才相关,因为它们 仅报告默认复制通道的状态。当存在多个复制通道时,使用本节中描述的性能模式复制表,它为每个现有的复制通道报告这些变量。
复制通道
复制性能模式表的第一列是
CHANNEL_NAME
. 这使得可以按复制通道查看表。在非多源复制设置中,只有一个默认复制通道。当您在副本上使用多个复制通道时,您可以过滤每个复制通道的表以监视特定的复制通道。有关详细信息,请参阅第 16.2.2 节,“复制通道”
和第 16.1.5.8 节,“多源复制监视”。