- キット各種完売。
- msBerryDAC改造情報
2009/04/15(水)OpenLDAP の Berkeley DB が壊れた……
長年運用してきた某所にある OpenLDAP の Berkeley DB が(リセットなどのトラブルで)ファイル破損しました。
# slapd.sh start
して一応数秒返ってくるんですが、OpenLDAPシステムが起動したまま接続を受付ない。どうも起動プロセスの途中で止まってしまう模様で、ログにもスタートしました以外、何も残ってない。
# slapd.sh stop
してもプロセスがみつからないと言われるし、実際にプロセスはあるんだけど kill -KILL しないと落ちてくれない。「telnet 127.0.0.1 387」しても何も応答がない。
結果的には、OpenLDAPのデータ管理している Berkeley DB の故障で、故障すると BDB 関係の関数がハングアップする模様。さてこれは困った。
復旧コマンドがあったらしい
BDBを開こうとするだけで停止するので、ダンプも何もできない。さて困った……と思ったら、db_recover という復旧コマンドがあるらしい。OpenLDAP 2.2.30 on FreeBSD だったので、DBDはVer4.2。ということで、
/var/db# db_recover-4.2 -c -v -h openldap-data db_recover: Finding last valid log LSN: file: 1 offset 10445896 db_recover: Recovery starting from [1][28] db_recover: Recovery complete at Wed Apr 15 00:11:18 2009 db_recover: Maximum transaction ID 800019e7 Recovery checkpoint [1][10445896]
とやって無事復旧しました。Berkeley DBは壊れたとき、必ずしも「エラー」になってくれないので原因究明が厄介ですね。
svnとかもそうだけど、Berkeley DBは時々壊れてくれるので、バックアップ取っておかないと痛い目みる。