创建、启动和停止数据库
Neo4j 支持在同一个 DBMS 中管理多个数据库。这些数据库的元数据(包括关联的安全模型)保存在一个名为system
的特殊数据库中。所有多数据库管理命令必须针对system
数据库运行。当通过 Bolt 连接到 DBMS 时,这些管理命令会自动路由到system
数据库。
在滚动升级期间不应使用管理命令。有关更多信息,请参见 升级和迁移指南 → 升级集群。 |
创建数据库
您可以使用 Cypher 命令CREATE DATABASE
创建数据库。
数据库名称应遵守 数据库名称 部分中指定的规则。不建议在数据库名称中使用点 ( |
在 Neo4j 5.22 之前的版本中,所有新数据库的默认存储格式为aligned
。从 Neo4j 5.22 开始,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 |
定义用于播种创建的数据库数据的服务器。服务器 ID 可以在运行 |
|
指向现有数据库的备份或转储的 URI。 |
定义来自外部来源的相同种子,该种子将用于播种所有服务器。 |
|
以逗号分隔的配置值列表。 |
定义某些种子提供程序可能需要的其他配置,这些配置由以逗号分隔的 |
|
凭据 |
定义需要传递给某些种子提供程序的凭据。 |
|
|
定义为更改数据捕获 (CDC) 目的应用于事务日志的丰富级别。 有关丰富模式的详细信息,请参见 更改数据捕获手册 → 在自管理实例上启用 CDC → 设置丰富模式。 |
|
|
定义如果创建的数据库是新的,则定义存储格式。如果存储使用 |
|
示例
创建数据库
要创建一个名为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
。
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
使用 |