Neo4j 支持在同一 DBMS 中管理多个数据库。这些数据库的元数据(包括相关的安全模型)保存在一个称为数据库的特殊数据库中system。所有多数据库管理命令都必须针对数据库运行。当通过 Bolt 连接到 DBMS 时,system这些管理命令会自动路由到数据库。system

滚动升级期间不应使用管理命令。有关更多信息,请参阅升级和迁移指南 → 升级集群

创建数据库

您可以使用 Cypher 命令创建数据库CREATE DATABASE

数据库名称需遵守数据库名称部分中指定的规则。不建议在数据库名称中使用点 ( .)。这是因为很难确定点是数据库名称的一部分还是复合数据库中数据库别名的分隔符。

在 Neo4j 5.22 之前的版本中,所有新数据库的默认存储格式为aligned。从 Neo4j 5.22 开始,block只要未db.format指定设置,所有新创建的数据库的默认格式都是 。
如果要更改它,您可以在neo4j.confdb.format文件中为配置设置一个新值。 或者,您可以使用命令设置新数据库的存储格式。但是,如果存储以或为种子,或者如果命令用于挂载磁盘上已经存在的预先存在的存储文件,它们将使用其当前存储格式而不进行任何更改。
CREATE DATABASE databasename OPTIONS {storeFormat: 'the-new-format'}seedURIexistingDataSeedInstance

有关 Neo4j 中可用的数据库存储格式的更多详细信息,请参阅存储格式。

句法

命令句法

CREATE DATABASE

CREATE DATABASE name [IF NOT EXISTS]
[TOPOLOGY n PRIMAR{Y|IES} [m SECONDAR{Y|IES}]]
[OPTIONS "{" option: value[, ...] "}"]
[WAIT [n [SEC[OND[S]]]]|NOWAIT]
CREATE OR REPLACE DATABASE name
[TOPOLOGY n PRIMAR{Y|IES} [m SECONDAR{Y|IES}]]
[OPTIONS "{" option: value[, ...] "}"]
[WAIT [n [SEC[OND[S]]]]|NOWAIT]

选项

CREATE DATABASE命令可以有一个选项图,例如OPTIONS {key: 'value'}

钥匙价值描述

existingData

use

控制系统在创建数据库时如何处理磁盘上的现有数据。目前,仅支持 和existingDataSeedInstanceseedURI并且必须设置为use,这表示应将现有数据文件用于新数据库。

existingDataSeedInstance

集群服务器ID

定义哪个服务器用于为创建的数据库播种数据。serverId运行后可以在列中找到服务器 ID SHOW SERVERS

seedURI

现有数据库的备份或转储的 URI。

从外部源定义一个相同的种子,该种子将用于为所有服务器提供种子。

seedConfig

以逗号分隔的配置值列表。

name=value定义某些种子提供商可能需要的以逗号分隔的对指定的附加配置。

seedCredentials

证书

定义需要传递到某些种子提供商的凭证。

txLogEnrichment

FULLDIFF|NONE

定义出于变更数据捕获 (CDC) 目的而应用于事务日志的丰富级别。

有关丰富模式的详细信息,请参阅变更数据捕获手册 → 在自管理实例上启用 CDC → 设置丰富模式

storeFormat

alignedstandardhigh_limit|block

如果创建的数据库是新的,则定义存储格式。如果存储以seedURI或为种子existingDataSeedInstance,或者如果命令用于挂载磁盘上已经存在的预先存在的存储文件,则它们将使用其当前存储格式而不做任何更改。

existingDataexistingDataSeedInstanceseedURIseedConfig和选项seedCredentials不能与此命令的部分组合使用OR REPLACE。有关种子选项的更多详细信息,请参阅种子集群

例子

创建数据库

要创建名为 的数据库customers,请使用命令CREATE DATABASE后跟该数据库的名称。

CREATE DATABASE customers

当您创建数据库时,它会显示在命令提供的列表中SHOW DATABASES

