维护模式

Neo4j 支持两种维护模式:在线和离线,您可以利用它们执行不同的维护任务。

在线维护

在线维护不需要停止 neo4j 进程。它通过 kubectl exec 命令来执行。

直接运行任务

kubectl exec <release-name>-0 -- neo4j-admin database info --from-path=/var/lib/neo4j/data/databases --expand-commands

所有 neo4j-admin 命令都需要 --expand-commands 标志才能在 Neo4j 容器中运行。这是因为 Neo4j Helm Chart 使用命令扩展 (command expansion) 来定义 Neo4j 配置,以便在运行时动态解析某些配置参数。

运行一系列命令,请使用交互式 shell

kubectl exec -it <release-name>-0 -- bash

使用 kubectl exec 执行的进程会占用 Neo4j 容器的内存配额。因此,运行占用大量内存的任务,或在内存极其受限的配置下运行 Neo4j,可能会导致 Neo4j 容器被底层操作系统终止。

离线维护

您可以使用 Neo4j 离线维护模式来执行需要 Neo4j 处于离线状态的维护任务。在此模式下,neo4j 进程不会运行。虽然 Neo4j Pod 会运行,但它永远不会达到 READY 状态。

将 Neo4j 实例置于离线模式

  1. 要将 Neo4j 实例置于离线维护模式,请设置 offlineMaintenanceModeEnabled: true 并升级 Helm Release。

    • 您可以通过 values.yaml 文件执行此操作

      1. 打开您的 values.yaml 文件,并将 offlineMaintenanceModeEnabled: true 添加到 neo4j 对象中

        neo4j:
         offlineMaintenanceModeEnabled: true
      2. 运行 helm upgrade 以应用更改

        helm upgrade <release-name> neo4j/neo4j -f values.yaml
    • 或者,您也可以在 helm upgrade 命令中将 neo4j.offlineMaintenanceModeEnabled 设置为 true

      helm upgrade  neo4j/neo4j --version=2026.03.1 --reuse-values --set neo4j.offlineMaintenanceModeEnabled=true
  2. 轮询 kubectl get pods,直到 Pod 重启(STATUS=Running)。

    kubectl get pod <release-name>-0
  3. 通过交互式 shell 连接到 Pod

    kubectl exec -it "<release-name>-0" -- bash
  4. 查看正在运行的 Java 进程

    jps
    19 Jps

    结果显示除了 jps 本身之外,没有其他正在运行的 Java 进程。

在离线模式下运行任务

离线维护任务通过 kubectl exec 命令执行。

  • 直接运行任务

    kubectl exec <release-name>-0 -- neo4j-admin database info --from-path=/var/lib/neo4j/data/databases --expand-commands
  • 运行一系列命令,请使用交互式 shell

    kubectl exec -it <release-name>-0 -- bash
  • 对于长时间运行的命令,请使用 shell 并通过 nohup 运行任务,以便在 kubectl exec 连接断开时它们仍能继续运行

    kubectl exec -it <release-name>-0 -- bash
      $ nohup neo4j-admin database check neo4j --expand-commands &>job.out </dev/null &
      $ tail -f job.out

将 Neo4j DBMS 置于在线模式

当您完成维护任务后,请将 Neo4j 实例恢复到正常运行状态

  • 您可以通过 values.yaml 文件执行此操作

    1. 打开您的 values.yaml 文件,并将 offlineMaintenanceModeEnabled: false 添加到 neo4j 对象中

      neo4j:
       offlineMaintenanceModeEnabled: false
    2. 运行 helm upgrade 以应用更改

      helm upgrade <release-name> neo4j/neo4j -f values.yaml
  • 或者,您也可以运行将该标志设置为 falsehelm upgrade 命令

    helm upgrade  neo4j/neo4j-standalone --version=2026.03.1 --reuse-values --set neo4j.offlineMaintenanceModeEnabled=false