监控数据库

除了前面部分中描述的系统范围的指标和日志外,要监控集群中托管的各个数据库的状态,请使用 SHOW DATABASES 命令。

列出数据库

语法

SHOW DATABASES

返回值

名称 类型 描述

name

字符串

数据库的可读名称。

type

字符串

standardsystemcomposite

aliases

List<String>

数据库可能具有的任何别名的名称。

access

字符串

数据库访问模式,read-writeread-only

address

字符串

托管数据库的服务器的 bolt 地址。

role

字符串

服务器为此数据库执行的集群角色。

writer

布尔值

接受写入的数据库节点为 true。此节点要么是集群中此数据库的领导者或者这是独立服务器。

requestedStatus

字符串

操作员请求数据库处于的状态。

currentStatus

字符串

数据库在此服务器上的实际状态。

statusMessage

字符串

解释数据库当前状态的消息,如果存在任何错误,则可能是 Neo4j 服务器在将数据库转换到 requestedStatus 时遇到的错误。

default

布尔值

此数据库是否为此 DBMS 的默认数据库。

home

布尔值

此数据库是否为此用户的 home 数据库。

constituents

List<String>

构成此复合数据库的别名列表,对于非复合数据库为 null。

请注意,对于失败的数据库,currentStatusrequestedStatus 不同。这可能意味着错误。例如

  • 由于执行恢复,数据库可能需要一段时间才能从 offline 转换到 online

  • 在正常运行期间,数据库的currentStatus 可能会短暂地与它的requestedStatus不同,这是由于必要的自动过程造成的,例如一个服务器从另一个服务器复制存储文件。

currentStatus 的可能值包括 onlineofflinestartingstoppingstore copyinginitialdeallocatingdirtyquarantinedunknownrequestedStatus 只能是 onlineoffline。有关更多信息,请参阅数据库状态

此外,请注意,SHOW DATABASES 命令也会返回托管在脱机服务器上的数据库。对于此类数据库,address 列显示 NULLcurrentStatus 列显示 unknown,而 statusMessage 显示 Server is unavailable

示例 1. 列出独立 Neo4j 中的数据库

当对独立服务器执行 SHOW DATABASES 时,预期会输出以下内容

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| name    | type      | aliases | access     | address        | role      | writer | requestedStatus | currentStatus | statusMessage | default | home | constituents |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|"neo4j"  |"standard" |[]       |"read-write"|"localhost:7687"| "primary" | true   | "online"        | "online"      | ""            |true     |true  |[]            |
|"system" |"system"   |[]       |"read-write"|"localhost:7687"| "primary" | true   | "online"        | "online"      | ""            |false    |false |[]            |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+

请注意,rolewriteraddress 列主要用于区分给定数据库在部署在集群中的多个服务器上的状态。在具有单个服务器的独立部署中,每个数据库的address 字段应该相同,role 字段应该始终为“primary”,而 writer 字段应该为 true。

示例 2. 列出集群中的数据库

当对集群运行 SHOW DATABASES 时,预期输出类似于以下内容

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| name    | type      | aliases | access     | address        | role      | writer | requestedStatus | currentStatus | statusMessage | default | home | constituents |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|"neo4j"  |"standard" |[]       |"read-write"|"localhost:7681"|"primary"  |false   |"online"         |"online"       |""             |true     |true  |[]            |
|"neo4j"  |"standard" |[]       |"read-write"|"localhost:7682"|"primary"  |false   |"online"         |"online"       |""             |true     |true  |[]            |
|"neo4j"  |"standard" |[]       |"read-write"|"localhost:7683"|"primary"  |true    |"online"         |"online"       |""             |true     |true  |[]            |
|"neo4j"  |"standard" |[]       |"read-write"|"localhost:7684"|"secondary"|false   |"online"         |"online"       |""             |true     |true  |[]            |
|"system" |"system"   |[]       |"read-write"|"localhost:7681"|"primary"  |true    |"online"         |"online"       |""             |false    |false |[]            |
|"system" |"system"   |[]       |"read-write"|"localhost:7682"|"primary"  |false   |"online"         |"online"       |""             |false    |false |[]            |
|"system" |"system"   |[]       |"read-write"|"localhost:7683"|"primary"  |false   |"online"         |"online"       |""             |false    |false |[]            |
|"system" |"system"   |[]       |"read-write"|"localhost:7684"|"secondary"|false   |"online"         |"online"       |""             |false    |false |[]            |
|"foo"    |"standard" |[]       |"read-write"|"localhost:7681"|"primary"  |true    |"online"         |"online"       |""             |false    |false |[]            |
|"foo"    |"standard" |[]       |"read-write"|"localhost:7684"|"secondary"|false   |"online"         |"online"       |""             |false    |false |[]            |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+

请注意,SHOW DATABASES **不会**为每个数据库返回 1 行。相反,它会为集群中托管它的每个服务器上的每个数据库返回 1 行。因此,如果集群有四个服务器,每个服务器托管 3 个数据库,每个数据库有 3 个主节点和一个辅助节点,则会显示 12 行。此外,这意味着如果托管数据库的所有服务器都处于脱机状态,则该数据库将不会出现在 SHOW DATABASES 的结果中。

可能的角色包括“primary”、“secondary”和“unknown”。

请注意,不同的服务器对于每个数据库可能具有不同的角色,并且同一服务器对于不同的数据库也可能具有不同的角色。

如果数据库在特定服务器上脱机,无论是由于操作员停止了它还是发生了错误,其集群role都将为“unknown”。

