如何解决如何从 MapDB wal预写日志文件中恢复数据?
我的目标是启用 MapDB 崩溃保护,如果发生崩溃,如何恢复数据。
我已为 MapDB 启用事务
DB db;
HTreeMap< String,String > mapDb;
db = DBMaker.fileDB( "walTest/file1.db" )
.transactionEnable()
.allocateStartSize( 64 *1024 *1024 )
.allocateIncrement( 32 *1024 *1024 )
.filemmapEnable()
.filemmapEnableIfSupported()
.filemmapPrecleardisable()
.cleanerHackEnable()
.cloSEOnJvmShutdown()
.make();
mapDb = db.hashMap( "Test" ) //$NON-NLS-1$
.keySerializer( Serializer.STRING )
.valueSerializer( Serializer.STRING )
.createOropen();
for(int i=0; i<10000;i++)
{
mapDb.put(""+i,"aaaaaaaaaaa bbbbbbbbbbbbbbbbbb cccccccccccccccccccc dddddddddddddddddd");
if(i % 100 == 0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// Todo Auto-generated catch block
e.printstacktrace();
}
}
if(i == 5000)
{
db.commit();
}
}
我看到它创建了 2 个文件,file1.db 和 file1.db.wal.0
现在,我重新启动服务器并使用以下代码读取 MapDB
System.out.println(mapDb.size());
输出为 5001 未提交的其他 5000 条未恢复。
我在做 mapDb.size() 之前尝试使用 db.commit 但它仍然没有帮助。
那么,wal 文件如何防止服务器或 jvm 崩溃? 我们如何恢复wal文件?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。