性能架构提供了一些表,这些表公开了复制信息。这类似于该SHOW SLAVE STATUS
语句中可用的信息,但是以表格形式表示更易于访问并且具有可用性的好处:
SHOW SLAVE STATUS
输出对于视觉检查很有用,但对于程序使用却没有太大帮助。相比之下,使用性能模式表,可以使用常规SELECT
查询(包括复杂WHERE
条件,联接等)来搜索有关从站状态的信息。- 查询结果可以保存在表中以进行进一步分析,或分配给变量,从而在存储过程中使用。
- 复制表提供了更好的诊断信息。对于多线程从属操作,请
SHOW SLAVE STATUS
使用Last_SQL_Errno
和Last_SQL_Error
字段报告所有协调器和工作线程错误,因此只有这些错误中的最新错误才可见,并且信息可能丢失。复制表按线程存储错误,而不会丢失信息。 - 在每个员工的基础上,最后看到的事务在复制表中可见。这是无法获得的信息
SHOW SLAVE STATUS
。 - 熟悉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_applier_filters
:提供有关在特定复制通道上配置的复制过滤器的信息。replication_applier_global_filters
:提供有关适用于所有复制通道的全局复制筛选器的信息。
包含有关组复制成员信息的表:
replication_group_members
:为组成员提供网络和状态信息。replication_group_member_stats
:提供有关组成员及其参与的交易的统计信息。
有关更多信息,请参见“监视组复制”。
禁用性能架构后,将继续填充以下性能架构复制表:
replication_connection_configuration
replication_connection_status
replication_applier_configuration
replication_applier_status
replication_applier_status_by_coordinator
replication_applier_status_by_worker
唯一的例外是在复制表的本地定时信息(开始和结束时间戳进行交易)replication_connection_status
,replication_applier_status_by_coordinator
和replication_applier_status_by_worker
。禁用性能架构时,不会收集此信息。
以下各节将更详细地描述每个复制表,包括由产生的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
因为这些表是针对使用全局事务标识符(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
,notserver_uuid
和不保留:Master_Server_Id Replicate_Ignore_Server_Ids
- 该
Skip_Counter
字段基于事件计数,而不是GTID,并且不会保留。 这些错误字段是
Last_SQL_Errno
和的别名Last_SQL_Error
,因此不会保留它们:Last_Errno Last_Error
在性能模式中,此错误信息在表的
LAST_ERROR_NUMBER
和LAST_ERROR_MESSAGE
列中可用replication_applier_status_by_coordinator
(并且replication_applier_status_by_worker
如果从属服务器是多线程的)。这些表提供比可从更具体的每个线程的错误信息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
字段在待决定状态,并不会保留。
复制通道
复制性能模式表的第一列是CHANNEL_NAME
。这使每个复制通道都可以查看表。在非多源复制设置中,只有一个默认复制通道。在从属服务器上使用多个复制通道时,可以过滤每个复制通道的表以监视特定的复制通道。有关更多信息,请参见“复制通道”和“监视多源复制”。