MySQL8.
また、replication_
とreplication_
があります。これらのテーブルについては、
今回は、
performance_schemaのレプリケーションテーブル
レプリケーションテーブルは、SHOW SLAVE STATUS
では表現しきれなかった項目を表示できるようになっています。
よって、Seconds_
やRelay_
といった項目は表示されません。また、
replication_connection_statusテーブル
このテーブルはマスターの接続状態
mysql >SELECT * FROM replication_connection_status\G *************************** 1. row *************************** CHANNEL_NAME: GROUP_NAME: SOURCE_UUID: 9f46b8ef-8039-11e9-9958-fa163f770158 THREAD_ID: 50 SERVICE_STATE: ON COUNT_RECEIVED_HEARTBEATS: 57 LAST_HEARTBEAT_TIMESTAMP: 2019-05-27 14:35:36.359708 RECEIVED_TRANSACTION_SET: 9f46b8ef-8039-11e9-9958-fa163f770158:1-1139998 LAST_ERROR_NUMBER: 0 LAST_ERROR_MESSAGE: LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00.000000 LAST_QUEUED_TRANSACTION: 9f46b8ef-8039-11e9-9958-fa163f770158:1139998 LAST_QUEUED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP: 2019-05-27 14:36:46.967330 LAST_QUEUED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP: 2019-05-27 14:36:46.967330 LAST_QUEUED_TRANSACTION_START_QUEUE_TIMESTAMP: 2019-05-27 14:36:46.968575 LAST_QUEUED_TRANSACTION_END_QUEUE_TIMESTAMP: 2019-05-27 14:36:46.968611 QUEUEING_TRANSACTION: 9f46b8ef-8039-11e9-9958-fa163f770158:1139999 QUEUEING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP: 2019-05-27 14:36:46.967335 QUEUEING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP: 2019-05-27 14:36:46.967335 QUEUEING_TRANSACTION_START_QUEUE_TIMESTAMP: 2019-05-27 14:36:46.968615
MySQL8.
- LAST_
QUEUED_ TRANSACTION - LAST_
QUEUED_ TRANSACTION_ ORIGINAL_ COMMIT_ TIMESTAMP - LAST_
QUEUED_ TRANSACTION_ IMMEDIATE_ COMMIT_ TIMESTAMP - LAST_
QUEUED_ TRANSACTION_ START_ QUEUE_ TIMESTAMP - LAST_
QUEUED_ TRANSACTION_ END_ QUEUE_ TIMESTAMP
LAST_
START_
- QUEUEING_
TRANSACTION - QUEUEING_
TRANSACTION_ ORIGINAL_ COMMIT_ TIMESTAMP - QUEUEING_
TRANSACTION_ IMMEDIATE_ COMMIT_ TIMESTAMP - QUEUEING_
TRANSACTION_ START_ QUEUE_ TIMESTAMP
QUEUEING_
replication_applier_status_by_workerテーブル
このテーブルはMTSが無効な場合はSQLスレッドの情報を提供します。MTSが有効な場合、
mysql >SELECT * FROM replication_applier_status_by_worker\G *************************** 1. row *************************** CHANNEL_NAME: WORKER_ID: 0 THREAD_ID: 47 SERVICE_STATE: ON LAST_ERROR_NUMBER: 0 LAST_ERROR_MESSAGE: LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00.000000 LAST_APPLIED_TRANSACTION: 9f46b8ef-8039-11e9-9958-fa163f770158:595021 LAST_APPLIED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP: 2019-05-27 14:16:33.033826 LAST_APPLIED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP: 2019-05-27 14:20:29.364112 LAST_APPLIED_TRANSACTION_START_APPLY_TIMESTAMP: 2019-05-27 14:48:26.755794 LAST_APPLIED_TRANSACTION_END_APPLY_TIMESTAMP: 2019-05-27 14:48:26.757305 APPLYING_TRANSACTION: 9f46b8ef-8039-11e9-9958-fa163f770158:595022 APPLYING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP: 2019-05-27 14:16:33.034271 APPLYING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP: 2019-05-27 14:20:29.365344 APPLYING_TRANSACTION_START_APPLY_TIMESTAMP: 2019-05-27 14:48:26.757314 LAST_APPLIED_TRANSACTION_RETRIES_COUNT: 0 LAST_APPLIED_TRANSACTION_LAST_TRANSIENT_ERROR_NUMBER: 0 LAST_APPLIED_TRANSACTION_LAST_TRANSIENT_ERROR_MESSAGE: LAST_APPLIED_TRANSACTION_LAST_TRANSIENT_ERROR_TIMESTAMP: 0000-00-00 00:00:00.000000 APPLYING_TRANSACTION_RETRIES_COUNT: 0 APPLYING_TRANSACTION_LAST_TRANSIENT_ERROR_NUMBER: 0 APPLYING_TRANSACTION_LAST_TRANSIENT_ERROR_MESSAGE: APPLYING_TRANSACTION_LAST_TRANSIENT_ERROR_TIMESTAMP: 0000-00-00 00:00:00.000000
MySQL8.
- LAST_
APPLIED_ TRANSACTION - LAST_
APPLIED_ TRANSACTION_ ORIGINAL_ COMMIT_ TIMESTAMP - LAST_
APPLIED_ TRANSACTION_ IMMEDIATE_ COMMIT_ TIMESTAMP - LAST_
APPLIED_ TRANSACTION_ START_ APPLY_ TIMESTAMP - LAST_
APPLIED_ TRANSACTION_ END_ APPLY_ TIMESTAMP - LAST_
APPLIED_ TRANSACTION_ RETRIES_ COUNT - LAST_
APPLIED_ TRANSACTION_ LAST_ TRANSIENT_ ERROR_ NUMBER - LAST_
APPLIED_ TRANSACTION_ LAST_ TRANSIENT_ ERROR_ MESSAGE - LAST_
APPLIED_ TRANSACTION_ LAST_ TRANSIENT_ ERROR_ TIMESTAMP
LAST_
その他のRETRIES_
- APPLYING_
TRANSACTION - APPLYING_
TRANSACTION_ ORIGINAL_ COMMIT_ TIMESTAMP - APPLYING_
TRANSACTION_ IMMEDIATE_ COMMIT_ TIMESTAMP - APPLYING_
TRANSACTION_ START_ APPLY_ TIMESTAMP - APPLYING_
TRANSACTION_ RETRIES_ COUNT - APPLYING_
TRANSACTION_ LAST_ TRANSIENT_ ERROR_ NUMBER - APPLYING_
TRANSACTION_ LAST_ TRANSIENT_ ERROR_ MESSAGE - APPLYING_
TRANSACTION_ LAST_ TRANSIENT_ ERROR_ TIMESTAMP
APPLYING_
replication_applier_status_by_coordinatorテーブル
このテーブルはコーディネータスレッドの情報を提供します。MTSが無効の場合はこのテーブルは空です。MySQL8.
- LAST_
PROCESSED_ TRANSACTION - LAST_
PROCESSED_ TRANSACTION_ ORIGINAL_ COMMIT_ TIMESTAMP - LAST_
PROCESSED_ TRANSACTION_ IMMEDIATE_ COMMIT_ TIMESTAMP - LAST_
PROCESSED_ TRANSACTION_ START_ BUFFER_ TIMESTAMP - LAST_
PROCESSED_ TRANSACTION_ END_ BUFFER_ TIMESTAMP - PROCESSING_
TRANSACTION - PROCESSING_
TRANSACTION_ ORIGINAL_ COMMIT_ TIMESTAMP - PROCESSING_
TRANSACTION_ IMMEDIATE_ COMMIT_ TIMESTAMP - PROCESSING_
TRANSACTION_ START_ BUFFER_ TIMESTAMP
LAST_
まとめ
今回紹介した、
- LAST_
QUEUED_ TRANSACTION (IOスレッドがリレーログに書いた最後のトランザクション) - QUEUEING_
TRANSACTION (IOスレッドがリレーログに現在書いているトランザクション) - LAST_
PROCESSED_ TRANSACTION (MTSが有効な場合のみ、 コーディネータスレッドが処理した最後のトランザクション) - PROCESSING_
TRANSACTION (MTSが有効な場合のみ、 コーディネータスレッドが現在処理しているトランザクション) - LAST_
APPLIED_ TRANSACTION (SQLスレッドが適用した最後のトランザクション) - APPLYING_
TRANSACTION (SQLスレッドが現在適用しているトランザクション)
スレーブ側でもマスターで実施されたコミット時間などを把握できるようになりました。
MTSが無効の場合は、
mysql >SELECT TIMEDIFF(APPLYING_TRANSACTION_START_APPLY_TIMESTAMP,APPLYING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP) as DIFF_TIME FROM replication_applier_status_by_worker ; +-----------------+ | DIFF_TIME | +-----------------+ | 00:29:03.374953 | +-----------------+
mysql >SELECT TIMEDIFF(APPLYING_TRANSACTION_START_APPLY_TIMESTAMP,APPLYING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP) as DIFF_TIME FROM replication_applier_status_by_worker ; +-----------------+ | DIFF_TIME | +-----------------+ | 00:10:01.124343 | +-----------------+
また、