LDAPサーバのバックエンドにBerkeleyDBを使っていましたが、DBが壊れるタイミングが分かりました。

複数プロセスからDBにアクセスがあり、うち1プロセスで更新が発生した時にほぼ必ずDBが壊れました。

1プロセス内でのトランザクションはサポートしているようです。

 

LDAPサーバのバックエンドにBerkeleyDBを使う場合、

「更新される可能性のあるエントリが存在するLDAPサーバを稼働中にはslapcatコマンドを使ってはいけない」ということです。

slapcatのmanにも「一般に、データベースの一貫性を保証したいのであれば slapcat を実行している間は slapd(8) の実行を中断してください(少なくとも更新できないようにしてください)。 」とあります。

 

LDAPのバックエンドとしてBerkeleyDBを使う時にDBを壊さないためのTipsはまだあるので、次のブログエントリで書きます。

カテゴリー: 技術情報