Ignite实战( 三 )


一般来说,停止集群,然后用快照中的数据替换持久化数据和其他文件,然后重新启动节点 。
详细过程如下所示:

  • 停止要恢复的集群
  • 从检查点$IGNITE_HOME/work/cp目录中删除所有文件
  • 在每个节点上执行以下操作:
    • {nodeId}从目录中删除与 相关的文件$IGNITE_HOME/work/db/binary_meta 。
    • {nodeId}从目录中删除与 相关的文件$IGNITE_HOME/work/db/marshaller 。
    • {nodeId}删除与您的目录下相关的文件和子目录$IGNITE_HOME/work/db 。db/{node_id}如果目录不在 Ignite 目录下,请单独清理该目录work 。
    • 将属于具有{node_id}快照的节点的文件复制到$IGNITE_HOME/work/目录中 。如果该db/{node_id}目录不在 Ignitework目录下,那么您需要将数据文件复制到那里 。
  • 重启集群
2.自动快照恢复过程自动恢复过程允许用户使用 Java API 或命令行脚本从活动集群上的快照恢复缓存组 。
目前,此过程有几个限制,将在未来的版本中解决:
  • 仅当快照的所有部分都存在于集群中时,才能进行恢复 。每个节点通过给定的快照名称和一致的节点 ID 在配置的快照路径中查找本地快照数据 。
  • 恢复过程只能应用于用户创建的缓存组 。
  • 要从快照恢复的缓存组不得存在于集群中 。如果它们存在,则用户必须在开始此操作之前将它们销毁 。
  • 不允许并发还原操作 。因此,如果一个操作已经开始,则只有在第一个操作完成后才能启动另一个操作 。
以下代码片段演示了如何从快照恢复单个缓存组 。
// Restore cache named "snapshot-cache" from the snapshot "snapshot_02092020".ignite.snapshot().restoreSnapshot("snapshot_02092020", Collections.singleton("snapshot-cache")).get();3.使用 CLI 控制还原操作该control.sh|bat脚本提供了启动和停止恢复操作的能力 。
# Start restoring all user-created cache groups from the snapshot "snapshot_09062021" in the background.control.(sh|bat) --snapshot restore snapshot_09062021 --start# Start restoring all user-created cache groups from the snapshot "snapshot_09062021" and wait for the entire operation to complete.control.(sh|bat) --snapshot restore snapshot_09062021 --start --sync# Start restoring all user-created cache groups from the snapshot "snapshot_09062021" located in the "/tmp/ignite/snapshots" folder (the full path to the snapshot files should be /tmp/ignite/snapshots/snapshot_09062021):control.(sh|bat) --snapshot restore snapshot_09062021 --src /tmp/ignite/snapshots# Start restoring only "cache-group1" and "cache-group2" from the snapshot "snapshot_09062021" in the background.control.(sh|bat) --snapshot restore snapshot_09062021 --start --groups cache-group1,cache-group2# Cancel the restore operation for "snapshot_09062021".control.(sh|bat) --snapshot restore snapshot_09062021 --cancel2.4.5 一致性保证在集群范围内的并发操作以及与 Ignite 的持续更改方面,所有快照都是完全一致的 。持久化数据、索引、模式、二进制元数据、编组器和节点上的其他文件 。
集群范围的快照一致性是通过触发Partition-Map-Exchange 过程来实现的 。通过这样做,集群最终将到达所有先前启动的事务都完成并暂停新事务的时间点 。一旦发生这种情况,集群将启动快照创建过程 。PME 过程确保快照包括处于一致状态的主备份和备份 。
Ignite Persistence 文件与其快照副本之间的一致性是通过将原始文件复制到目标快照目录并跟踪所有并发正在进行的更改来实现的 。跟踪更改可能需要 Ignite Persistence 存储介质上的额外空间(最多为存储介质的 1 倍大小) 。
2.5 分布式计算Ignite 提供了一个 API,用于以平衡和容错的方式在集群节点之间分配计算 。您可以提交单个任务以供执行,也可以通过自动任务拆分来实现 MapReduce 模式 。API 提供对作业分配策略的细粒度控制 。

经验总结扩展阅读