检查点

检查点是RocksDB中的一个特性,它提供了在单独目录中捕获运行的RocksDB数据库快照的能力。 检查点可以用作时间点快照,可以只读地打开检查点来查询时间点处的行,也可以通过打开读写快照来作为可写快照。 检查点可用于完整备份和增量备份。

检查点特性使RocksDB能够在指定目录中创建给定RocksDB数据库的一致快照。 如果快照位于与原始数据库相同的文件系统上,则SST文件将被硬链接,否则将复制SST文件。 manifest和 CURRENT 文件将被复制。此外,如果有多个列族,则将复制检查点开始和结束期间的日志文件,以便在列族之间提供一致的快照。

在创建检查点之前,需要为数据库创建检查点对象。API如下:

  1. Status Create(DB* db, Checkpoint** checkpoint_ptr);

给定检查点对象和目录,CreateCheckpoint函数在给定目录中创建数据库的一致快照。

  1. Status CreateCheckpoint(const std::string& checkpoint_dir);

该目录不应该已经存在,并且将由该API创建。该目录将是一个绝对路径。 检查点可以用作数据库的只读副本,也可以作为独立的DB打开。 当打开读/写时,SST文件仍然是硬链接,当文件被废弃时,这些链接将被删除。 当用户完成快照时,用户可以删除目录来删除快照。

检查点用于MyRocks中的在线备份。也就是MySQL使用RocksDB作为存储引擎。(MySQL RocksDB)