目前我们正在评估几个关键值数据存储,以替换owr主应用程序当前使用的旧isam(20年左右!)……
问题是我们当前的isam不支持崩溃恢复.
所以LevelDB似乎对我们好(也检查BerkleyDB等)
但是我们遇到了热备份的问题,并且鉴于LevelDB是一个库,而不是服务器,要求“热备份”是很奇怪的,因为它直观地暗示了外部备份过程.
也许有人想提出选择(或已知的解决方案)?
例如:
– 通过主要应用程序的内部线程进行热备份?
– 仅通过复制LevelDB数据目录进行热备份?
提前致谢
您可以通过LevelDB进行快照迭代,这可能是制作热拷贝的最佳方式(不要忘记
关闭迭代器).
要通过文件系统备份LevelDB,我以前使用的脚本创建到所有.sst文件(一旦写入后都是不可变的)的硬链接,以及日志(和MANIFEST,CURRENT等)文件的正常副本到备份目录中在同一个分区上.这很快,因为与.sst文件相比,日志文件很小.
备份运行时必须关闭(通过应用程序)数据库,但所花费的时间显然远小于将整个数据库复制到不同分区或上传到S3等所花费的时间.这可以在应用程序重新打开DB.