SHOW DATABASES YIELD name
结果
+-------------+
| 名称 |
+-------------+
| “顾客” |
| “电影” |
| “neo4j”|
| “系统” |
+-------------+
使用以下方式创建数据库slow,并WAIT

子句WAIT允许您指定命令必须完成并返回的时间限制。

CREATE DATABASE slow WAIT 5 SECONDS
结果
+------------------------------------------------ ------+
| 地址 | 状态 | 消息 | 成功 |
+------------------------------------------------ ------+
| “localhost:7687” | “CaughtUp” | “被抓住了” | TRUE |
+------------------------------------------------ ------+

success列提供了命令是否成功的汇总状态。因此,每一行都具有相同的值,该值取决于命令是否成功完成且没有超时。

IF NOT EXISTS使用或创建数据库OR REPLACE

CREATE DATABASE命令是可选的幂等命令,如果数据库已存在,则默认行为会失败并出现错误。有两种方法可以避免此行为。

首先,附加IF NOT EXISTS到命令可确保不会返回任何错误,并且如果数据库已存在则不会发生任何事情。

CREATE DATABASE customers IF NOT EXISTS

其次,添加OR REPLACE到命令中会删除任何现有数据库并创建一个新的数据库。

CREATE OR REPLACE DATABASE customers

这相当于跑步DROP DATABASE customers IF EXISTS然后CREATE DATABASE customers

IF NOT EXISTS和的行为OR REPLACE适用于标准数据库和复合数据库(例如,复合数据库可以替换标准数据库或另一个复合数据库)。

IF NOT EXISTS这些命令的和部分OR REPLACE不能一起使用。

启动数据库

可以使用命令启动数据库START DATABASE

标准数据库和复合数据库都可以使用此命令启动。

句法

命令句法

START DATABASE

START DATABASE name [WAIT [n [SEC[OND[S]]]]|NOWAIT]

例子

启动数据库

启动数据库是一个简单的操作。假设您有一个名为 的数据库customers。要启动它,请使用以下命令:

START DATABASE customers

您可以通过运行命令来查看已启动数据库的状态SHOW DATABASE name

SHOW DATABASE customers YIELD name, requestedStatus, currentStatus
结果
+------------------------------------------------------------------------+
| 名称 | 请求状态 | 当前状态 |
+------------------------------------------------------------------------+
| “客户” | “在线” | “在线” |
+------------------------------------------------------------------------+
使用以下命令启动数据库WAIT

您可以使用子句启动数据库,WAIT以确保命令等待指定的时间直到数据库启动。

START DATABASE customers WAIT 5 SECONDS

停止数据库

可以使用命令停止数据库STOP DATABASE

句法

命令句法

STOP DATABASE

STOP DATABASE name [WAIT [n [SEC[OND[S]]]]|NOWAIT]

例子

停止数据库

要停止数据库,请使用以下命令:

STOP DATABASE customers

使用此命令可以停止标准数据库和复合数据库。

可以使用以下命令查看已停止数据库的状态SHOW DATABASE name

但其会提示错误:

Unsupported administration command: STOP DATABASE neo4j
此时,应该允许命令
neo4j stop命令来停止(非cyber控制台中)
SHOW DATABASE customers YIELD name, requestedStatus, currentStatus
结果
+------------------------------------------------------------------------+
| 名称 | 请求状态 | 当前状态 |
+------------------------------------------------------------------------+
| “客户” | “离线” | “离线” |
+------------------------------------------------------------------------+
使用以下命令停止数据库WAIT

您还可以使用子句来停止数据库WAIT,该子句允许您指定系统等待数据库停止的时间。

STOP DATABASE customers WAIT 10 SECONDS

使用该命令停止的数据库STOP将完全关闭,可以通过该START命令重新启动。在集群中,只要数据库处于关闭状态,就不能将其视为可供集群的其他成员使用。无法对关闭的数据库进行在线备份,并且在灾难恢复期间需要特别考虑它们,因为它们在关闭时没有正在运行的 Raft 机器。与停止的数据库不同,删除的数据库将被完全删除,并且根本不打算再次使用。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