RocksDB系列十二:Checkpoints

  Checkpoint是RocksDB的一个feature,主要支持对当前正在运行的数据库制作一个snapshot。Checkpoints是一个时间点上的snapshot。当使用Read-only模式打开的话,可以支持查询这个时间点上的数据,当使用Read-Write模式打开的话,可以作为一个可写的snapshot。Checkpoints可以作为全量或者新增备份的backup使用。
  给定一个RocksDB数据库,Checkpoint功能可以创建一个满足数据一致性的快照。如果snapshot所在的文件系统和DB file所在的文件系统相同的话,SST files会被硬链接,否则,就要全部拷贝过去,manifest和CURRENT files也会被拷贝过去。另外,如果有多个列族的话,在checkpoint的start和end时间段内的log文件也会被拷贝过去,这么做的目的是提供所有列族数据的一致性snapshot。
  在创建checkpoints之前,需要创建一个checkpoint对象。

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

  给定一个checkpoint对象和目录,CreateCheckpoint 函数会在给定目录中创建数据库的满足数据一致性的snapshot。

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

  函数参数中的目录不应该存在,这个目录会在函数中创建,另外,目录必须是一个绝对路径。checkpoint可以用作DB的一个read-only copy,也可以用作一个standalone DB。当打开了read/write时,SST file仍然是硬链接,后续如果文件被废弃后,硬链接也会被删除掉。如果用户不再使用这个snapshot了,用户可以直接删除这个数据目录来删除一个snapshot。
  checkpoints广泛应用于MyRocks的在线备份。MyRocks是MySQL使用RocksDB作为存储引擎的版本。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近项目中用到这个nb的玩意,所以就花时间研究了下,同时整理下助自己记忆。这个猛虎上山的logo就是rocksdb...
    小东_16d3阅读 13,088评论 3 10
  • 1、简介 RocksDB是FaceBook起初作为实验性质开发的一个高效数据库软件,旨在充分实现快存上存储数...
    薛少佳阅读 17,563评论 0 32
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,125评论 2 89
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,421评论 19 139
  • 【日精进打卡519天】 姓名:孙玉生 六项精进第177期学员(队长),271期284期288期295期299期30...
    _玉_生_阅读 1,813评论 0 2