Ignite实战( 二 )

  • my-sample-cache快照保留缓存的副本 。
  • 该文件夹将数据记录的db副本保存在文件中 。只要当前还原过程不需要预写和检查点,就不会将其添加到快照中 。part-N.bincache_data.dat
  • binary_meta和目录存储元数据和特定于marshaller编组器的信息 。
  • 注意:通常快照分布在整个集群中前面的示例显示了为在同一台物理机上运行的集群创建的快照 。因此,整个快照位于一个位置 。在实践中,所有节点都将运行在不同的机器上,快照数据分布在集群中 。每个节点保存一段快照,其中包含属于该特定节点的数据 。恢复过程解释了如何在恢复过程中将所有段连接在一起 。2.4.1 配置1.快照目录默认情况下,快照的一部分存储在各个 Ignite 节点的工作目录中,并使用 Ignite Persistence 保存数据、索引、WAL 和其他文件的相同存储介质 。由于快照可以消耗与持久性文件已经占用的空间一样多的空间,并且可以通过与 Ignite Persistence 例程共享磁盘 I/O 来影响应用程序的性能,因此建议将快照和持久性文件存储在不同的媒体上 。
    2.快照执行池【Ignite实战】默认情况下,快照线程池大小的值为4 。减少快照创建过程中涉及的线程数会增加拍摄快照的总时间 。但是,这会将磁盘负载保持在合理的范围内 。
    2.4.2 创建快照Ignite 提供了几个用于创建快照的 API 。
    1.使用控制脚本Ignite 提供了支持以下列出的与快照相关的命令的控制脚本:
    # Create a cluster snapshot named "snapshot_09062021" in the background:control.(sh|bat) --snapshot create snapshot_09062021# Create a cluster snapshot named "snapshot_09062021" and wait for the entire operation to complete:control.(sh|bat) --snapshot create snapshot_09062021 --sync# Create a cluster snapshot named "snapshot_09062021" in the "/tmp/ignite/snapshots" folder (the full path to the snapshot files will be /tmp/ignite/snapshots/snapshot_09062021):control.(sh|bat) --snapshot create snapshot_09062021 -dest /tmp/ignite/snapshots# Cancel a running snapshot named "snapshot_09062021":control.(sh|bat) --snapshot cancel snapshot_09062021# Kill a running snapshot named "snapshot_09062021":control.(sh|bat) --kill SNAPSHOT snapshot_090620212.使用JMX使用该SnapshotMXBean接口通过 JMX 执行特定于快照的过程:
    方法描述createSnapshot(String snpName)创建快照cancelSnapshot(String snpName)
    取消节点上的快照已启动其创建3.使用Java API此外,还可以在 Java 中以编程方式创建快照:
    CacheConfiguration<Integer, String> ccfg = new CacheConfiguration<>("snapshot-cache");try (IgniteCache<Integer, String> cache = ignite.getOrCreateCache(ccfg)) {cache.put(1, "Maxim");// Start snapshot operation.ignite.snapshot().createSnapshot("snapshot_02092020").get();}finally {ignite.destroyCache(ccfg.getName());}2.4.3 检查快照一致性通常所有集群节点都运行在不同的机器上,并且快照数据分布在整个集群中 。每个节点都存储自己的快照段,因此在某些情况下,可能需要在从快照恢复之前检查快照的数据完整性和整个集群的数据一致性 。
    对于这种情况,Apache Ignite 提供了内置的快照一致性检查命令,使您能够验证内部数据一致性,计算数据分区哈希和页面校验和,并在发现问题时打印结果 。check 命令还将主分区的哈希值与相应的备份分区进行比较,并报告任何差异 。
    2.4.4 从快照恢复快照可以在停止的集群上手动恢复,也可以在活动的集群上自动恢复 。下面描述了这两个过程,但是,最好只使用控制脚本中的恢复命令 。
    1.手动快照恢复过程快照结构类似于 Ignite Native Persistence 的布局,因此对于手动快照还原,您必须仅在具有相同节点的相同集群consistentId和拍摄快照的相同拓扑上执行快照还原 。如果您需要在不同的集群或不同的集群拓扑上恢复快照,请使用 自动快照恢复过程 。

    经验总结扩展阅读