29.12.11.8 复制应用程序状态表
该表提供了复制线程在副本或组复制成员上处理的事务的详细信息。对于单线程副本,数据显示为副本的单个复制线程。对于多线程副本,数据分别显示每个复制线程。多线程副本上的复制线程有时被称为工作者线程。副本或组复制成员上复制线程的数量由replica_parallel_workers
系统变量设置,该变量对于单线程副本被设置为零。多线程副本还有一条协调器线程来管理复制线程,其状态显示在replication_applier_status_by_coordinator
表中。
所有错误代码和消息,出现在与错误相关的列中,都对应于服务器错误参考中的错误值。
当性能模式被禁用时,不会收集本地时间信息,因此显示事务应用程序的开始和结束时间的字段为零。表中的开始时间指的是工作者线程开始应用第一个事件的时间,而结束时间指的是最后一个事件的事务应用完成时间。
当副本通过START REPLICA
语句重启时,开始和结束时间的列将被重置。
表replication_applier_status_by_worker
具有以下列:
-
CHANNEL_NAME
显示的复制通道名称。总是有一个默认的复制通道,更多的复制通道可以添加。请参阅第19.2.2节,“复制通道”以获取更多信息。
-
WORKER_ID
工作者标识符(与
mysql.slave_worker_info
表中的id
列相同)。在STOP REPLICA
后,THREAD_ID
列变为NULL
,但WORKER_ID
值被保留。 -
THREAD_ID
工作者线程的ID。
-
SERVICE_STATE
ON
(线程存在且活动或空闲)或OFF
(线程不再存在)。 -
LAST_ERROR_NUMBER
,LAST_ERROR_MESSAGE
最近一个错误导致工作者线程停止时的错误号和错误消息。错误号为0,消息为空字符串表示“无错误”。如果
LAST_ERROR_MESSAGE
值不为空,则错误值也出现在副本的错误日志中。执行
RESET BINARY LOGS AND GTIDS
或RESET REPLICA
重置这些列显示的值。 -
LAST_ERROR_TIMESTAMP
一个以
'YYYY-MM-DD hh:mm:ss[.fraction]'
格式表示的时间戳,显示了最近一个工作者错误发生的时间。 -
LAST_APPLIED_TRANSACTION
由此工作者线程应用的事务的全局事务ID(GTID)。
-
LAST_APPLIED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
一个以
'YYYY-MM-DD hh:mm:ss[.fraction]'
格式表示的时间戳,显示了由此工作者线程应用的事务在原始源上提交的时间。 -
LAST_APPLIED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
一个以
'YYYY-MM-DD hh:mm:ss[.fraction]'
格式表示的时间戳,显示了由此工作者线程应用的事务在紧急源上提交的时间。 -
LAST_APPLIED_TRANSACTION_START_APPLY_TIMESTAMP
一个时间戳,格式为
'YYYY-MM-DD hh:mm:ss'
,显示了该工作者开始应用最后一个已应用事务的时间。 -
LAST_APPLIED_TRANSACTION_END_APPLY_TIMESTAMP
一个时间戳,格式为
'YYYY-MM-DD hh:mm:ss'
,显示了该工作者完成应用最后一个已应用事务的时间。 -
APPLYING_TRANSACTION
当前工作者正在应用的事务的全局事务ID(GTID)。
-
APPLYING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
一个时间戳,格式为
'YYYY-MM-DD hh:mm:ss'
,显示了当前工作者正在应用的事务在原始源上提交的时间。 -
APPLYING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
一个时间戳,格式为
'YYYY-MM-DD hh:mm:ss'
,显示了当前工作者正在应用的事务在紧急源上提交的时间。 -
APPLYING_TRANSACTION_START_APPLY_TIMESTAMP
一个时间戳,格式为
'YYYY-MM-DD hh:mm:ss'
,显示了工作者开始尝试应用当前正在应用的事务的时间。 -
LAST_APPLIED_TRANSACTION_RETRIES_COUNT
最后一个已应用事务被重试的次数。如果该事务在第一次尝试中就被应用了,这个数字是0。
-
LAST_APPLIED_TRANSACTION_LAST_TRANSIENT_ERROR_NUMBER
导致最后一个已应用事务重试的最后一次暂时错误的错误号。
-
LAST_APPLIED_TRANSACTION_LAST_TRANSIENT_ERROR_MESSAGE
导致最后一个已应用事务重试的最后一次暂时错误的消息文本。
-
LAST_APPLIED_TRANSACTION_LAST_TRANSIENT_ERROR_TIMESTAMP
一个时间戳,格式为
'YYYY-MM-DD hh:mm:ss'
,显示了导致最后一个已应用事务重试的最后一次暂时错误发生的时间。 -
APPLYING_TRANSACTION_RETRIES_COUNT
当前正在应用的事务被重试的次数。如果该事务在第一次尝试中就被应用了,这个数字是0。
-
APPLYING_TRANSACTION_LAST_TRANSIENT_ERROR_NUMBER
导致当前正在应用的事务重试的最后一次暂时错误的错误号。
-
APPLYING_TRANSACTION_LAST_TRANSIENT_ERROR_MESSAGE
导致当前正在应用的事务重试的最后一次暂时错误的消息文本。
-
APPLYING_TRANSACTION_LAST_TRANSIENT_ERROR_TIMESTAMP
一个时间戳,格式为
'YYYY-MM-DD hh:mm:ss'
,显示了导致当前正在应用的事务重试的最后一次暂时错误发生的时间。
表 replication_applier_status_by_worker
有这些索引:
-
主键在 (
CHANNEL_NAME
,WORKER_ID
) 上 -
索引在 (
THREAD_ID
) 上
以下表格显示了 replication_applier_status_by_worker
列与 SHOW REPLICA STATUS
列之间的对应关系。
replication_applier_status_by_worker Column |
SHOW REPLICA STATUS Column |
---|---|
WORKER_ID |
无 |
THREAD_ID |
无 |
SERVICE_STATE |
无 |
LAST_ERROR_NUMBER |
Last_SQL_Errno |
LAST_ERROR_MESSAGE |
Last_SQL_Error |
LAST_ERROR_TIMESTAMP |
Last_SQL_Error_Timestamp |