監控MySQL組復制


使用 Perfomance Schema 中的表來監控組復制,假定你的MySQL編譯時已經啟動了 Performance Schema 表。組復制將添加如下兩張 P_S 表:

  • performance_schema.replication_group_member_stats
  • performance_schema.replication_group_members

下面這些已存在的 P_S 復制表同樣也顯示一些組復制的信息。

  • performance_schema.replication_connection_status
  • performance_schema.replication_applier_status

組復制插件創建的通道名稱為:

  • group_replication_recovery - 該通道在分布式恢復階段進行復制。
  • group_replication_applier - 該通道在組中有新寫入操作時進行復制。該通道是組中有新事務流入時使用的通道。

下面一些小節中將描述這些表中可以獲取到的信息。

1.成員狀態

復制組中的每個成員都要驗證並應用組提交的事務。關於驗證者(certifier)和應用者(applier)相關的統計數據,有助於理解應用者隊列(applier queue)是如何增長的、檢測了多少次沖突、檢測到多少個事務、哪些事務是到處提交的等等問題。

performance_schema.replication_group_member_stats表提供了以下認證相關信息:

字段 描述
Channel_name 組復制通道的名稱。
Member_id 當前連接到的節點的UUID。組中每個節點的UUID值都必須唯一,也正因為如此,它也提供了一種key。
Count_Transactions_in_queue 沖突檢測隊列中事務的數量。一旦探測到沖突,且通過了檢查,則它們也會排隊后被應用和提交。
Count_transactions_checked 已檢測到的沖突事務數量。
Count_conflicts_detected 未通過沖突檢查的事務數量。
Count_transactions_validating 沖突檢測數據庫的大小(根據該數據庫對每個事務進行確認)
Transactions_committed_all_members 顯示在當前視圖中所有成員都成功提交的事務。該字段會在固定的時間間隔內更新。
Last_conflict_free_transaction 顯示最后檢測到的無沖突事務的事務ID。

這些字段對於監控連接組中成員的性能很重要。例如,假設組中某成員有些延遲,它沒有趕上組中其他成員的數據。這種情況下,你可能會看到隊列中有大量事務。根據這些信息,你可以決定是將該成員踢出組還是延遲組中其他成員處理事務,以便減少隊列中的事務數量。這些信息同樣可以幫助你決定如何調整組復制插件的流程控制。

2.組成員

該表用於監控當前視圖所跟蹤的節點狀態。或者換句話說,作為復制組的一部分,這些節點會被組成員服務跟蹤。

字段 描述
Channel_name 組復制的通道名稱。
Member_id 成員節點的 UUID。
Member_host 成員的地址。
Member_port 用於成員間通信的監聽端口。
Member_state 成員的狀態(可能的狀態值ONLINE, ERROR, RECOVERING,OFFLINE 或 UNREACHABLE)

3.連接狀態

當連接到組時,該表中的一些字段顯示組復制相關的信息。例如,已從組中接收到並在應用者(applier)隊列(relay log)中排隊的事務。

字段 描述
Channel_name 組復制通道的名稱。
Group_name 復制組的名稱。通常它是一個有效的UUID值。
Source_UUID 組的標識符。它類似於組的名稱,它用做組復制期間產生的所有事務的UUID。
Service_state 顯示該成員是否是組的一部分。可能的值有 {ON,OFF和CONNECTING}。
Received_transaction_set 該成員已經接收到的GTID集。

4.applier狀態

也可以通過普通的表 replication_applier_status 來獲取組復制相關通道的狀態和線程信息。如果有很多不同工作線程正在應用(執行)事務,該worker表同樣可以用來監控每個工作線程正在做什么。

字段 描述
Channel_name 組復制通道的名稱。
Service_state 顯示應用(applier)服務的狀態是ON 還是 OFF。
Remaining_delay 顯示是否有applier被延遲。
Count_transactions_retries 應用事務的重試次數。
Received_transaction_set 該成員已經接收到的GTID集。

5.節點狀態

在每次視圖發生改變時,replication_group_members 表會隨之更新。例如,組配置被動態更改。此時,節點之間會交換它們的元數據信息並自我同步,然后協調達成一致。

組中節點可能有多種狀態。如果節點之間能正常通信,則所有節點的報告信息都是相同的。但如果發生了網絡分裂,或節點離開了組,則可能會報告不同的信息,這依賴於被查詢的是哪一個節點。注意,如果節點已經離開了組,那么顯然它不能報告其他節點相關的最新信息。如果發生了網絡分裂,以至於丟失了法定票數,則各節點將無法進行協調。因此,它們無法猜測其他節點的狀態是什么。因此,它們不會報告它們猜測出來的狀態,而是會報告節點無法到達。

字段 描述 組同步狀態
ONLINE 該節點已經准備好一切,可供客戶端連接,並可以執行事務。 Yes
RECOVERING 該節點正在加入組,它當前正處於分布式恢復階段,接收來自組的狀態信息。 No
OFFLINE 插件已加載,但還不是任何組中的成員。 No
ERROR 無論是恢復階段還是應用階段發生錯誤,都會出現該狀態。 No
UNREACHABLE 當本地故障探測器懷疑該節點不可到達時,將顯示該狀態。可能的原因是目標宕機、非自願離開組。 No

注意,組復制是非同步的,但會達到最終的同步(譯注:即最終一致性,強一致性)。更准確地說,事務按照相同的順序投遞到所有的成員上,但是它們每個節點對事務的執行非同步的,意味着在允許事務的提交后,每個成員按照它們自己的步調來執行事務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM