如果副本不是多线程的,则此表显示应用程序线程的状态。否则,副本使用多个工作线程和一个协调线程来管理它们,此表显示工作线程的状态。对于多线程副本,该
replication_applier_status_by_coordinator
表显示协调器线程的状态。
该replication_applier_status_by_worker
表有以下列:
CHANNEL_NAME
此行显示的复制通道。总是有一个默认的复制通道,可以添加更多的复制通道。有关详细信息,请参阅 第 16.2.2 节,“复制通道”。
WORKER_ID
id
工作人员标识符(与表中列的 值相同mysql.slave_worker_info
)。在 之后STOP SLAVE
,该THREAD_ID
列变为NULL
,但WORKER_ID
值被保留。THREAD_ID
工作线程标识符。
SERVICE_STATE
ON
(线程存在并且处于活动或空闲状态)或OFF
(线程不再存在)。LAST_SEEN_TRANSACTION
工作人员最后看到的交易。工作人员不一定应用此事务,因为它可能仍在执行此操作。
如果
gtid_mode
系统变量值为OFF
,则此ANONYMOUS
列为 ,表示事务没有全局事务标识符(GTID),仅通过文件和位置标识。如果
gtid_mode
是ON
,列值定义如下:如果没有交易执行,则该列为空。
GTID 会一直保留到执行下一个事务为止。如果发生错误,该列的值是错误发生时worker正在执行的事务的GTID。以下语句显示该事务是否已提交:
SELECT GTID_SUBSET(LAST_SEEN_TRANSACTION, @@GLOBAL.GTID_EXECUTED) FROM performance_schema.replication_applier_status_by_worker;
如果该语句返回零,则事务尚未提交,因为它仍在处理中,或者因为工作线程在处理时已停止。如果语句返回非零值,则事务已提交。
LAST_ERROR_NUMBER
,LAST_ERROR_MESSAGE
导致工作线程停止的最近错误的错误号和错误消息。错误号 0 和空字符串的消息表示“没有错误”。如果该
LAST_ERROR_MESSAGE
值不为空,则错误值也会出现在副本的错误日志中。发出
RESET MASTER
或RESET SLAVE
重置这些列中显示的值。LAST_ERROR_NUMBER
和 列 中显示的所有错误代码和消息LAST_ERROR_MESSAGE
对应于 服务器错误消息参考中列出的错误值。LAST_ERROR_TIMESTAMP
格式的时间戳
YYMMDD hh:mm:ss
,显示最近发生工作程序错误的时间。
TRUNCATE TABLE
不允许用于
replication_applier_status_by_worker
表。
下表是
replication_applier_status_by_worker
列与SHOW SLAVE STATUS
列的对应关系。
replication_applier_status_by_worker 柱子 |
SHOW SLAVE STATUS 柱子 |
---|---|
WORKER_ID |
没有任何 |
THREAD_ID |
没有任何 |
SERVICE_STATE |
没有任何 |
LAST_SEEN_TRANSACTION |
没有任何 |
LAST_ERROR_NUMBER |
Last_SQL_Errno |
LAST_ERROR_MESSAGE |
Last_SQL_Error |
LAST_ERROR_TIMESTAMP |
Last_SQL_Error_Timestamp |