MGR單個節(jié)點(diǎn)狀態(tài)

MGR整個組的狀態(tài)

主要用到4張表
performance_schema.replication_group_member_stats
performance_schema.replication_group_members
performance_schema.replication_connection_status
performance_schema.replication_applier_status
1. replication_group_member_stats
是用來展示組復(fù)制所有成員信息的表,有關(guān)驗(yàn)證和應(yīng)用程序的統(tǒng)計(jì)信息對于了解申請隊(duì)列增長情況、觸發(fā)了多少沖突、檢查了多少事務(wù)、哪些事務(wù)已被所有成員提交等等非常有用。
這張表主要是監(jiān)控各個節(jié)點(diǎn)的性能,如果出現(xiàn)某個節(jié)點(diǎn)的事務(wù)號和其他節(jié)點(diǎn)差很多,那這個節(jié)點(diǎn)肯定出現(xiàn)了延遲,如果長時(shí)間的延遲,極有可能被群員投票給踢出去。
這張表只有在配置組復(fù)制后才會有數(shù)據(jù)。其中字段包括。

其中最重要的列,也是經(jīng)常被觀察的指數(shù)如下
COUNT_TRANSACTTIONS_IN_QUEUE:組復(fù)制隊(duì)列中等待沖突檢測的事務(wù)數(shù),只有當(dāng)沖突檢測通過才會排隊(duì)?wèi)?yīng)用到各個節(jié)點(diǎn)上(遠(yuǎn)程等待被確認(rèn)的事務(wù)數(shù))
COUNT_TRANSACTIONS_REMOTE_IN_APPLIER_QUEUE:當(dāng)前節(jié)點(diǎn)收到的等待的事務(wù)數(shù)(遠(yuǎn)程的事務(wù)還有多少沒有被應(yīng)用)
COUNT_TRANSANCTIONS_CHECKED:已經(jīng)通過沖突檢測的事務(wù)數(shù)
COUNT_TRANSACTIONS_REMOTE_APPLIED:當(dāng)前節(jié)點(diǎn)收到的應(yīng)用的事務(wù)數(shù)(本地已經(jīng)應(yīng)用的事務(wù)數(shù))
COUNT_TRANSACTIONS_LOCAL_PROPOSED:源自此成員并發(fā)送給復(fù)制組的事務(wù)數(shù)。(本地已經(jīng)提交的事務(wù)數(shù))
----------------------------------------------------------------------------------------------------------------------------
CANNEL_NAME:這個組復(fù)制通道的名稱
VIEW_ID:組復(fù)制對應(yīng)的視圖號
MEMBER_ID:復(fù)制中組成員的 ID,這個 ID 和本身 mysql 實(shí)例的 UUID 沒關(guān)系
COUNT_CONFLICTS_DETECTED:未通過沖突檢測的事務(wù)數(shù)
COUNT_TRANSACTIONS_ROWS_VALIDATING:沖突檢查數(shù)據(jù)庫的大小
TRANSACTIONS_COMMITTED_ALL_MEMBERS:已在復(fù)制組的所有成員上成功提交的事務(wù),顯示為 GTID 集。
LAST_CONFLICT_FREE_TRANSACTION:最后一次沖突事務(wù)的 GITD 號
COUNT_TRANSACTIONS_REMOTE_APPLIED:當(dāng)前節(jié)點(diǎn)收到的應(yīng)用的事務(wù)數(shù)
COUNT_TRANSACTIONS_LOCAL_PROPOSED:源自此成員并發(fā)送給復(fù)制組的事務(wù)數(shù)。
COUNT_TRANSACTIONS_LOCAL_ROLLBACK:源自此成員并被復(fù)制組回滾的事務(wù)數(shù)。
2.replication_group_members
用于監(jiān)控組內(nèi)成員復(fù)制狀態(tài)的表

