Berkeley DB壊れた→復旧
Berkeley DBを使って作ったアプリが、なんか調子が悪いということで、ここ数日ハマってました。テストデータを投入しても再現しないので、データベースファイルを疑って調査。
db_verifyコマンドでデータベースファイルを調べてみるとエラーが出る。
$ db_verify data
db_verify: Page 0:
page 3 encountered a second time on free list
db_verify: DB->verify: data:
DB_VERIFY_BAD: Database verification failed
復旧させるには、db_dumpでダンプして、db_loadでリストア。
$ mv data data.old
$ db_dump data.old | db_load data
Berkeley DBと言えばSubversionとかMovable Typeなどでも使われており、復旧方法を覚えておけば今後も助けられる機会がありそうだということで、メモでした。