监控数据库

除了前几节中描述的系统级指标和日志外,要监控集群中托管的单个数据库的状态,请使用 SHOW DATABASES 命令。

列出数据库

语法

SHOW DATABASES

返回

名称 类型 描述

名称 (name)

字符串

数据库的易读名称。

type

字符串

standard(标准)、system(系统)或 composite(组合)。

别名 (aliases)

List<String>

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

access(访问)

字符串

数据库访问模式,即 read-write(读写)或 read-only(只读)。

address

字符串

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

role(角色)

字符串

服务器在此数据库中承担的集群角色。

writer(写入者)

布尔值

对于接受写入的数据库节点,该值为 true。此节点要么是集群中该数据库的主节点(leader),要么是独立服务器。

requestedStatus(请求状态)

字符串

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

currentStatus

字符串

数据库在该服务器上实际所处的状态。

状态消息 (statusMessage)

字符串

解释数据库当前状态的消息,如果 Neo4j 服务器在将数据库转换到 requestedStatus 时遇到错误,则此处会显示错误信息。

默认

布尔值

该数据库是否为当前 DBMS 的默认数据库。

home

布尔值

该数据库是否为当前用户的宿主数据库(home database)。

constituents(组成部分)

List<String>

构成此组合(Composite)数据库的别名列表;非组合数据库此项为 null。

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

  • 由于执行恢复操作,数据库从 offline(离线)转换为 online(在线)可能需要一些时间。

  • 在正常运行期间,由于自动过程(例如一台服务器从另一台服务器复制存储文件)的必要,数据库的 currentStatus 可能会短暂地不同于其 requestedStatus

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

此外,请注意,托管在离线服务器上的数据库也会由 SHOW DATABASES 命令返回。对于此类数据库,address 列显示 NULLcurrentStatus 列显示 unknownstatusMessage 显示 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 行。因此,如果集群有 4 台服务器,每台服务器托管 3 个数据库(包含 3 个主节点和 1 个从节点),则会显示 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-write(读写)或 read-only(只读)。

address

字符串

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

role(角色)

字符串

服务器在此数据库中承担的集群角色。

writer(写入者)

布尔值

对于接受写入的数据库节点,该值为 true。此节点要么是集群中该数据库的主节点(leader),要么是独立服务器。

requestedStatus(请求状态)

字符串

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

currentStatus

字符串

数据库在该服务器上实际所处的状态。

状态消息 (statusMessage)

字符串

解释数据库当前状态的消息,如果 Neo4j 服务器在将数据库转换到 requestedStatus 时遇到错误,则此处会显示错误信息。

默认

布尔值

该数据库是否为当前 DBMS 的默认数据库。

home

布尔值

该数据库是否为当前用户的宿主数据库(home database)。

constituents(组成部分)

List<String>

构成此组合(Composite)数据库的别名列表;非组合数据库此项为 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 时遇到的错误(如有)。

""

默认

布尔值

该数据库是否为当前 DBMS 的默认数据库。

false

home

布尔值

该数据库是否为用户的宿主数据库。

true

currentPrimariesCount

整数

当前报告为正在运行的此数据库的主节点数量。它等于 role=primaryname=此数据库 的行数。

3

currentSecondariesCount

整数

当前报告为正在运行的此数据库的从节点数量。它等于 role=secondaryname=此数据库 的行数。

0

requestedPrimariesCount

整数

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

3

requestedSecondariesCount

整数

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

1

creationTime

Datetime

此数据库的创建时间戳。

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

lastStartTime

Datetime

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

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

lastStopTime

Datetime

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

null

store

字符串

存储格式。

"record-aligned-1.1"

lastCommittedTxn

整数

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

2342

replicationLag

整数

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

1

constituents(组成部分)

List<String>

构成此组合(Composite)数据库的别名列表;非组合数据库此项为 null。

"[]"

currentPrimariesCountrequestedPrimariesCount,以及 currentSecondariesCountrequestedSecondariesCount 之间的偏差不一定值得担忧。当集群正在分配、重新分配和/或取消分配数据库时,这些值可能会发生变化。