创建、启动和停止数据库
Neo4j 支持在同一个 DBMS 中管理多个数据库。这些数据库的元数据,包括相关的安全模型,都保存在一个名为 system
的特殊数据库中。所有多数据库管理命令都必须针对 system
数据库运行。当通过 Bolt 连接到 DBMS 时,这些管理命令会自动路由到 system
数据库。
在滚动升级期间不应使用管理命令。有关更多信息,请参阅 升级和迁移指南 → 升级集群。 |
创建数据库
您可以使用 Cypher 命令 CREATE DATABASE
创建数据库。
数据库名称受 数据库名称 部分中指定的规则约束。不建议在数据库名称中使用点号 ( |
block
是所有新创建数据库的默认格式,前提是它们没有指定 db.format
设置。
如果您想更改它,可以在 neo4j.conf 文件中为 db.format
配置设置新值。
或者,您可以使用 CREATE DATABASE databasename OPTIONS {storeFormat: 'the-new-format'}
命令设置新数据库的存储格式。但是,如果存储通过 seedURI
、existingDataSeedServer
或 existingDataSeedInstance
进行种子设定,或者该命令用于挂载磁盘上已存在的预先存在的存储文件,则它们将使用其当前的存储格式,而无需进行任何更改。
有关 Neo4j 中可用数据库存储格式的更多详细信息,请参阅 存储格式。
语法
命令 | 语法 |
---|---|
|
|
选项
CREATE DATABASE
命令可以带有一组选项映射,例如 OPTIONS {key: 'value'}
。
键 | 值 | 描述 |
---|---|---|
|
|
控制系统在创建数据库时如何处理磁盘上的现有数据。目前,这仅支持 |
|
集群服务器 ID |
定义用于为所创建数据库播种数据的服务器。运行 |
|
现有数据库的备份或转储的 URI。 |
定义一个来自外部源的相同种子,该种子将用于为所有服务器播种。有关更多信息,请参阅 从 URI 播种。 |
|
逗号分隔的配置值列表。 |
|
|
凭据 |
定义需要传递给某些种子提供程序的凭据。建议使用 |
|
|
定义为变更数据捕获 (CDC) 目的应用于事务日志的丰富级别。 有关丰富模式的详细信息,请参阅 变更数据捕获手册 → 在自管理实例上启用 CDC → 设置丰富模式。 |
|
|
定义新创建数据库的存储格式。 如果存储通过 |
从 Neo4j 2025.01 开始,您可以将
|
示例
创建数据库
要创建名为 customers
的数据库,请使用命令 CREATE DATABASE
,后跟此数据库的名称。
CREATE DATABASE customers
创建数据库后,它会显示在 SHOW DATABASES
命令提供的列表中。
SHOW DATABASES YIELD name
+-------------+ | name | +-------------+ | "customers" | | "movies" | | "neo4j" | | "system" | +-------------+
使用 WAIT
创建数据库
子句 WAIT
允许您指定命令必须完成并返回的时间限制。
CREATE DATABASE slow WAIT 5 SECONDS
+-------------------------------------------------------+ | address | state | message | success | +-------------------------------------------------------+ | "localhost:7687" | "CaughtUp" | "caught up" | 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
。
请记住,使用 CREATE OR REPLACE DATABASE
还会删除索引和约束。为了保留它们,请在 CREATE OR REPLACE DATABASE
之前运行以下 Cypher 命令并保存其输出。
SHOW CONSTRAINTS YIELD createStatement AS statement
SHOW INDEXES YIELD createStatement, owningConstraint
WHERE owningConstraint IS NULL
RETURN createStatement AS statement
IF NOT EXISTS
和 OR REPLACE
的行为适用于标准数据库和复合数据库(例如,复合数据库可以替换标准数据库或另一个复合数据库)。
这些命令的 |
启动数据库
数据库可以使用命令 START DATABASE
启动。
标准数据库和复合数据库都可以使用此命令启动。 |
示例
启动数据库
启动数据库是一个简单的操作。假设您有一个名为 customers
的数据库。要启动它,请使用以下命令:
START DATABASE customers
您可以通过运行 SHOW DATABASE name
命令查看已启动数据库的状态。
SHOW DATABASE customers YIELD name, requestedStatus, currentStatus
+-----------------------------------------------+ | name | requestedStatus | currentStatus | +-----------------------------------------------+ | "customers" | "online" | "online" | +-----------------------------------------------+
停止数据库
数据库可以使用命令 STOP DATABASE
停止。
示例
停止数据库
要停止数据库,请使用以下命令:
STOP DATABASE customers
标准数据库和复合数据库都可以使用此命令停止。 |
可以使用命令 SHOW DATABASE name
查看已停止数据库的状态。
SHOW DATABASE customers YIELD name, requestedStatus, currentStatus
+-----------------------------------------------+ | name | requestedStatus | currentStatus | +-----------------------------------------------+ | "customers" | "offline" | "offline" | +-----------------------------------------------+
使用 WAIT
停止数据库
您也可以使用 WAIT
子句停止数据库,该子句允许您指定系统应等待数据库停止的时间量。
STOP DATABASE customers WAIT 10 SECONDS
使用 |