Skip to content

Neo4j 各版本参数差异

主要版本参数变更

Neo4j 5.x vs Neo4j 4.x

新增参数

Neo4j 5.x 版本引入了多个新的配置参数,主要集中在内存管理、路由服务、SSL 配置和日志管理等方面。以下是一些关键的新增参数:

参数名称描述版本
dbms.memory.transaction.global_max_size全局事务内存最大限制,用于控制所有并发事务的总内存使用量5.0+
dbms.memory.transaction.per_transaction_max_size单个事务内存最大限制,防止单个事务消耗过多内存5.0+
dbms.routing.enabled启用路由服务,用于支持客户端连接的负载均衡和故障转移5.0+
dbms.routing.default_router默认路由类型,指定路由服务的默认行为5.0+
dbms.routing.policy路由策略配置,用于自定义路由规则5.0+
dbms.ssl.policy.bolt.enabled启用 Bolt 协议 SSL,用于加密 Bolt 客户端连接5.0+
dbms.ssl.policy.http.enabled启用 HTTP 协议 SSL,用于加密 HTTP 连接5.0+
dbms.ssl.policy.https.enabled启用 HTTPS 协议 SSL,用于加密 HTTPS 连接5.0+
dbms.logs.query.min_duration查询日志最小持续时间,只有超过此时间的查询才会被记录5.0+
dbms.logs.query.log_rotation.size查询日志轮转大小,当日志文件达到此大小时会自动轮转5.0+

废弃参数

Neo4j 5.x 版本废弃了一些旧版参数,主要是因为配置体系的重构和功能的整合。以下是一些重要的废弃参数及其替代方案:

参数名称替代方案版本
dbms.connector.bolt.enabled使用 dbms.ssl.policy.bolt.enabled5.0+
dbms.connector.http.enabled使用 dbms.ssl.policy.http.enabled5.0+
dbms.connector.https.enabled使用 dbms.ssl.policy.https.enabled5.0+
dbms.security.auth_enabled使用 dbms.security.authentication_enabled5.0+
dbms.security.authorization_enabled使用 dbms.security.authorization_enabled5.0+
dbms.memory.pagecache.size自动计算或使用 dbms.memory.heap.max_size5.0+
dbms.tx_log.rotation.size使用 dbms.tx_log.rotation.retention_policy5.0+
dbms.tx_log.rotation.retention_policy使用 dbms.tx_log.rotation.retention_policy5.0+

参数行为变更

Neo4j 5.x 版本对一些现有参数的行为进行了调整,主要是为了提高系统的自动化管理和性能优化能力。以下是一些重要的参数行为变更:

参数名称变更前行为变更后行为版本
dbms.memory.heap.initial_size默认值为 512MB,需要手动配置默认值为自动计算,根据系统可用内存动态调整5.0+
dbms.memory.heap.max_size默认值为 512MB,需要手动配置默认值为自动计算,根据系统可用内存动态调整5.0+
dbms.tx_state.memory_allocation默认值为 "ON_HEAP",事务状态存储在堆内存中默认值为 "OFF_HEAP",事务状态存储在堆外内存中,减少 GC 压力5.0+
dbms.jvm.additional直接添加 JVM 参数,无需前缀需要使用 -D 前缀,例如:dbms.jvm.additional=-Dsome.property=value5.0+

Neo4j 4.x vs Neo4j 3.x

新增参数

参数名称描述版本
dbms.cluster.discovery.endpoints集群发现端点4.0+
dbms.cluster.initial_discovery_members初始集群发现成员4.0+
dbms.cluster.raft.timeoutRaft 超时时间4.0+
dbms.cluster.raft.election_timeoutRaft 选举超时时间4.0+
dbms.cluster.raft.heartbeat_intervalRaft 心跳间隔4.0+
dbms.routing.enabled启用路由服务4.0+
dbms.routing.default_router默认路由类型4.0+
dbms.security.auth_enabled启用认证4.0+
dbms.security.authorization_enabled启用授权4.0+
dbms.security.procedures.unrestricted无限制存储过程4.0+

废弃参数

参数名称替代方案版本
dbms.mode使用 dbms.cluster.role4.0+
ha.server_id使用 causal_clustering.server_id4.0+
ha.initial_hosts使用 causal_clustering.initial_discovery_members4.0+
ha.cluster_name使用 causal_clustering.cluster_name4.0+
ha.pull_interval使用 causal_clustering.pull_interval4.0+
dbms.security.auth_enabled使用 dbms.security.authentication_enabled4.0+
dbms.security.authorization_enabled使用 dbms.security.authorization_enabled4.0+

