我已将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
有什么办法解决吗?
答案 0 :(得分:1)
您不能在容器中停止主进程,否则它将被视为已死,并且Kubernetes会终止此Pod并安排一个新的运行良好的Pod。
此外,Kubernetes不支持挂起的Pod。停止/启动Pod更便宜。
因此,在您的情况下,建议您在备份期间将部署缩减为零个副本
kubectl scale --replicas=0 deployment/neo4j
备份完成后,向上扩展至所需的副本
kubectl scale --replicas=1 deployment/neo4j
答案 1 :(得分:0)
转储/加载命令是严格的离线操作,而备份/恢复是在线操作。
我通过创建另一个具有相同图像的 pod 得到了另一个解决方案,然后我将 statefulset 副本缩小到 neo4j 的 0 并安装了 statefulset 使用的卷。
创建转储文件后,我需要使用插件push-to-cloud将其推送到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