在使用berkeley db的时候,会产生很多log.00000xxx这种形式的日志文件,默认每个日志10M大小。当插入的记录条数增多时,这些日志文件就会占据很大的空间。日志主要是做恢复使用的,具体没有研究用法。但是对于本人的需求来说,日志占据了大量空间,并且也使用不到,因此就想把这些日志给删除掉。
一开始是直接把这些日志文件删除了,但是用数据库的时候就会出错,好像跟LSN有关,具体没有研究问题所在。之后在官网上查看了如何删除日志文件。其中提到了将数据库的环境变量设置为DB_LOG_AUTOREMOVE,可是试了也没用,日志还是存在。后来网上找到其他的方法:
在Berkeleydb的安装目录的bin/目录下,有很多工具。删除日志的话,执行以下命令:
db_checkpoint -1 -h /db
db_archive -d -h /db
第一步是先checkpoint,第二步就是删除。最开始的时候是只执行了第二步,却没有删除掉。后来仔细看了官网的说明,说执行删除必须要保证日志是经过checkpoint过的。也就是要先执行第一步。另外可以单独开一个线程,不停的做checkpoint操作。