该 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
或No
-
connected_rank1_arbs
排名 1 的连接仲裁者
-
connected_rank2_arbs
排名 2 的连接仲裁者
注意
节点 ID 和节点组 ID 与 ndb_mgm -e "SHOW" 报告的相同。
left_node
和 right_node
是根据模型定义的,模型将所有数据节点连接成一个圆圈,以节点 ID 的顺序排列,类似于钟表上的数字顺序,如下所示:
在这个示例中,我们有 8 个数据节点,编号为 5、6、7、8、12、13、14 和 15,按照顺时针方向排列在圆圈上。我们从圆圈内部确定 “左” 和 “右”。节点 5 的左侧节点是节点 15,右侧节点是节点 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)
在事件日志中,“左” 和 “右” 也被用作同样的方式。
总统节点是当前节点视为负责设置仲裁者的节点(参见 NDB 集群启动阶段)。如果总统节点失败或断开连接,当前节点期望节点 ID 显示在 successor
列中的节点成为新的总统。 succession_order
列显示当前节点在继任顺序中的位置。
在正常的 NDB 集群中,所有数据节点都应该看到同一个节点作为总统,并且看到同一个节点(除总统外)作为继任者。此外,当前总统节点应该看到自己在继任顺序中的位置为 1,继任者节点应该看到自己在继任顺序中的位置为 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
显示该节点是否连接到仲裁者。
connected_rank1_arbs
和 connected_rank2_arbs
列分别显示排名 1 和排名 2 的仲裁者列表。
管理节点和 API 节点都有资格成为仲裁者。