列出单个数据库

SHOW DATABASES 返回的行数可能非常大,尤其是在集群中运行时。您可以通过使用命令 SHOW DATABASE foo 根据数据库名称(例如“foo”)过滤返回的行。

语法

SHOW DATABASE databaseName

参数

名称 类型 描述

databaseName

字符串

要报告其状态的数据库的名称。

返回值

名称 类型 描述

name

字符串

数据库的可读名称。

type

字符串

standardsystemcomposite

aliases

List<String>

数据库可能具有的任何别名的名称。

access

字符串

数据库访问模式,read-writeread-only

address

字符串

托管数据库的服务器的 bolt 地址。

role

字符串

服务器为此数据库执行的集群角色。

writer

布尔值

接受写入的数据库节点为 true。此节点要么是集群中此数据库的领导者或者这是独立服务器。

requestedStatus

字符串

操作员请求数据库处于的状态。

currentStatus

字符串

数据库在此服务器上的实际状态。

statusMessage

字符串

解释数据库当前状态的消息,如果存在任何错误,则可能是 Neo4j 服务器在将数据库转换到 requestedStatus 时遇到的错误。

default

布尔值

此数据库是否为此 DBMS 的默认数据库。

home

布尔值

此数据库是否为此用户的 home 数据库。

constituents

List<String>

构成此复合数据库的别名列表,对于非复合数据库为 null。

示例 3. 列出数据库 foo 的状态

当在集群中运行 SHOW DATABASE foo 时,预期输出类似于以下内容

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|  name    |  type      | aliases   |  access      |  address         |  role     |  writer  |  requestedStatus  |  currentStatus  |  statusMessage                                    |  default  |  home  |  constituents |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| "foo"    | "standard" | []        | "read-write" | "localhost:7681" | "primary" | false    | "online"          | "online"        | ""                                                | true      | true   | []            |
| "foo"    | "standard" | []        | "read-write" | "localhost:7682" | "unknown" | false    | "online"          | "dirty"         | "An error occurred! Unable to start database ..." | true      | true   | []            |
| "foo"    | "standard" | []        | "read-write" | "localhost:7683" | "primary" | true     | "online"          | "online"        | ""                                                | true      | true   | []            |
| "foo"    | "standard" | []        | "read-write" | "localhost:7684" | "unknown" | false    | "online"          | "dirty"         | "An error occurred! Unable to start database ..." | true      | true   | []            |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

列出有关数据库的更多详细信息

如果需要有关数据库的更多详细信息,可以将 SHOW DATABASES 附加 YIELD *

语法

SHOW DATABASES YIELD *

返回值

名称 类型 描述 示例值

name

字符串

数据库的可读名称。

"foo"

type

字符串

standardsystemcomposite

"standard"

aliases

List<String>

数据库的别名。

"[]"

access

字符串

read-writeread-only

"read-write"

databaseID

字符串

数据库的 ID。

"CC573A1DF4…​."

serverID

字符串

托管此数据库的服务器的友好名称或 UUID。

"server3"

address

字符串

托管数据库的服务器的 Bolt 地址。

"localhost:7683"

role

字符串

服务器为此数据库执行的集群角色。

"primary"

writer

布尔值

此服务器是否接受写入。

true

requestedStatus

字符串

操作员请求数据库处于的状态。

"online"

currentStatus

字符串

数据库在此服务器上的实际状态。

"online"

statusMessage

字符串

服务器在将数据库转换到 requestedStatus 时遇到的错误(如果有)。

""

default

布尔值

此数据库是否为此 DBMS 的默认数据库。

false

home

布尔值

此数据库是否为用户的 home 数据库。

true

currentPrimariesCount

整数

当前报告为正在运行的此数据库的主节点数。它与 role=primaryname=此数据库的行数相同

3

currentSecondariesCount

整数

当前报告为正在运行的此数据库的辅助节点数。它与 role=secondaryname=此数据库的行数相同

0

requestedPrimariesCount

整数

此数据库请求的主节点数。如果 DBMS 当前正在减少数据库副本的数量,则可能低于当前值;如果当前正在增加副本数量,则可能高于当前值。

3

requestedSecondariesCount

整数

此数据库请求的辅助节点数。如果 DBMS 当前正在减少数据库副本的数量,则可能低于当前值;如果当前正在增加副本数量,则可能高于当前值。

1

creationTime

日期时间

此数据库创建的时间戳。

"2022-09-09T12:58:21.923000000Z"

lastStartTime

日期时间

此数据库最近一次启动的时间戳。除非数据库在某个时间点被停止,否则它与创建时间相同。

"2022-09-09T12:58:21.923000000Z"

lastStopTime

日期时间

此数据库最近一次停止的时间戳(STOP DATABASE

null

store

字符串

存储格式。

"record-aligned-1.1"

lastCommittedTxn

整数

此数据库服务器上最新的已提交事务编号。当更改尚未传播时,成员之间可能会有所不同。

2342

replicationLag

整数

此服务器与此数据库的写入器之间的事务编号差异。如果此值持续很高,则可能存在问题。

1

constituents

List<String>

构成此复合数据库的别名列表,对于非复合数据库为 null。

"[]"

currentPrimariesCountrequestedPrimariesCount 以及 currentSecondariesCountrequestedSecondariesCount 的值偏差可能不是问题的原因。在集群分配、重新分配和/或释放数据库时,这些值可能会发生变化。