CHANNEL_NAME:組復(fù)制的通道名
MEMBER_ID:組成員 ID
MEMBER_HOST:組成員的主機(jī)名
MEMBER_PORT:組成員數(shù)據(jù)庫實(shí)例端口,注意這里是實(shí)例端口
MEMBER_STATE:組成員當(dāng)前的狀態(tài),這個欄位總共有 4 個狀態(tài)Online 表示正常工作狀態(tài),表示該節(jié)點(diǎn)目前一切 OK。
Recovering 表示節(jié)點(diǎn)正在加入組中,這個狀態(tài)有可能是正在同步數(shù)據(jù),也有可能是正在和主節(jié)點(diǎn)發(fā)生通信,如果長期處于這個狀態(tài),往往是 host 沒配,需要檢查下 host 配置
Offline 表示這個節(jié)點(diǎn)的組復(fù)制插件已經(jīng)加載
Unreachable 表示經(jīng)過仲裁,某個節(jié)點(diǎn)已經(jīng)崩潰或者不可訪問。 MEMBER_ROLE:成員在組內(nèi)的角色,如果是單主模式,主的節(jié)點(diǎn)就會顯示 PRIMARY,其他節(jié)點(diǎn)顯示 SECONDARY,如果是多主模式,所有節(jié)點(diǎn)均為 PRIMARY。
MEMBER_VERSION:mysql 的版本
3. replication_connection_status
用于記錄當(dāng)前節(jié)點(diǎn)連接狀態(tài)的表

CHANNEL_NAME:組復(fù)制通道名。
GROUP_NAME:組復(fù)制名,就是組的 UUID 號。
SOURCE_UUID:組復(fù)制源的 UUID 號。
THREAD_ID:組復(fù)制 I/O 功能的 threadid
SERVICE_STATE:顯示成員當(dāng)前的活躍狀態(tài),
COUNT_RECEIVED_HEARTBEATS:從上一次重置主從后獲得的心跳數(shù)
LAST_HEARTBEAT_TIMESTAMP:節(jié)點(diǎn)的最后一次心跳時(shí)間
RECEIVED_TRANSACTION_SET:與該從站接收的所有事務(wù)相對應(yīng)的一組全局事務(wù) ID(GTID)。如果未使用 GTID,則為空。
LAST_ERROR_NUMBER:最后一次 I/O 同步線程錯誤編號,0 為無錯誤
LAST_ERROR_MESSAGE:最后一次 I/O 同步線程錯誤日志,記錄在 mysql 錯誤日志中
LAST_ERROR_TIMESTAMP:最后一次 I/O 線程錯誤的時(shí)間。
LAST_QUEUED_TRANSACTION:該節(jié)點(diǎn)同步的 relay log 中最后一個事務(wù)的 GTID 號
LAST_QUEUED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP:最后一次,在各個節(jié)點(diǎn)中寫入的事務(wù)準(zhǔn)備好提交,產(chǎn)生寫集并且發(fā)送到各個節(jié)點(diǎn)做沖突校驗(yàn)時(shí)候的時(shí)間。
LAST_QUEUED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP:最后一次事務(wù)最終提交的時(shí)間。LAST_QUEUED_TRANSACTION_START_QUEUE_TIMESTAMP:I / O 線程將最后一個事務(wù)放置在 relaylog 中的時(shí)間
LAST_QUEUED_TRANSACTION_END_QUEUE_TIMESTAMP:進(jìn)入 relaylog 排隊(duì)的時(shí)間
QUEUEING_TRANSACTION:當(dāng)前 relaylog 中全局事務(wù)的 ID
QUEUEING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP:當(dāng)前事務(wù)進(jìn)入寫集的時(shí)間
QUEUEING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP:當(dāng)前事務(wù)最后提交的時(shí)間
QUEUEING_TRANSACTION_START_QUEUE_TIMESTAMP:當(dāng)前日志進(jìn)入 relaylog 的時(shí)間
可用此表來判斷延遲
select RECEIVED_TRANSACTION_SET from replication_connection_status where CHANNEL_NAME='group_replication_applier'
union all
select VARIABLE_VALUE from global_variables where VARIABLE_NAME ='gtid_executed';本地已經(jīng)執(zhí)行的GTID和接收到遠(yuǎn)程的GTID的差異

4. replication_applier_status
用于顯示當(dāng)前組復(fù)制線程干了啥的表

CHANNEL_NAME:復(fù)制通道的名字
SERVICE_STATE:當(dāng)復(fù)制通道的應(yīng)用程序線程處于活動或空閑狀態(tài)時(shí)顯示為 ON,表示關(guān)閉時(shí),應(yīng)用程序線程未處于活動狀態(tài)
REMAINING_DELAY:同步復(fù)制線程的延遲時(shí)間。
COUNT_TRANSACTIONS_RETRIES:SQL 線程無法應(yīng)用日志重試的次數(shù)




