25.12.11.6 Replication_Applier_status_by_workertable

如果副本不是多线程的,则此 table 显示应用程序线程的状态。否则,副本将使用多个工作线程和一个协调程序线程来 Management 它们,并且此 table 显示了工作线程的状态。对于多线程副本,replication_applier_status_by_coordinatortable 显示了协调线程的状态。

replication_applier_status_by_workertable 具有以下列:

  • CHANNEL_NAME

该行正在显示的复制通道。始终有一个默认的复制通道,并且可以添加更多的复制通道。有关更多信息,请参见第 16.2.3 节“复制通道”

  • WORKER_ID

工作程序标识符(与mysql.slave_worker_infotable 中的id列相同的值)。在STOP SLAVE之后,THREAD_ID列变为NULL,但保留WORKER_ID值。

  • THREAD_ID

工作线程标识符。

  • SERVICE_STATE

ON(线程存在并且处于活动或空闲状态)或OFF(线程不再存在)。

  • LAST_SEEN_TRANSACTION

Worker 最后一次见过的 Transaction。Worker 不一定必须应用此事务,因为它可能仍在进行中。

如果gtid_mode系统变量值为OFF,则此列为ANONYMOUS,table 示事务不具有全局事务标识符(GTID),并且仅由文件和位置标识。

如果gtid_modeON,则列值定义如下:

  • 如果未执行任何事务,则该列为空。

    • 执行事务后,设置gtid_next后,列将从gtid_next设置。从这一刻起,该列将始终显示 GTID。

    • GTID 将保留,直到执行下一个事务。如果发生错误,则列值是发生错误时工作程序正在执行的事务的 GTID。以下语句显示该事务是否已提交:

SELECT GTID_SUBSET(LAST_SEEN_TRANSACTION, @@GLOBAL.GTID_EXECUTED)
FROM performance_schema.replication_applier_status_by_worker;

如果该语句返回零,则说明该事务尚未提交,这是因为它仍在处理中,或者是因为工作线程在处理时已停止。如果该语句返回非零值,则 table 示事务已提交。

  • LAST_ERROR_NUMBER , LAST_ERROR_MESSAGE

导致工作线程停止的最新错误的错误号和错误消息。错误号 0 和空字符串的消息 table 示“无错误”。如果LAST_ERROR_MESSAGE值不为空,则错误值也会出现在副本的错误日志中。

发出RESET MASTERRESET SLAVE会重置这些列中显示的值。

LAST_ERROR_NUMBERLAST_ERROR_MESSAGE列中显示的所有错误代码和消息均与第 B.3.1 节“服务器错误消息参考”中列出的错误值相对应。

  • LAST_ERROR_TIMESTAMP
  • YYMMDD hh:mm:ss *格式的时间戳,显示最近的工作程序错误发生的时间。

replication_applier_status_by_workertable 不允许TRUNCATE TABLE

下 table 显示了replication_applier_status_by_worker列和显示从站状态列之间的对应关系。

replication_applier_status_by_workerSHOW SLAVE STATUS
WORKER_IDNone
THREAD_IDNone
SERVICE_STATENone
LAST_SEEN_TRANSACTIONNone
LAST_ERROR_NUMBERLast_SQL_Errno
LAST_ERROR_MESSAGELast_SQL_Error
LAST_ERROR_TIMESTAMPLast_SQL_Error_Timestamp