25.12.11.6 The replication_applier_status_by_worker Table

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.3, “Replication Channels” for more information.

  • WORKER_ID

    The worker identifier (same value as the id column in the mysql.slave_worker_info table). After STOP SLAVE, the THREAD_ID column becomes NULL, but the WORKER_ID value is preserved.

  • THREAD_ID

    The worker thread identifier.

  • SERVICE_STATE

    ON (thread exists and is active or idle) or OFF (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 is OFF, this column is ANONYMOUS, indicating that transactions do not have global transaction identifiers (GTIDs) and are identified by file and position only.

    If gtid_mode is ON, 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 as gtid_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 or RESET SLAVE resets the values shown in these columns.

    All error codes and messages displayed in the LAST_ERROR_NUMBER and LAST_ERROR_MESSAGE columns correspond to error values listed in Section B.3.1, “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