监控复制状态

可以使用 dbms.cluster.statusCheck() 存储过程来监控集群数据库的复制能力。在大多数情况下,这意味着集群数据库可用于写入。该存储过程会识别集群数据库中哪些成员是最新的,并且可以参与成功复制。因此,它对于确定集群数据库的容错能力非常有用。此外,您可以使用该存储过程来识别集群中集群数据库的领导者。

该存储过程在集群内复制一个虚拟事务,并验证其是否可以被复制和应用。由于状态检查不复制实际事务,因此它不保证写入可用性,因为写入路径中的其他因素(例如,数据库问题)可能会阻塞事务。然而,健康的复制状态通常在大多数情况下表示写入可用。

集群状态检查

语法

CALL dbms.cluster.statusCheck(databases :: LIST<STRING>, timeoutMilliseconds = null :: INTEGER)

输入参数

名称 类型 描述

数据库

列表<字符串>

要运行状态检查的数据库。提供空列表将对该服务器上的所有集群化数据库运行状态检查,即它不会在独立或二级数据库上运行。

超时毫秒

整数

指定复制的最大等待时间,超过此时间则标记为不成功。默认值为 1000 毫秒。

返回参数

该存储过程为所有请求数据库的所有主成员返回一行,其中每行包含:

名称 类型 描述

数据库

字符串

复制了 状态检查条目 的数据库。

服务器ID

字符串

服务器的 UUID,表示其是否参与了 状态检查条目 的成功复制。

服务器名称

字符串

服务器的友好名称,如果未设置名称则为其 UUID。

地址

字符串

服务器 Bolt 端口的地址。

复制成功

布尔值

指示运行该存储过程的服务器是否可以复制事务。

成员状态

字符串

每个主成员的状态。

识别出的领导者

字符串

每个主成员识别到的领导者服务器 ID。

识别出的领导者任期

整数

每个主成员识别到的领导者的任期。如果成员报告不同的领导者,应信任任期最高的那一个。

请求者

布尔值

服务器是否为请求者。

错误

字符串

如果存在,则包含任何错误消息。一个错误示例是请求的数据库中有一个或多个在请求者上不存在。

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  |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
© . All rights reserved.