If the replica is not multithreaded, this table shows the
status of the applier thread. Otherwise, the replica uses
multiple worker threads and a coordinator thread to manage
them, and this table shows the status of the worker threads.
For a multithreaded replica, the
replication_applier_status_by_coordinator
table shows the status of the coordinator thread.
The replication_applier_status_by_worker
table has these columns:
CHANNEL_NAME
The replication channel which this row is displaying. There is always a default replication channel, and more replication channels can be added. See Section 16.2.2, “Replication Channels” for more information.
WORKER_ID
The worker identifier (same value as the
id
column in themysql.slave_worker_info
table). AfterSTOP SLAVE
, theTHREAD_ID
column becomesNULL
, but theWORKER_ID
value is preserved.THREAD_ID
The worker thread identifier.
SERVICE_STATE
ON
(thread exists and is active or idle) orOFF
(thread no longer exists).LAST_SEEN_TRANSACTION
The transaction that the worker has last seen. The worker has not necessarily applied this transaction because it could still be in the process of doing so.
If the
gtid_mode
system variable value isOFF
, this column isANONYMOUS
, indicating that transactions do not have global transaction identifiers (GTIDs) and are identified by file and position only.If
gtid_mode
isON
, the column value is defined as follows:If no transaction has executed, the column is empty.
When a transaction has executed, the column is set from
gtid_next
as soon asgtid_next
is set. From this moment, the column always shows a GTID.The GTID is preserved until the next transaction is executed. If an error occurs, the column value is the GTID of the transaction being executed by the worker when the error occurred. The following statement shows whether or not that transaction has been committed:
SELECT GTID_SUBSET(LAST_SEEN_TRANSACTION, @@GLOBAL.GTID_EXECUTED) FROM performance_schema.replication_applier_status_by_worker;
If the statement returns zero, the transaction has not yet been committed, either because it is still being processed, or because the worker thread was stopped while it was being processed. If the statement returns nonzero, the transaction has been committed.
LAST_ERROR_NUMBER
,LAST_ERROR_MESSAGE
The error number and error message of the most recent error that caused the worker thread to stop. An error number of 0 and message of the empty string mean “no error”. If the
LAST_ERROR_MESSAGE
value is not empty, the error values also appear in the replica's error log.Issuing
RESET MASTER
orRESET SLAVE
resets the values shown in these columns.All error codes and messages displayed in the
LAST_ERROR_NUMBER
andLAST_ERROR_MESSAGE
columns correspond to error values listed in Server Error Message Reference.LAST_ERROR_TIMESTAMP
A timestamp in
YYMMDD hh:mm:ss
format that shows when the most recent worker error occurred.
TRUNCATE TABLE
is not permitted
for the
replication_applier_status_by_worker
table.
The following table shows the correspondence between
replication_applier_status_by_worker
columns and SHOW SLAVE STATUS
columns.
replication_applier_status_by_worker Column |
SHOW SLAVE STATUS Column |
---|---|
WORKER_ID |
None |
THREAD_ID |
None |
SERVICE_STATE |
None |
LAST_SEEN_TRANSACTION |
None |
LAST_ERROR_NUMBER |
Last_SQL_Errno |
LAST_ERROR_MESSAGE |
Last_SQL_Error |
LAST_ERROR_TIMESTAMP |
Last_SQL_Error_Timestamp |