如何在Kubernetes中停止 neo4j 社区版?

bnlyeluc  于 2022-10-01  发布在  Kubernetes
关注(0)|答案(3)|浏览(199)

我已经把 neo4j 社区版(v3.2.2)放到了Kubernetes中。但是社区版不支持热备份,所以我不得不关闭它来备份/恢复数据。

我试过:

kubectl exec neo4j-0 /var/lib/neo4j/bin/neo4j stop

但它表明:

Neo4j not running

还尝试了:

kubectl exec -it neo4j-0 bash
/var/lib/neo4j/bin/neo4j stop

但还是挡不住集装箱里的 neo4j

Neo4j not running

有没有人有解决办法?

ssm49v7z

ssm49v7z1#

容器内的主进程不能停止,否则会被认为是死的,Kubernetes会终止这个示例,并调度一个新的健康示例。

此外,Kubernetes不支持悬挂吊舱。停止/启动豆荚的成本更低。

因此,在您的情况下,我建议您在备份期间将部署缩减到零个副本

kubectl scale --replicas=0 deployment/neo4j

并在备份完成后纵向扩展至所需的复制副本

kubectl scale --replicas=1 deployment/neo4j
zte4gxcn

zte4gxcn2#

目前,offlineMaintenanceModeEnabled可用于Neo4j的 Helm 图。

Https://neo4j.com/docs/operations-manual/current/kubernetes/maintenance/#put-offline-mode

您可以通过将Helm的values.yaml中的neo4j.offlineMaintenanceModeEnabled设置为truefalse来控制离线维护模式。

iih3973s

iih3973s3#

转储/加载命令是严格意义上的离线操作,而备份/恢复命令是在线操作。

我通过创建另一个具有相同映像的pod获得了另一个解决方案,然后我将状态集副本缩减到了 neo4j 的0,并挂载了状态集所涉及的卷。

在我创建了转储文件后,我需要使用插件推送到云端将其推送到aurora neo4j,下载相同的版本,否则无法工作

这是我的YAML文件:

apiVersion: v1
kind: Pod
metadata:
name: neo4j-dumper
spec:
 containers:
   - name: neo4j-dumper
     image: neo4j:3.5.23-enterprise
     command:[
      "sh",
      "-c",
      "mkdir /dump && neo4j-admin dump --to /dump/db.dump && chown -R neo4j /dump && sleep 30000;",
    ]
  volumeMounts:
    - name: datadir
      mountPath: /data
volumes:
  - name: datadir
    persistentVolumeClaim:
      claimName: datadir-neo4j-neo4j-core-0

相关问题