参数行为变更

参数名称变更前行为变更后行为版本
dbms.memory.pagecache.size默认值为 512MB默认值为自动计算4.0+
dbms.tx_state.memory_allocation默认值为 "ON_HEAP"默认值为 "OFF_HEAP"4.0+
dbms.jvm.additional直接添加 JVM 参数需要使用 -D 前缀4.0+

参数分类变更

内存配置参数

参数名称3.x4.x5.x备注
dbms.memory.heap.initial_size默认值变更
dbms.memory.heap.max_size默认值变更
dbms.memory.pagecache.size5.x 中废弃
dbms.memory.transaction.global_max_size5.x 新增
dbms.memory.transaction.per_transaction_max_size5.x 新增

集群配置参数

参数名称3.x4.x5.x备注
ha.server_id4.x 中废弃
ha.initial_hosts4.x 中废弃
causal_clustering.server_id4.x 新增
causal_clustering.initial_discovery_members4.x 新增
dbms.cluster.discovery.endpoints4.x 新增
dbms.cluster.initial_discovery_members5.x 新增

安全配置参数

参数名称3.x4.x5.x备注
dbms.security.auth_enabled5.x 中废弃
dbms.security.authorization_enabled5.x 中废弃
dbms.security.authentication_enabled4.x 新增
dbms.security.authorization_enabled4.x 新增
dbms.security.procedures.unrestricted4.x 新增
dbms.ssl.policy.bolt.enabled5.x 新增

日志配置参数

参数名称3.x4.x5.x备注
dbms.logs.query.enabled行为不变
dbms.logs.query.threshold5.x 中废弃
dbms.logs.query.min_duration5.x 新增
dbms.logs.query.log_rotation.size5.x 新增
dbms.logs.debug.level行为不变

升级注意事项

从 Neo4j 4.x 升级到 5.x

  1. 内存配置调整

    • 移除 dbms.memory.pagecache.size 参数,Neo4j 5.x 会自动计算
    • 新增 dbms.memory.transaction.global_max_sizedbms.memory.transaction.per_transaction_max_size 参数
    • JVM 参数需要使用 -D 前缀
  2. SSL 配置变更

    • 移除 dbms.connector.*.enabled 参数
    • 使用 dbms.ssl.policy.*.enabled 参数替代
    • 配置 SSL 策略时需要注意新的语法格式
  3. 集群配置调整

    • 移除 causal_clustering.* 相关参数
    • 使用 dbms.cluster.* 参数替代
    • 集群发现配置有所变化
  4. 安全配置调整

    • 移除 dbms.security.auth_enableddbms.security.authorization_enabled 参数
    • 使用 dbms.security.authentication_enableddbms.security.authorization_enabled 参数替代

从 Neo4j 3.x 升级到 4.x

  1. 集群架构变更

    • 从 HA Cluster 迁移到 Causal Clustering
    • 移除 ha.* 相关参数
    • 使用 causal_clustering.* 参数替代
  2. 安全配置增强

    • 新增 dbms.security.procedures.unrestricted 参数
    • 认证和授权配置更加精细
    • 支持基于角色的访问控制
  3. 事务配置变更

    • dbms.tx_state.memory_allocation 默认值从 "ON_HEAP" 变为 "OFF_HEAP"
    • 事务日志配置参数有所变化

参数迁移最佳实践

1. 备份现有配置

在升级前,备份现有的 neo4j.conf 文件,以便在出现问题时可以回滚。

bash
cp /etc/neo4j/neo4j.conf /etc/neo4j/neo4j.conf.backup.$(date +%Y%m%d)

2. 使用配置比较工具

使用配置比较工具(如 diff)比较不同版本的默认配置文件,了解参数差异。

bash
diff neo4j-4.4.12/conf/neo4j.conf neo4j-5.15.0/conf/neo4j.conf > neo4j-4-to-5-diff.txt

3. 逐步迁移配置

不要直接复制旧配置文件到新版本,而是逐步迁移:

  1. 从新版本的默认配置文件开始
  2. 手动添加旧配置中仍然有效的参数
  3. 替换已废弃的参数为新的替代参数
  4. 添加新版本的新增参数

