【问题标题】:Backup of ignite stateful set in KubernetesKubernetes 中 ignite 状态集的备份
【发布时间】:2019-06-24 02:31:46
【问题描述】:

我正在尝试制定一种策略来备份我的 apache ignite 缓存中的数据,该缓存作为有状态集托管在 google cloud Kubernetes 中。 我的 ignite 部署使用 ignite 本机持久性并运行一个 3 节点的 ignite 集群,该集群由 Kubernetes 中的持久性卷备份。 我正在使用 binaryConfiguration 将二进制对象存储在缓存中。

我正在寻找一种可靠的方法来备份我的 ignite 数据并能够恢复它。

到目前为止,我已尝试仅备份持久性文件,然后将它们恢复。 它还没有可靠地工作。 我面临的问题是恢复后,不是二进制对象的缓存数据被正确恢复,例如字符串或数字。我可以很好地访问数字或字符串数​​据。但是二进制对象是不可访问的。二进制对象似乎已恢复,但我无法获取它们。

奇怪的是,在恢复之后,一旦我将一个新的二进制对象添加到缓存中,所有恢复的数据似乎都可以正常访问。

谁能建议一种可靠的方法来备份和恢复 ignite 本机持久性数据?

【问题讨论】:

  • 您如何执行备份?您是否在获取副本之前关闭了集群?
  • @StephenDarlington 在复制之前我不会关闭集群。恢复后可以访问备份中的所有原始数据,但只有二进制数据会导致问题。
  • 但是如果集群在运行,你的备份可能会不一致。您需要来自所有节点的数据文件和 WAL 完全相同。如果您在集群关闭时执行备份,是否会遇到同样的问题?

标签: kubernetes backup persistence ignite statefulset


【解决方案1】:

您应该备份${ignite.work.dir}/marshaller 目录,或者为缓存中的每种类型调用ignite.binary().type(KeyOrValue.class) 来主二进制编组器。

【讨论】:

  • 嗨@alamar。我认为这是可行的。看起来二进制编组器在还原后以某种方式无法启动。我会尽快试试这个。
  • 不幸的是,这似乎不起作用。我可以让它工作的唯一方法是在缓存中添加/更新具有相同类型的二进制对象。是否有推荐的方法来备份 ignite 持久性缓存,以便恢复可靠。
  • @Chinmoymohanty85 正如我已经说过的,备份marshaller 目录应该是可靠的。那或使用GridGain snapshots
  • 这似乎工作了。不知何故,我在恢复时错过了几个步骤。恢复 marshaller 文件夹实际上解决了这个问题。谢谢。
【解决方案2】:

Apache Ignite 提供者ACID 交易非常可靠。缓存还为primary backups and copies 使用自己的机制,并假设您启用了WAL,一些内容保存在内存中。

最有可能发生的事情是您进行了还原,并且在您进行初始写入的那一刻开始填充内存,让您可以查看磁盘上的内容(缓存)。这并不是真正受支持的恢复机制(文档中没有),但它可以在恢复后运行次要样本无关写入的方式工作。我建议彻底测试这个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 2017-05-19
    • 2021-01-15
    • 1970-01-01
    • 2017-04-22
    • 2019-12-01
    • 2018-04-15
    相关资源
    最近更新 更多