监控复制状态
Neo4j 5.24 引入了 dbms.cluster.statusCheck()
过程,该过程可用于监控集群数据库中复制的能力。在大多数情况下,这意味着集群数据库是可写入的。该过程识别集群数据库中哪些成员是最新的,并且可以参与成功的复制。因此,它在确定集群数据库的容错能力方面很有用。此外,您可以使用该过程来识别集群数据库中集群内的领导者。
调用该过程的成员会在与真实事务相同的集群中复制一个虚拟事务,并验证它是否可以被复制和应用。 由于状态检查不会复制实际的事务,因此即使状态检查报告它可以复制,也不能保证数据库是可写入的。除了复制之外,写入路径中还有其他停止点可能会阻止事务被应用,例如数据库中的问题。但是,它表明集群是健康的,并且在大多数情况下这意味着数据库是可写入的。 |
集群状态检查
语法
CALL dbms.cluster.statusCheck(databases :: LIST<STRING>, timeoutMilliseconds = null :: INTEGER)
参数
名称 | 类型 | 描述 |
---|---|---|
|
List<String> |
应为其运行状态检查的数据库。提供空列表将为该服务器上的所有**集群**数据库运行状态检查,即它不会在单节点或辅助节点上运行。 |
|
Integer |
在返回复制不成功之前允许复制的时间。默认值为 1000 毫秒。 |
返回值
该过程为所有请求数据库的所有主成员返回一行,其中每一行包含
名称 | 类型 | 描述 |
---|---|---|
|
String |
复制了 |
|
String |
服务器的 UUID,它参与或未参与 |
|
String |
服务器的友好名称,如果未设置名称,则为其 UUID。 |
|
String |
服务器的 Bolt 端口地址。 |
|
Boolean |
指示服务器(运行该过程的服务器)是否可以复制事务。 |
|
String |
每个主成员的状态。 |
|
String |
每个主成员感知到的领导者的服务器 ID。 |
|
Integer |
每个主成员感知到的领导者的任期。如果成员报告不同的领导者,则应信任任期最高的领导者。 |
|
Boolean |
服务器是否是请求者。 |
|
String |
如果存在错误消息,则包含错误消息。错误的一个示例是请求的数据库之一或全部在请求者上不存在。 |
replicationSuccessful
的可能值
-
TRUE
— 如果此服务器设法在给定的超时时间内将虚拟事务复制到大多数集群成员。 -
FALSE
— 如果在超时时间内复制失败。该值在列方向上相同。复制失败可能表示集群中的实际问题(例如,没有领导者),或者此服务器在应用更新方面落后太多,无法复制。
memberStatus
的可能值
-
APPLYING
表示成员可以复制并且正在积极应用事务。 -
REPLICATING
表示成员可以参与复制,但不能应用。这种状态并不常见,但在等待数据库启动并接受事务时可能会发生。 -
UNAVAILABLE
表示成员要么落后于领导者太多,要么无法访问。
requester
的可能值
-
TRUE
— 对于运行该过程的服务器。 -
FALSE
— 在其余服务器上。
通常,您可以使用replicationSuccessful
字段来确定整体写入可用性,而可以检查memberStatus
字段以查看数据库是否具有容错能力。
处于 处于 最后, |
示例
运行状态检查
在针对服务器运行集群状态检查时,预期输出类似于以下内容
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| database | serverId | serverName | address | replicationSuccessful | memberStatus | recognisedLeader | recognisedLeaderTerm | requester | error |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| "neo4j" | "d3fe2e6a-494d-4ab8-81b1-7de2ce31ce11" | "d3fe2e6a-494d-4ab8-81b1-7de2ce31ce11" | "localhost:7682" | TRUE | "APPLYING" | "565130e8-b8f0-41ad-8f9d-c660bd8d5519" | 4 | FALSE | NULL |
| "neo4j" | "565130e8-b8f0-41ad-8f9d-c660bd8d5519" | "565130e8-b8f0-41ad-8f9d-c660bd8d5519" | "localhost:7681" | TRUE | "APPLYING" | "565130e8-b8f0-41ad-8f9d-c660bd8d5519" | 4 | TRUE | NULL |
| "neo4j" | "58c70f4b-910d-4d0e-b0f2-3084554079ec" | "58c70f4b-910d-4d0e-b0f2-3084554079ec" | "localhost:7683" | TRUE | "APPLYING" | "565130e8-b8f0-41ad-8f9d-c660bd8d5519" | 4 | FALSE | NULL |
| "system" | "565130e8-b8f0-41ad-8f9d-c660bd8d5519" | "565130e8-b8f0-41ad-8f9d-c660bd8d5519" | "localhost:7681" | TRUE | "APPLYING" | "d3fe2e6a-494d-4ab8-81b1-7de2ce31ce11" | 1 | TRUE | NULL |
| "system" | "58c70f4b-910d-4d0e-b0f2-3084554079ec" | "58c70f4b-910d-4d0e-b0f2-3084554079ec" | "localhost:7683" | TRUE | "APPLYING" | "d3fe2e6a-494d-4ab8-81b1-7de2ce31ce11" | 1 | FALSE | NULL |
| "system" | "d3fe2e6a-494d-4ab8-81b1-7de2ce31ce11" | "d3fe2e6a-494d-4ab8-81b1-7de2ce31ce11" | "localhost:7682" | TRUE | "APPLYING" | "d3fe2e6a-494d-4ab8-81b1-7de2ce31ce11" | 1 | FALSE | NULL |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+