4. 测试配置

在测试环境中验证新配置的正确性:

  1. 启动数据库,检查日志中是否有配置错误
  2. 运行功能测试,确保数据库正常工作
  3. 运行性能测试,确保性能符合预期

5. 监控参数效果

升级后,监控数据库性能和资源使用情况,根据实际情况调整参数。

常见问题(FAQ)

Q1: 如何查看特定版本的默认配置文件?

A1: 可以从 Neo4j 安装包中获取默认配置文件,或者从 GitHub 仓库中查看:

bash
# 从安装包中获取
 tar -xzf neo4j-5.15.0-unix.tar.gz neo4j-5.15.0/conf/neo4j.conf

# 从 GitHub 仓库查看
git clone https://github.com/neo4j/neo4j.git
cd neo4j
 git checkout 5.15.0
cat community/server/src/main/resources/neo4j-defaults.conf

Q2: 升级后,旧的配置参数会被自动处理吗?

A2: 部分废弃的参数会被 Neo4j 自动转换为新参数,但建议手动迁移配置,确保所有参数都使用最新的语法和命名。

Q3: 如何确定某个参数在特定版本中是否可用?

A3: 可以通过以下方式确定:

  • 查看该版本的官方文档
  • 查看该版本的默认配置文件
  • 在数据库中使用 CALL dbms.listConfig() 命令查看可用参数

Q4: 升级后性能下降,可能是哪些参数导致的?

A4: 可能的原因包括:

  • 内存配置不当,特别是堆内存和页缓存的分配
  • 事务配置变更,如 dbms.tx_state.memory_allocation 默认值的变化
  • 并行度设置不合理
  • 日志级别配置过高

Q5: 如何处理已废弃的参数?

A5: 处理已废弃参数的方法:

  1. 查找该参数的替代参数
  2. 使用新的替代参数替换旧参数
  3. 测试新配置的正确性
  4. 从配置文件中移除旧参数

Q6: 5.x 版本中如何配置内存?

A6: Neo4j 5.x 中,内存配置简化为:

txt
# 堆内存配置
dbms.memory.heap.initial_size=4G
dbms.memory.heap.max_size=8G

# 事务内存配置
dbms.memory.transaction.global_max_size=2G
dbms.memory.transaction.per_transaction_max_size=512M

Q7: 如何迁移 SSL 配置从 4.x 到 5.x?

A7: 从 4.x 到 5.x 的 SSL 配置迁移示例:

4.x 配置:

txt
dbms.connector.bolt.enabled=true
dbms.connector.bolt.tls_level=REQUIRED
dbms.connector.bolt.listen_address=0.0.0.0:7687
dbms.ssl.policy.default.base_directory=certificates/default
dbms.ssl.policy.default.private_key=private.key
dbms.ssl.policy.default.public_certificate=public.crt
dbms.ssl.policy.default.trusted_dir=trusted
dbms.ssl.policy.default.revoked_dir=revoked
dbms.ssl.policy.default.client_auth=NONE

5.x 配置:

txt
dbms.ssl.policy.bolt.enabled=true
dbms.ssl.policy.bolt.tls_level=REQUIRED
dbms.ssl.policy.bolt.base_directory=certificates/bolt
dbms.ssl.policy.bolt.private_key=private.key
dbms.ssl.policy.bolt.public_certificate=public.crt
dbms.ssl.policy.bolt.trusted_dir=trusted
dbms.ssl.policy.bolt.revoked_dir=revoked
dbms.ssl.policy.bolt.client_auth=NONE
dbms.connector.bolt.listen_address=0.0.0.0:7687

Q8: 如何检查配置文件中的错误?

A8: 可以使用 Neo4j 提供的工具检查配置文件:

bash
neo4j-admin server validate-config --config-path=/etc/neo4j/neo4j.conf

Q9: 升级后,某些参数没有效果怎么办?

A9: 可能的原因:

  1. 该参数在新版本中已被废弃
  2. 参数名称或语法已变更
  3. 参数值超出了新版本的允许范围
  4. 参数被其他参数覆盖

建议查看新版本的文档,确认参数的正确用法。

Q10: 如何回滚配置变更?

A10: 回滚配置变更的方法:

  1. 停止数据库
  2. 恢复之前备份的配置文件
  3. 启动数据库,检查日志中是否有错误
  4. 验证数据库功能是否正常