membership 表格描述每個資料節點在叢集中對其他所有節點的檢視,包括節點群組成員資格、主導節點、仲裁者、仲裁者繼任者、仲裁者連線狀態和其他資訊。
membership 表格包含以下欄位:
node_id此節點的節點 ID
group_id此節點所屬的節點群組
left node前一個節點的節點 ID
right_node下一個節點的節點 ID
president主導節點的節點 ID
successor主導節點繼任者的節點 ID
succession_order此節點繼任主導權的順序
Conf_HB_order-
arbitrator仲裁者的節點 ID
arb_ticket用於追蹤仲裁的內部識別碼
arb_state仲裁狀態
arb_connected此節點是否已連線到仲裁者;為
Yes或Noconnected_rank1_arbs已連線的排名 1 仲裁者
connected_rank2_arbs已連線的排名 1 仲裁者
註解
節點 ID 和節點群組 ID 與 ndb_mgm -e "SHOW" 所回報的相同。
left_node 和 right_node 是根據一個模型定義的,該模型以節點 ID 的順序將所有資料節點連接成一個圓圈,類似於時鐘刻度上的數字排序,如下圖所示:
在此範例中,我們有 8 個資料節點,編號為 5、6、7、8、12、13、14 和 15,它們在圓圈中依順時針方向排序。我們從圓圈內部決定「「左邊」」和「「右邊」」。節點 5 左邊的節點是節點 15,而節點 5 右邊的節點是節點 6。您可以執行以下查詢並觀察輸出,來查看所有這些關係:
mysql> SELECT node_id,left_node,right_node
-> FROM ndbinfo.membership;
+---------+-----------+------------+
| node_id | left_node | right_node |
+---------+-----------+------------+
| 5 | 15 | 6 |
| 6 | 5 | 7 |
| 7 | 6 | 8 |
| 8 | 7 | 12 |
| 12 | 8 | 13 |
| 13 | 12 | 14 |
| 14 | 13 | 15 |
| 15 | 14 | 5 |
+---------+-----------+------------+
8 rows in set (0.00 sec)「「左邊」」和「「右邊」」的指定在事件日誌中以相同方式使用。
president 節點是目前節點所檢視的負責設定仲裁者的節點(請參閱NDB 叢集啟動階段)。如果主導節點失敗或斷線,目前節點會預期在 successor 欄位中顯示其 ID 的節點成為新的主導節點。succession_order 欄位會顯示目前節點認為自己在繼任佇列中的位置。
在正常的 NDB 叢集中,所有資料節點都應該看到相同的節點作為 president,以及相同的節點(主導節點除外)作為其 successor。此外,目前的主導節點應該將自己視為繼任順序中的 1,successor 節點應該將自己視為 2,依此類推。
所有節點應顯示相同的 arb_ticket 值以及相同的 arb_state 值。可能的 arb_state 值為 ARBIT_NULL、ARBIT_INIT、ARBIT_FIND、ARBIT_PREP1、ARBIT_PREP2、ARBIT_START、ARBIT_RUN、ARBIT_CHOOSE、ARBIT_CRASH 和 UNKNOWN。
arb_connected 會顯示此節點是否已連線到顯示為此節點的 arbitrator 的節點。
connected_rank1_arbs 和 connected_rank2_arbs 欄位各自顯示 0 個或多個仲裁者的清單,其 ArbitrationRank 分別等於 1 或 2。
管理節點和 API 節點都有資格成為仲裁者。