先のコマンド例のように、ある時点でのスナップショットであるデータファイルのバックアップに加え、定期的にトランザクションログファイルをバックアップしている場合は、db_printlogコマンドを利用してトランザクションログファイルの内容を確認し、トランザクションログファイルに記述された特定の時間までの更新をデータファイルに復元する「ポイントインタイムリカバリ」が可能です。
ディレクトリサーバの運用でポイントインタイムリカバリが必要となる状況は少ないはずです。しかし、例えば、障害発生後に別システムとデータの整合性を保ったリカバリが必要な場合は、このポイントインタイムリカバリを活用することができるでしょう。
次のコマンド例では、トランザクションログファイルを退避したディレクトリへと移動し、db_printlogコマンドに-hオプションを利用して、明示的にカレントディレクトリのトランザクションログファイルの内容を参照し、目的の更新処理が行われた時間を確認しています。
db_printlogコマンドからの出力を確認するうえで役立つ情報は、上記のコマンドリスト内で番号を付与した次の内容になるでしょう。
番号 | 内容 | 上記リストでの表示例 |
---|---|---|
1 | トランザクションログファイル番号 | [2] |
2 | ファイル内のオフセット値 | [3567694]、[3568619]、[3568659] |
3 | 操作記号(※以下のURLを参照) | db_addrem、txn_child、txn_regop |
4 | 実際の更新内容 | uid=test2050,ou=People,dc=my-domain,dc=com |
5 | コミット処理(txn_regop)時のタイムスタンプ | 200910121702.43 |
db_printlogコマンドおよび出力の詳細は、次のURLを参考にしてください。
db_printlogコマンド
http://www.oracle.com/technology/documentation/berkeley-db/db/api_reference/C/db_printlog.html
db_printlogコマンドで出力されるログファイルの見方
http://www.oracle.com/technology/documentation/berkeley-db/db/programmer_reference/debug_printlog.html
また、db_printlogコマンドの出力は長くなります。そこで、対象としている更新ログが記録されている場所がある程度分かっている場合は、読み取り開始点を指定する-bオプションと、読み取り終了点を指定する-eオプションにファイル番号とオフセット値を「/」でつないで指定し、出力を絞り込むといいでしょう。次のコマンド例では、トランザクションログファイルlog.0000000002のみの内容を出力しています。
# db_printlog -h . -b 2/0 -e 3/0 > /tmp/recovery_point_check_file |
db_printlogコマンドから出力した情報を確認することで、db_recoverコマンドの-tオプションを利用したポイントインタイムリカバリが利用できます。次のコマンド例では、トランザクションログファイルの特定の時間を指定し、データファイルのリカバリ処理を行っています。
# PATH=$PATH:/usr/local/BerkeleyDB.4.6/bin |
次のコマンド例のように、-tオプションを利用せずにリカバリ処理を行った場合は、トランザクションログファイルのすべての更新ログが適用され、データファイルは最新の状態となります。
いずれの場合も、db_recoverコマンドでトランザクションログファイルからデータファイルを復旧させた後は、db_verifyコマンドでデータファイルが正しくリカバリされていることを確認し、データベース関連ファイルをリストアし、OpenLDAPサーバを復旧させましょう。
# PATH=$PATH:/usr/local/BerkeleyDB.4.6/bin |
db_recoverコマンドの詳細は、次のURLを参考にしてください。
連載第1回、第2回を通してOpenLDAPのバックアップおよびリストアの方法を紹介しました。Berkeley DBの機能を利用したバックアップ、リストアは、OpenLDAP本体が提供するバックアップ、リストア機能に比べ、トランザクションログファイルを活用するため不整合が発生しにくくなります。また、詳細な制御が可能な半面、このトランザクションログファイルに関連した操作が必要であることも理解いただけたと思います。
次回は、OpenLDAPおよびBerkeley DBのログ管理について紹介していく予定です。
Copyright © ITmedia, Inc. All Rights Reserved.