BDB JE如何手动删除保留的日志文件

时间:2018-11-14 14:02:28

标签: berkeley-db-je

我们在每天有100亿条记录的复制环境中使用bdb je,并遇到了一些有关回收日志文件和删除保留的日志文件的问题。

Getting Started with High Availability Applications中所述:

“对于复制的环境,JE会尽可能长时间地挂起日志文件,以防它们需要使副本保持最新状态。已清理但由于复制而保存的日志文件处于保留状态。所有这些文件都将保留,直到超过EnvironmentConfig.MAX_DISK和EnvironmentConfig.FREE_DISK定义的磁盘使用阈值为止。此时,JE删除保留的日志文件。“

在外出项目中,写入操作有时会迅速增加。并且,如果磁盘使用阈值临近,则复制环境将引发DiskLimitException,并且由于删除文件的速度无法与写入数据的速度匹配,因此禁止进行写操作。因此,我真的很想知道是否有一种方法可以手动删除保留的文件,而不是依赖于磁盘使用量阈值。

我们使用je.properties配置高可用性环境,内容如下:

    je.log.fileMax=1073741824
    je.lock.timeout=3000000
    je.sharedCache=true
    je.maxMemoryPercent=50
    je.rep.txnRollbackLimit=1000
    je.rep.replicaReceiveBufferSize=4194304
    je.rep.feederBatchNs=10000000
    je.rep.feederBatchBuffKb=256
    je.rep.commitToNetwork=false
    je.rep.replicaMessageQueueSize=10000
    je.rep.insufficientReplicasTimeout=5000 ms
    je.rep.replicaAckTimeout=10000 ms
    je.cleaner.minUtilization=50
    je.rep.replayFreeDiskPercent=50
    je.env.runCleaner=false
    je.rep.designatedPrimary=false
    je.env.backgroundReadLimit=20
    je.cleaner.readSize=33554432
    je.cleaner.detailMaxMemoryPercentage=5
    je.cleaner.lookAheadCacheSize=32768

在我们的项目中,我们使用ReplicatedEnvironment.cleanLogFile()告诉je清除文件,并使用ReplicatedEnvironment.removeDatabase(null,“ persist#” + storeName +“#com.sleepycat.persist.formats”)声明一个EntityStore可以清洗。

任何建议都会受到赞赏。

0 个答案:

没有答案