维护模式

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 使用命令扩展来定义 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=2025.05.0 --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
  • 或者,您可以在 helm upgrade 命令中将该标志设置为 false

    helm upgrade  neo4j/neo4j-standalone --version=2025.05.0 --reuse-values --set neo4j.offlineMaintenanceModeEnabled=false
© . All rights reserved.