重新启动 Gridgain 服务器而不会丢失数据且不会损坏 wal 文件夹

问题描述

我在 Google Kubernetes 引擎中部署了一个启用持久性的 Gridgain 服务器。服务器以认配置启动。我需要将 walMode 更改为 FSYNC。但这是不可能的,因为 WAL 目录给出了访问被拒绝的异常。然后我删除 wal 和 walarchive PersistenceVolumeClaim 对象并尝试重新启动它。但它给出了错误

有什么方法可以用我现有的数据启动 GridGain 服务器。现在 wal 和 walarchive 目录被删除并创建新的目录。

除此之外,如果任何原因 wal 和 walarchive 数据损坏,任何原因都可以安全启动 Gridgain 服务器而不会丢失任何数据。

解决方法

参考 [1] 和 [2] 找到了解决方案。

作为[1]的答案1

必须清理位于 $IGNITE_HOME/work/db/$NODE_UUID/cp 的文件夹 向上。在此之后,节点应该以正常方式启动。

如果删除了wal和walArchive文件夹,则需要删除“cp”文件夹。如果在 Kubernetes 和服务器节点中运行的应用程序无法启动,请按照 [2] 创建带有挂载数据文件夹的新 pod。然后执行它并删除“cp”文件夹。

apiVersion: v1
kind: Pod
metadata:
  name: task-pv-pod
  namespace: gridgain
spec:
  volumes:
    - name: task-pv-storage
      persistentVolumeClaim:
        claimName: work-vol-gridgain-cluster-2 # persistent volume claim  
  containers:
    - name: task-pv-container
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/gridgain/" # Mount to data folder
          name: task-pv-storage

然后服务器启动没有错误。

[1]。 http://apache-ignite-users.70518.x6.nabble.com/Is-there-any-way-to-force-recover-the-cluster-copying-running-cluster-datastore-td28399.html

[2]。 https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...