维护模式

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 图表使用命令扩展来动态解析运行时的某些配置参数。

要运行一系列命令,请使用交互式 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 版本。

    • 您可以使用values.yaml文件来做到这一点

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

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

        helm upgrade <release-name> neo4j/neo4j -f values.yaml
    • 或者,您可以将neo4j.offlineMaintenanceModeEnabled设置为true作为helm upgrade命令的一部分

      helm upgrade  neo4j/neo4j --version=5.25.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
  • 或者,您可以运行带有设置为false的标志的helm upgrade

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