連載
» 2009年11月12日 00時00分 公開

OpenLDAPによるディレクトリサーバ運用(2):もしもに備えるバックアップ、リストア(2) (1/3)

ユーザー情報や組織情報などを一元的に管理するディレクトリサーバは、企業システムの中で重要な役割を果たしています。オープンソースの「OpenLDAP」によるディレクトリサーバの構築方法を解説した前連載に続き、その運用方法を紹介していきます。(編集部)

[菊池研自,伊藤忠テクノソリューションズ株式会社]

 連載第2回となる今回は、OpenLDAPがデフォルトで利用するバックエンドデータベースであるBerkeley DBの機能を利用したバックアップ、リストアを紹介していきます。Berkeley DBは、データの健全なリカバリを実現する基礎となる技術にトランザクションログファイルを活用しています。このため、今回紹介するコマンドの多くは、このトランザクションログファイルに関連するコマンドとなっています。

補足:CentOSに付属するopenldap-serversパッケージに含まれるslapdを利用している場合、今回紹介する「db_XXXコマンド」は、同じopenldap-serversパッケージに含まれる「slapd_db_XXXコマンド」に読み替えて利用してください。


db_hotbackupを利用したバックアップ

 初めに紹介するバックアップ方法は、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
# vi /usr/local/openldap-2.4.16/var/openldap-data/DB_CONFIG

…[略]…
# Data Directory
set_data_dir .    ←データファイルを保存するディレクトリを指定
# Transaction Log Directory
set_lg_dir .      ←トランザクションログファイルを保存するディレクトリを指定
…[略]…

# PATH=$PATH:/usr/local/BerkeleyDB.4.6/bin
# db_hotbackup -Dc -b /tmp/hotbackup

 上記の例では、初めに、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/
合計 10396
-rw------- 1 root root      949 10月 13 00:59 DB_CONFIG
                                        ← “-D”を利用することでDB_CONFIGも含まれる
-rw------- 1 root root     2048 10月 13 00:59 alock
-rw------- 1 root root     8192 10月 13 00:59 cn.bdb
-rw------- 1 root root     8192 10月 13 00:59 dn2id.bdb
-rw------- 1 root root     8192 10月 13 00:59 gidNumber.bdb
-rw------- 1 root root    65536 10月 13 00:59 id2entry.bdb
-rw------- 1 root root 10485760 10月 13 00:59 log.0000000001
-rw------- 1 root root     8192 10月 13 00:59 loginShell.bdb
-rw------- 1 root root     8192 10月 13 00:59 objectClass.bdb
-rw------- 1 root root     8192 10月 13 00:59 ou.bdb
-rw------- 1 root root     8192 10月 13 00:59 uid.bdb
-rw------- 1 root root     8192 10月 13 00:59 uidNumber.bdb

 db_hotbackupコマンドの詳細やBerkeley DBのチェックポイントの概念は、次のURLを参考にしてください。


       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。