ユーザー情報や組織情報などを一元的に管理するディレクトリサーバは、企業システムの中で重要な役割を果たしています。オープンソースの「OpenLDAP」によるディレクトリサーバの構築方法を解説した前連載に続き、その運用方法を紹介していきます。(編集部)
連載第2回となる今回は、OpenLDAPがデフォルトで利用するバックエンドデータベースであるBerkeley DBの機能を利用したバックアップ、リストアを紹介していきます。Berkeley DBは、データの健全なリカバリを実現する基礎となる技術にトランザクションログファイルを活用しています。このため、今回紹介するコマンドの多くは、このトランザクションログファイルに関連するコマンドとなっています。
補足:CentOSに付属するopenldap-serversパッケージに含まれるslapdを利用している場合、今回紹介する「db_XXXコマンド」は、同じopenldap-serversパッケージに含まれる「slapd_db_XXXコマンド」に読み替えて利用してください。
初めに紹介するバックアップ方法は、db_hotbackupコマンドを利用する方法です。db_hotbackupコマンドは、Berkeley DBに付属するユーティリィティコマンドであり、Berkeley DBが利用するデータベース環境をオンラインでバックアップすることができます。
例えば、バックアップ対象のバックエンドデータベースディレクトリが、「/usr/local/openldap-2.4.16/var/openldap-data」である場合は、次のようにデータベース環境をバックアップすることができます。
# export DB_HOME=/usr/local/openldap-2.4.16/var/openldap-data |
上記の例では、初めに、Berkeley DB付属のユーティリィティコマンドが利用する環境変数「DB_HOME」に、バックアップ対象とするバックエンドデータベースディレクトリである「/usr/local/openldap-2.4.16/var/openldap-data」を指定しています。
次に、Berkeley DBの設定ファイルであるDB_CONFIGファイルに、データファイル(*.bdbファイル)とトランザクションログファイル(log.*ファイル)の位置を指定します。ここでは、「DB_HOME」からの相対パス(ここでは、「.」)を用いて、「set_data_dir」ディレクティブと、「set_lg_dir」ディレクティブに「DB_HOME」に指定したディレクトリそのものであることを指定しています。
続くdb_hotbackupコマンドの実行例は、Berkeley DBが「/usr/local/BerkeleyDB.4.6」にインストールされていると仮定しており、-Dオプションを利用し、DB_CONFIGファイルからデータファイルとトランザクションログファイルの位置を読み出しています。また、-cオプションを利用してチェックポイントを実行し、未更新のデータファイルへ更新データを書き戻し、不要となったトランザクションログファイルの削除を行っています。
補足:Berkeley DBは、障害からの健全なリカバリを実現するために、データ更新時にはデータファイルでなくトランザクションログファイルに先行書き込みを行っています。チェックポイントとは、トランザクションログファイルのみに記録された更新情報を本来のデータファイルへも書き戻す処理です。チェックポイントが実行されることで、最新のトランザクションファイル1つを除いて不要なトランザクションファイルを削除したり、別ディレクトリなどへ退避したりするアーカイブ処理が可能となります。
さらに、db_hotbackupコマンドは、-bオプションで指定した「/tmp/hotbackup」ディレクトリへデータファイルとトランザクションログファイルをコピーし、障害発生時に、そのままデータベース関連ファイルがリストア可能な状態となるようリカバリ処理までを行って終了しています。
次のコマンド例では、バックアップ先ディレクトリに作成されたファイルを確認しています。バックエンドデータベースディレクトリに存在したデータファイルと、最新のトランザクションログファイル1つに加えて、-Dオプションを利用したことでDB_CONFIGファイルまでもが複製されていることが確認できます。
# ls -l /tmp/hotbackup/ |
db_hotbackupコマンドの詳細やBerkeley DBのチェックポイントの概念は、次のURLを参考にしてください。
Copyright © ITmedia, Inc. All Rights Reserved.