Sun ONE ロゴ     前へ     目次     索引     ドキュメントホーム     次へ    
Sun ONE Directory Server 管理ガイド



第 4 章   ディレクトリへのデータの実装

Directory Server で管理されるデータは、まとめてインポートされることがよくあります。Directory Server には、サフィックス全体のインポートとエクスポートを行うツールが用意されています。また、一度にすべてのサフィックスのバックアップを作成したり、すべ てのデータをバックアップから復元したりするツールも用意されています。

この章では、次のディレクトリへのデータの実装手順について説明します。

サフィックスの読み取り専用モードの設定

Directory Server 上でエクスポート操作またはバックアップ操作を実行する前に、特定のサフィックスに対して読み取り専用モードを有効にすると、その時点でのサフィックスの 内容の正確なイメージを確保できます。また、インポート操作または復元操作を実行する前に、対象となるサフィックスが読み取り専用モードになっていないこ とを確認する必要があります。

Directory Server コンソールとコマンド行ユーティリティでは、エクスポート操作またはバックアップ操作の前に、ディレクトリが自動的に読み取り専用モードに設定されること はありません。これは、読み取り専用にしてしまうと、ディレクトリの更新ができなくなるためです。ただし、マルチマスター環境では、1 つのサーバーで読み取り専用モードを有効にし、ほかのマスターはデータの書き込みを可能にしておくことができます。

サフィックスを読み取り専用にするには、「アクセス権とリフェラルの設定」に記載されている手順を実行します。または、Directory Server 全体を書込み禁止にすることもできます。この手順については、「グローバルな読み取り専用モードの設定」を参照してください。

データのインポート

Sun ONE Directory Server では、次の 2 つの方法でデータをインポートできます。

  • LDIF ファイルをインポートする方法では、ディレクトリ内の任意のサフィックスについて、そのエントリをまとめて追加、変更、削除できます。
  • LDIF ファイルを使用してサフィックスを初期化する方法では、サフィックスに現在含まれているデータは削除され、LDIF ファイルの内容で置き換えられます。

どちらの方法も、Directory Server コンソールまたはコマンド行ユーティリティを使用して実行できます。



インポートする LDIF ファイルでは、UTF-8 文字セットエンコードが使用されている必要があります。

LDIF をインポートするときは、ディレクトリ内に親エントリが存在するか、ファイルから親エントリを最初にコピーする必要があります。サフィックスを初期化する ときは、ルートエントリと、対応するサフィックスのすべてのディレクトリツリーノードが LDIF ファイルに含まれている必要があります。



次の表は、インポートと初期化の違いを示しています。

表 4-1    データのインポートとサフィックスの初期化の比較 

比較ドメイン

データのインポート

サフィックスの初期化

内容の上書き

不可

LDAP 処理

追加、変更、削除

追加のみ

パフォーマンス

低速

高速

サーバーの障害への対応

ベストエフォート (障害発生時までの変更内容はそのまま残る)

不可 (障害が発生するとすべての変更内容は失われる)

LDIF ファイルの位置

コンソールマシン上

コンソールまたはサーバーと同じマシン上

設定情報のインポート (cn=config)

不可

LDIF ファイルのインポート

インポート操作を実行するとき、Directory Server コンソールでは、新しいエントリをディレクトリに追加するために ldapmodify 処理が実行されます。エントリは LDIF ファイルで指定されます。このファイルには、インポート処理の一部として既存のエントリの変更や削除を行う更新文が含まれている場合もあります。

エントリのインポート先は、Directory Server で管理されている任意のサフィックスか、設定に定義されている任意の連鎖サフィックスまたは連鎖サブサフィックスです。エントリを追加するほかの処理と同 様に、インポートされた新しいエントリすべてにインデックスが付けられます。

コンソールからの LDIF のインポート

インポートを実行するには、Directory Manager または管理者としてログインする必要があります。

  1. Directory Server コンソールの最上位にある「タスク」タブで一番下までスクロールし、「LDIF からインポート」の隣にあるボタンをクリックします。
  2. 「LDIF のインポート」ダイアログボックスが表示されます。

  3. 「LDIF のインポート」ダイアログボックスで、インポートする LDIF ファイルの絶対パスを「LDIF ファイル」フィールドに入力するか、「参照」をクリックしてローカルファイルシステムからファイルを選択します。
  4. リモートマシン上のディレクトリにアクセスしている場合、このフィールド名は「LDIF ファイル (コンソールマシン上)」と表示されます。このラベルは、リモートの Directory Server マシンのファイルシステムではなく、ローカルファイルシステムを参照していることを示します。

  5. 必要に応じて、次のオプションを設定します。
    1. 追加のみ : LDIF ファイルには、デフォルトの追加命令のほかに、変更命令や削除命令が含まれている場合もあります。LDIF ファイル内の追加命令だけを実行し、そのほかの命令はすべて無視するように指定するには、このチェックボックスを選択します。
    2. エラー時に継続 : エラーが発生してもインポートを続行するように指定するには、このチェックボックスを選択します。たとえば、すでにサフィックス上に存在するエントリを含 む LDIF ファイルをインポートする場合に、このオプションを使用できます。インポート処理の実行中、既存エントリなどのエラーが拒否エントリ用ファイルに記録され ます。
    3. このチェックボックスが選択されていない場合、最初のエラー発生後にインポート処理は停止します。それ以前の LDIF ファイルのエントリはすべて正常にインポートされているので、ディレクトリ内に残ります。

  6. 「拒否エントリ用ファイル」フィールドには、コンソールがインポートできなかったすべてのエントリを記録するファイルの絶対パスを入力します。あるいは、「参照」をクリックして、ローカルファイルシステムからファイルを選択します。
  7. たとえば、サーバーはディレクトリにすでに存在するエントリや、親オブジェクトのないエントリをインポートできません。コンソールは、サーバーから送られたエラーメッセージを拒否ファイルに書き込みます。

    このフィールドに何も書き込まれないと、拒否されたエントリは記録されません。

  8. 「了解」をクリックして、インポート処理を開始します。
  9. Directory Server コンソールでは、処理の状態と発生したエラーを示すダイアログボックスが表示されます。「拒否エントリ用ファイル」フィールドに入力した場合は、そこに指定されたファイルにもすべてのエラーメッセージが書き込まれます。

コマンド行からの LDIF のインポート

LDAP から LDIF ファイルをインポートし、そこに含まれるすべての処理を実行するには、ldif2ldap コマンド (Solaris パッケージ内の directoryserver ldif2ldap) を使用します。このスクリプトを使用すると、すべてのディレクトリサフィックスに対して同時にデータをインポートできます。ldif2ldap を使用してインポートを実行するには、サーバーを動作させておく必要があります。

このコマンドの完全パスは次のとおりです。

Solaris パッケージ

# /usr/sbin/directoryserver ldif2ldap

その他のインストール

# ServerRoot/slapd-serverID/ldif2ldap

次の例では、ldif2ldap コマンドを使ってインポートが実行されます。このコマンドを実行するために root 権限は必要ありませんが、コマンド行で Directory Manager に資格を付与する必要があります。最後のパラメータには、インポートする 1 つ以上の LDIF ファイル名を指定します。

UNIX シェルスクリプト

# use directoryserver ldif2ldap on Solaris パッケージ installations
/var/Sun/mps/slapd-example/ldif2ldap \
  "cn=Directory Manager" password \
  /var/Sun/mps/slapd-example//ldif/demo.ldif

Windows バッチファイル

C:\Program Files\Sun\MPS\slapd-example\ldif2ldap.bat
  "cn=Directory Manager" password
  C:\Program Files\Sun\MPS\slapd-example\ldif\demo.ldif

このスクリプトの使用方法の詳細は、『Sun ONE Directory Server Reference Manual』の第 2 章にある「ldif2ldap」を参照してください。

サフィックスの初期化

サフィックスを初期化すると、サフィックスに含まれている既存のデータが、追加するエントリだけを含む LDIF ファイルの内容によって上書きされます。



警告

LDIF ファイルからサフィックスを初期化するときは、データを復元する場合を除いて、o=NetscapeRoot サフィックスを上書きしないように注意してください。このサフィックスを上書きしてしまうと、重要な情報が削除されてしまい、すべての Sun ONE サーバーをインストールし直す必要があります。



サフィックスを初期化するユーザーは、Directory Manager または管理者としての認証を受けている必要があります。セキュリティ上の理由から、サフィックスのルートエントリ (たとえば、dc=example,dc=com) にアクセスできるのは、Directory Manager および管理者だけに限定されます。このため、ルートエントリを含む LDIF ファイルをインポートできるのは、これらの ID でログインしたユーザーだけに限定されます。

コンソールからのサフィックスの初期化

  1. Directory Server コンソールの最上位の「設定」タブで「データ」ノードを展開し、初期化するサフィックスを表示します。
  2. このサフィックスノードをマウスの右ボタンでクリックし、ポップアップメニューから「初期化」を選択します。または、サフィックスノードを選択し、「オブジェクト」メニューから「初期化」を選択します。
  3. 「サフィックスを初期化」ダイアログが表示されます。

  4. 初期化に使用する LDIF ファイルの絶対パスを「LDIF ファイル」フィールドに入力するか、「参照」をクリックしてマシン上のファイルを選択します。
  5. インポートするファイルが置かれているローカルマシンからコンソールを操作している場合は、手順 6 に進みます。LDIF ファイルがあるサーバーのリモートマシンからコンソールを操作している場合は、次のどちらかのオプションを選択します。
  6. ローカルマシンから : LDIF ファイルがローカルマシン上に置かれていることを示します。

    サーバーマシンから : LDIF ファイルがリモートサーバー上にあることを示します。デフォルトでは、コンソールは次のディレクトリ内でファイルを検索します。

    ServerRoot/slapd-serverID/ldif

  7. 「了解」をクリックします。


  8. 警告

    スクリプトは、サフィックスのデータを上書きします。



  9. サフィックスに含まれるデータを上書きしてよいか確認します。
  10. サフィックスの初期化が開始され、エラーが発生した場合はダイアログに表示されます。

ldif2db コマンドによるサフィックスの初期化

サフィックスを初期化し、既存のデータを上書きするには、ldif2db コマンド (Solaris パッケージ内の directoryserver ldif2db) を使用します。このスクリプトでは、インポートを開始する前に、サーバーを停止する必要があります。

デフォルトでは、まず既存の o=NetscapeRoot 設定情報すべてが保存され、インポートされるファイル内の o=NetscapeRoot 設定情報と結合されます。



警告

スクリプトは、サフィックスのデータを上書きします。



サーバーを停止して LDIF をインポートするには、次の手順を実行します。

  1. root としてコマンド行に次のコマンドを入力し、サーバーを停止させます。

    Solaris パッケージ

    # /usr/sbin/directoryserver stop

    その他のインストール

    # ServerRoot/slapd-serverID/stop-slapd

  2. 次の場所にあるコマンドを実行します。

    Solaris パッケージ

    # /usr/sbin/directoryserver ldif2db

    その他のインストール

    # ServerRoot/slapd-serverID/ldif2db

  3. 適切なコマンドでサーバーを起動します。

    Solaris パッケージ

    # /usr/sbin/directoryserver start

    その他のインストール

    # ServerRoot/slapd-serverID/start-slapd

次の例では、ldif2db コマンドを使用して、LDIF ファイルを 1 つのサフィックスにインポートします。

UNIX シェルスクリプト

# use directoryserver ldif2db on Solaris パッケージ installations
/var/Sun/mps/slapd-example/ldif2db -n Database1 \
 -i /var/Sun/mps/slapd-example/ldif/demo.ldif \
 -i /var/Sun/mps/slapd-example/ldif/demo2.ldif

Windows バッチファイル

C:\Program Files\Sun\MPS\slapd-example\ldif2db.bat -n Database1
  -i C:\Program Files\Sun\MPS\slapd-example\ldif\demo.ldif
  -i C:\Program Files\Sun\MPS\slapd-example\ldif\demo2.ldif

表 4-2    例で使用した ldif2db オプションの説明

オプション

内容

-n

データのインポート先となるデータベースの名前を指定する

注意 : -n オプションで、LDIF ファイルに含まれるサフィックスに対応しないデータベースを指定した場合は、データベースに含まれるすべてのデータが削除され、インポートは失敗します。データベース名を間違えないように注意してください。

-i

インポートする LDIF ファイルの絶対パス名を指定する。このオプションは必須。一度に複数の LDIF ファイルをインポートする場合は、複数の -i 引数を指定できる。複数のファイルをインポートする場合、サーバーはコマンド行で指定された順に LDIF ファイルをインポートする

このコマンドの使用方法の詳細は、『Sun ONE Directory Server Reference Manual』の第 2 章にある「ldif2ldap」を参照してください。

ldif2db.pl Perl スクリプトによるサフィックスの初期化

ldif2db コマンドと同様に ldif2db.pl スクリプト (Solaris パッケージ内の directoryserver ldif2db-task) は、指定したサフィックスのデータを上書きします。このスクリプトを使用してインポートを実行する場合は、サーバーを動作させておく必要があります。



警告

スクリプトは、サフィックスのデータを上書きします。



このスクリプトのコマンドは、プラットフォームごとに異なります。

Solaris パッケージ

# /usr/sbin/directoryserver ldif2db-task

Windows プラットフォーム

cd ServerRoot
bin\slapd\admin\bin\perl slapd-serverID\ldif2db.pl

その他のインストール

# ServerRoot/slapd-serverID/ldif2db.pl

次の例では、ldif2db.pl スクリプトを使用して、LDIF ファイルをインポートします。このスクリプトの実行には、root 権限は必要ありませんが、Directory Manager として認証する必要があります。

UNIX シェルスクリプト

# use directoryserver ldif2db-task on Solaris パッケージ installations
/var/Sun/mps/slapd-example/ldif2db.pl \
  -D "cn=Directory Manager" -w password -n Database1 \
  -i /var/Sun/mps/slapd-example/ldif/demo.ldif

Windows バッチファイル

C:\Program Files\Sun\MPS\bin\slapd\admin\bin\perl.exe
  
C:\Program Files\Sun\MPS\slapd-example\ldif2db.pl
    -
D "cn=Directory Manager" -w password -n Database1
    -
i C:\Program Files\Sun\MPS\slapd-example\ldif\demo.ldif

次の表に、これらの例で使用されている ldif2db.pl のオプションを示します。

表 4-3    例で使用した ldif2db.pl オプションの説明

オプション

内容

-D

Directory Manager の DN を指定する

-w

Directory Manager のパスワードを指定する

-n

データのインポート先となるデータベースの名前を指定する

-i

インポートする LDIF ファイルの絶対パス名を指定する。このオプションは必須。一度に複数の LDIF ファイルをインポートする場合は、複数の -i 引数を指定できる。複数のファイルをインポートする場合、サーバーはコマンド行で指定された順に LDIF ファイルをインポートする

この Perl スクリプトの使用方法の詳細は、『Sun ONE Directory Server Reference Manual』の第 2 章にある「ldif2db.pl」を参照してください。

データのエクスポート

プレーンテキスト形式の LDIF (LDAP Data Interchange Format) を使用して、ディレクトリの内容をエクスポートすることができます。LDIF は、エントリ、属性、およびその値をテキストで表現します。LDIF は、RFC 2849 (http://www.ietf.org/rfc/rfc2849.txt) に定義されている標準形式です。

データのエクスポートは、次のような場合に便利です。

  • サーバー上のデータのバックアップ
  • 他の Directory Server へのデータのコピー
  • 他のアプリケーションへのデータのエクスポート
  • ディレクトリトポロジ変更後のサフィックスの再生成

エクスポート処理を実行しても、設定情報 (cn=config) はエクスポートされません。



警告

エクスポートの処理中には、サーバーを停止しないでください。



コンソールを使用した LDIF へのディレクトリ全体のエクスポート

エクスポートされるファイルの最終的な位置に応じて、ディレクトリデータの一部またはすべてを LDIF にエクスポートできます。LDIF ファイルがサーバー上にある場合は、サーバー上のローカルサフィックスにあるデータしかエクスポートできません。LDIF ファイルがリモートマシン上にある場合は、すべてのサフィックスと連鎖サフィックスをエクスポートできます。

サーバーの動作中に、Directory Server コンソールから LDIF にディレクトリデータをエクスポートするには、次の手順を実行します。

  1. Directory Server コンソールの最上位にある「タスク」タブで一番下までスクロールし、「LDIF にエクスポート」の隣にあるボタンをクリックします。
  2. 「エクスポート」ダイアログが表示されます。

  3. 「LDIF ファイル」フィールドに LDIF ファイルの絶対パスとファイル名を入力するか、「参照」をクリックしてファイルを選択します。
  4. リモートサーバー上でコンソールを実行している場合は、「参照」は無効になっています。「参照」ボタンが無効になっている場合は、ファイルがデフォルトで次のディレクトリに格納されています。

    ServerRoot/slapd-serverID/ldif

  5. サーバー以外のリモートマシン上でコンソールを実行している場合は、「LDIF ファイル」フィールドの下に 2 つのラジオボタンが表示されます。コンソールの実行マシン上の LDIF ファイルをエクスポート先として指定する場合は、「ローカルマシンへ」を選択します。サーバーのマシン上に置かれている LDIF ファイルをエクスポート先として指定する場合は、「サーバーマシンへ」を選択します。
  6. ディレクトリ全体をエクスポートする場合は、「すべてのサフィックス」ラジオボタンを選択します。
  7. ディレクトリのサブツリーだけをエクスポートするときは、「サブツリー」ラジオボタンを選択し、テキストボックスにサブツリーのベースとして DN を入力します。

    「参照」をクリックしてサブツリーを選択することもできます。

  8. 「了解」をクリックして、ディレクトリの内容をファイルにエクスポートします。

コンソールを使用した LDIF への単一サフィックスのエクスポート

サーバーの動作中に、Directory Server コンソールから LDIF に単一のサフィックスをエクスポートするには、次の手順を実行します。

  1. Directory Server コンソールの最上位の「設定」タブで「データ」ノードを展開し、エクスポートするサフィックスを表示します。
  2. このサフィックスノードをマウスの右ボタンでクリックし、ポップアップメニューから「エクスポート」を選択します。または、サフィックスノードを選択し、「オブジェクト」メニューから「エクスポート」を選択します。
  3. 「サフィックスをエクスポート」ダイアログが表示されます。

  4. LDIF ファイルの絶対パスを「LDIF ファイル」フィールドに入力するか、「参照」をクリックしてマシン上のファイルを選択します。
  5. 「参照」ボタンが有効でない場合、デフォルトではファイルが次のディレクトリに格納されます。

    ServerRoot/slapd-serverID/ldif

  6. レプリケートされたサフィックスでは、「レプリケーション情報のエクスポート」チェックボックスを選択することもできます。この機能は、エクスポートした LDIF を使ってこのサフィックスの別のレプリカを初期化する場合にだけ必要です。
  7. このサフィックスで属性の暗号化が有効に設定されているときは、「属性の復号化」チェックボックスを選択できます。 この場合は、サーバーの証明書データベースを保護しているパスワードを指定する必要があります。オプションを選択してパスワードを入力するか、パスワード を記録したファイルの名前を入力します。属性値を復号化するためのパスワードを指定しない場合、暗号化された値が LDIF に出力されます。
  8. 「了解」をクリックして、サフィックスの内容をファイルにエクスポートします。

コマンド行からの LDIF へのエクスポート

ディレクトリのサフィックスまたはサブツリーを LDIF にエクスポートするときは、db2ldif コマンド (Solaris パッケージ内の directoryserver db2ldif) を使用します。このスクリプトは、サーバーが動作中または停止中に、サフィックスの内容のすべてまたは一部を LDIF ファイルにエクスポートします。

データベースの内容を LDIF ファイルにエクスポートするには、次のコマンドを使用します。

Solaris パッケージ

# /usr/sbin/directoryserver db2ldif

その他のインストール

# ServerRoot/slapd-serverID/db2ldif

次の例では、2 つのサフィックスが 1 つの LDIF ファイルにエクスポートされます。

db2ldif -a output.ldif \
        -s "dc=example,dc=com" -s "o=NetscapeRoot"

次の表に、これらの例で使用されている db2ldif のオプションを示します。

表 4-4    例で使用した db2ldif オプションの説明

オプション

内容

-a

サーバーがエクスポートした LDIF を保存する出力ファイル名を定義する。デフォルトでは、このファイルは ServerRoot/slapd-serverID ディレクトリに格納される

-s

エクスポートに取り込むサフィックスまたはサブツリーを指定する。複数の -s 引数を指定すると、複数のサフィックスまたはサブツリーを指定できる

db2ldif  コマンドに -r オプションを指定して、レプリケートされたサフィックスを LDIF ファイルにエクスポートすることもできます。結果として作成される LDIF ファイルには、レプリケーションメカニズムで使用される属性サブタイプが含まれています。あとでこの LDIF ファイルをコンシューマサーバーにインポートして、コンシューマレプリカを初期化できます。この手順については、「レプリカの初期化」を参照してください。

db2ldif  コマンドに -r オプションを指定して実行する場合、サーバーは停止している必要があります。サーバーをあらかじめ停止し、コマンドの終了後に起動してください。または、db2ldif.pl  スクリプトに -r オプションを指定します。この場合、サーバーを停止する必要はありません。

このスクリプトの使用方法の詳細は、『Sun ONE Directory Server Reference Manual』の第 2 章にある「db2lidf」を参照してください。

データのバックアップ

データのバックアップでは、データベースファイルが破損したり削除されたりする場合に備えて、ディレクトリの内容のスナップショットを保存できます。 Directory Server コンソールやコマンド行スクリプトを使用して、サフィックスのバックアップを行うことができます。



警告

バックアップの処理中には、サーバーを停止しないでください。



ここで説明するバックアップ手順では、サーバーファイルのコピーがデフォルトで同じホスト上に格納されます。セキュリティ強化のために、このバックアップを別のマシンや別のファイルシステムにコピーして格納してください。



これらの方法では、リモートサーバー上にある連鎖サフィックスをバックアップすることはできません。独立したサーバーは個別にバックアップする必要があります。



コンソールを使用したサーバーのバックアップ

Directory Server コンソールを使用してサーバーをバックアップする場合は、サーバーのすべての内容と、関連するインデックスファイルがバックアップ位置にコピーされます。バックアップは、サーバーが動作中でも実行できます。

サーバーコンソールを使用してサーバーをバックアップするには、次の手順を実行します。

  1. Directory Server コンソールの最上位にある「タスク」タブで、「Directory Server のバックアップ」の隣にあるボタンをクリックします。
  2. 「Directory Server のバックアップ」ダイアログボックスが表示されます。

  3. 「ディレクトリ」テキストボックスに、バックアップの格納先ディレクトリへの絶対パスを入力します。ディレクトリと同じマシン上でコンソールを実行している場合は、「参照」をクリックしてローカルディレクトリを選択します。
  4. または、「デフォルトの使用」をクリックして、バックアップを次のディレクトリに格納します。

    ServerRoot/slapd-serverID/bak/YYYY_MM_DD_hh_mm_ss

    ここで、serverID はディレクトリサーバーの名前です。ディレクトリ名は、バックアップが作成された日時を表わす形式で生成されます。

  5. 「了解」をクリックすると、バックアップが作成されます。

コマンド行からのサーバーのバックアップ

db2bak コマンド (Solaris パッケージ内の directoryserver db2bak) を使用すると、コマンド行からサーバーをバックアップできます。このスクリプトは、サーバーが動作中か動作中でないかにかかわらず実行できます。

ただし、この方法では設定情報をバックアップできません。設定情報のバックアップについては、「dse.ldif 設定ファイルのバックアップ」を参照してください。

ディレクトリをバックアップするには、次のコマンドを使用します。

Solaris パッケージ

# /usr/sbin/directoryserver db2bak backupDir

その他のインストール

# ServerRoot/slapd-serverID/db2bak backupDir

backupDir パラメータには、バックアップを格納するディレクトリを指定します。デフォルトでは、バックアップディレクトリ名は、現在の日付 YYYY_MM_DD_hh_mm_ss で生成されます。このスクリプトの使用方法の詳細は、『Sun ONE Directory Server Reference Manual』の第 2 章にある「db2bak」を参照してください。

dse.ldif 設定ファイルのバックアップ

Directory Server は、自動的に dse.ldif 設定ファイルをバックアップします。Directory Server を起動すると、dse.ldif ファイルのバックアップが、次のディレクトリの dse.ldif.startOKファイルに自動的に作成されます。

ServerRoot/slapd-serverID/config

cn=config ブランチの内容を変更する場合は、サーバーが dse.ldif ファイルに変更を書き込む前に、ファイルが config ディレクトリの dse.ldif.bak ファイルにバックアップされます。設定を保存する必要がある場合には、どちらかのファイルのコピーを作成してください。

バックアップからのデータの復元

次に、Directory Server コンソールまたはコマンド行を使用して、ディレクトリ内のサフィックスを復元する手順について説明します。「データのバックアップ」の手順に従って、サーバーのバックアップが作成されている必要があります。レプリケーションアグリーメントに関係しているサフィックスを復元する場合は、その前に 「レプリケートされたサフィックスの復元」をお読みください。



警告

バックアップや復元の処理中には、サーバーを停止しないでください。

サーバーを復元すると、既存のデータベースファイルが上書きされます。したがって、バックアップの作成時以降にデータに加えられた変更内容はすべて失われます。



レプリケートされたサフィックスの復元

サプライヤサーバーとコンシューマサーバーの間でレプリケートされるサフィックスを復元する場合は、特別な注意が必要です。可能な場合は、サフィックスを バックアップから復元するのではなく、レプリケーションメカニズムにより更新するようにしてください。ここでは、レプリカを復元すべき場合とその方法、お よび復元後にほかのレプリカとの同期を確保する方法について説明します。バックアップと復元を使用してレプリカを初期化する方法については、「レプリカの初期化」を参照してください。

シングルマスターモデルでのサプライヤの復元

シングルマスターサプライヤであるサフィックスには、レプリケーショントポロジ全体に対して権限のあるデータが含まれています。したがって、このサフィッ クスを復元することは、トポロジ全体のすべてのデータを初期化し直すことと同じです。シングルマスターを復元するのは、復元するバックアップの内容ですべ てのデータを初期化し直す場合に限定してください。

エラーのためにシングルマスターのデータを復旧できない場合は、コンシューマ上のデータを使用することも検討してください。これは、バックアップされた データより新しい更新がコンシューマ上のデータに含まれている可能性があるためです。この場合は、コンシューマレプリカから LDIF ファイルにデータをエクスポートし、この LDIF ファイルを使用してマスターを初期化し直します。

バックアップから復元する場合でも、LDIF ファイルをインポートする場合でも、このマスターレプリカから更新を受け取るすべてのハブレプリカとコンシューマレプリカをあとで初期化し直す必要があり ます。コンシューマの再初期化が必要であることを示すメッセージが、サプライヤサーバーのログファイルに記録されます。

マルチマスターモデルでのサプライヤの復元

マルチマスターレプリケーションでは、ほかの各マスターも、レプリケートされるデータに対してコピーする権限を持っています。現在のレプリカの内容が反映 されていない可能性があるため、古いバックアップを復元することはできません。可能な場合は、レプリケーションメカニズムにより、ほかのマスターの内容を 使用してマスターを更新するようにしてください。

それが不可能な場合は、次のどちらかの方法でマルチマスターレプリカを復元する必要があります。

  • もっとも簡単な方法として、バックアップから復元する代わりに、ほかのマスターの 1 つを使用して目的のマスターを初期化し直します。これにより、目的のマスターに最新のデータが送られ、データはすぐにレプリケートできる状態になります。詳細は、「コンソールによるレプリカの初期化」または 「コマンド行によるレプリカの初期化」を参照してください。
  • 数百万のエントリを持つレプリカの場合は、新機能であるバイナリコピーを使用して、ほかのマスターの 1 つから作成したより新しいバックアップから復元することで、所要時間を短縮できます。詳細は、「バイナリコピーによるレプリカの初期化」を参照してください。
  • このマスターのバックアップが、ほかのどのマスターに対しても更新履歴ログの最長保存期間を過ぎていない場合は、このバックアップを使用してマスターを復元できます。更新履歴ログの保存期間については、「マルチマスターの詳細設定」を参照してください。このようにバックアップからマスターを復元すると、ほかのマスターはそれぞれの更新履歴ログを使用して、このマスターを更新します。これにより、バックアップの作成時以降に加えられた変更内容がすべてこのマスターに反映されます。

復元や再初期化の方法にかかわらず、初期化後のマスターレプリカは読み取り専用モードになります。この動作により、このレプリカとほかのマスターとの同期をとったあとに、書込み操作を許可できます。詳細は、「マルチマスター初期化後のマスター間の一致」を参照してください。

復元または初期化し直したマスターに書き込み操作を許可する前に、すべてのレプリカを反映させることができるので、ハブサーバーやコンシューマサーバーを初期化し直すことが不要になるという利点があります。

ハブの復元

この節の内容は、レプリケーションメカニズムで自動的にハブレプリカを更新できない場合だけに適用されます。たとえば、データベースファイルが破損した場 合や、レプリケーションが長時間にわたって中断された場合などに適用されます。このような場合は、次のどちらかの方法で、ハブレプリカを復元または初期化 し直す必要があります。

  • もっとも簡単な方法として、バックアップから復元する代わりに、ほかのマスターレプリカの 1 つを使用してハブを初期化し直します。これにより、ハブに最新のデータが送られ、データはすぐにレプリケートできる状態になります。詳細は、「コンソールによるレプリカの初期化」または 「コマンド行によるレプリカの初期化」を参照してください。
  • 数百万のエントリを持つレプリカの場合は、新機能であるバイナリコピーを使用して、別のハブレプリカから作成したより新しいバックアップから復元することで、所要時間を短縮できます。詳細は、「バイナリコピーによるレプリカの初期化」を参照してください。コピーできるほかのハブレプリカがない場合は、前述の方法でハブを初期化し直すか、可能な場合は次の方法でハブを復元する必要があります。
  • このハブのバックアップが、そのサプライヤ (ハブレプリカまたはマスターレプリカ) のどちらに対しても更新履歴ログの最長保存期間を過ぎていない場合は、このバックアップを使用してハブを復元できます。更新履歴ログの保存期間については、「マルチマスターの詳細設定」を参照してください。このようにバックアップからハブを復元すると、そのサプライヤはそれぞれの更新履歴ログを使用して、このハブを更新します。これにより、バックアップの作成時以降に加えられた変更内容が、すべてこのハブに反映されます。


  • ハブレプリカの復元や再初期化の方法にかかわらず、あとでこのハブのコンシューマをすべて初期化し直す必要があります。ほかのレベルのハブもすべて初期化し直す必要があります。



専用コンシューマの復元

この節の内容は、レプリケーションメカニズムで自動的に専用コンシューマレプリカを更新できない場合だけに適用されます。たとえば、データベースファイル が破損した場合や、レプリケーションが長時間にわたって中断された場合などに適用されます。このような場合は、次のどちらかの方法で、コンシューマを復元 または初期化し直す必要があります。

  • もっとも簡単な方法として、バックアップから復元する代わりに、そのサプライヤの 1 つ (マスターレプリカまたはハブレプリカ) を使用してコンシューマを初期化し直します。これにより、コンシューマに最新のデータが送られ、データはすぐにレプリケートできる状態になります。詳細 は、「コンソールによるレプリカの初期化」または 「コマンド行によるレプリカの初期化」を参照してください。
  • 数百万のエントリを持つレプリカの場合は、新機能であるバイナリコピーを使用して、別のコンシューマレプリカから作成したより新しいバックアップから復元することで、所要時間を短縮できます。詳細は、「バイナリコピーによるレプリカの初期化」を参照してください。コピーできるほかのコンシューマがない場合は、前述の方法でそのレプリカを初期化し直すか、可能な場合は次の方法でレプリカを復元する必要があります。
  • このコンシューマのバックアップが、そのサプライヤ (ハブレプリカまたはマスターレプリカ) のどちらに対しても更新履歴ログの最長保存期間を過ぎていない場合は、このバックアップを使用してコンシューマを復元できます。更新履歴ログの保存期間については、「マルチマスターの詳細設定」を参照してください。このようにバックアップからハブを復元すると、そのサプライヤはそれぞれの更新履歴ログを使用して、このハブを更新します。これにより、バックアップの作成時以降に加えられた変更内容が、すべてこのハブに反映されます。

コンソールからのサーバーの復元

ディレクトリデータが壊れた場合、Directory Server コンソールを使用して、以前作成されたバックアップからデータを復元できます。コンソールを使用してデータベースを復元するには、Directory Server を動作させておく必要があります。ただし、復元中に対応するサフィックスの処理を行うことはできません。

以前に作成したバックアップからサーバーを復元するには、次の手順を実行します。

  1. Directory Server コンソールの最上位にある「タスク」タブで、「Directory Server の復元」の隣にあるボタンをクリックします。
  2. 「Directory Server の復元」ダイアログボックスが表示されます。

  3. 「使用可能なバックアップ」リストからバックアップを選択します。あるいは、「ディレクトリ」テキストボックスに、有効なバックアップファイルの絶対パスを入力します。
  4. 「使用可能なバックアップ」リストには、デフォルトディレクトリに置かれているすべてのバックアップが表示されます

    ServerRoot/slapd-serverID/bak

  5. 「了解」をクリックすると、サーバーが復元されます。

コマンド行からのサーバーの復元

次に示すスクリプトを使用すると、コマンド行からサーバーを復元できます。

  • bak2db コマンド (Solaris パッケージ内の directoryserver bak2db) このスクリプトを使用する場合は、サーバーを停止させる必要がある
  • bak2db.pl Perl スクリプト (Solaris パッケージ内の directoryserver bak2db-task) このスクリプトを使用する場合は、サーバーを動作させておく必要がある

bak2db コマンド行スクリプトの使用

サーバーの停止中にコマンド行からディレクトリを復元するには、次の手順を実行します。

  1. root としてコマンド行に次のコマンドを入力し、サーバーを停止させます。

    Solaris パッケージ

    # /usr/sbin/directoryserver stop

    その他のインストール

    # ServerRoot/slapd-serverID/stop-slapd

  2. バックアップディレクトリへの絶対パスを指定して bak2db コマンドを使用します。

    Solaris パッケージ

    # /usr/sbin/directoryserver bak2db backupDir

    その他のインストール

    # ServerRoot/slapd-serverID/bak2db backupDir

  3. 適切なコマンドでサーバーを起動します。

    Solaris パッケージ

    # /usr/sbin/directoryserver start

    その他のインストール

    # ServerRoot/slapd-serverID/start-slapd

次の例では、デフォルトのバックアップディレクトリからバックアップを復元します。

# bak2db /var/Sun/mps/slapd-example/bak/2001_07_01_11_34_00

詳細については、『Sun ONE Directory Server Reference Manual』の第 2 章にある「insync」を参照してください。

bak2db.pl Perl スクリプトの使用

サーバーの動作中にコマンド行を使ってディレクトリを復元するには、次の Perl スクリプトを使用します。

Solaris パッケージ

# /usr/sbin/directoryserver bak2db-task

Windows プラットフォーム

cd ServerRoot
bin\slapd\admin\bin\perl slapd-serverID\bak2db.pl

その他のインストール

# ServerRoot/slapd-serverID/bak2db.pl

次の例では、ldif2db.pl スクリプトを使用して、LDIF ファイルをインポートします。-a オプションを指定すると、バックアップディレクトリの完全パスが表示されます。

UNIX シェルスクリプト

# use directoryserver bak2db-task on Solaris パッケージ installations
/var/Sun/mps/slapd-example/bak2db.pl \
  -D "cn=Directory Manager" -w password \
  -a /var/Sun/mps/slapd-example/bak/checkpoint

Windows バッチファイル

C:\Program Files\Sun\MPS\bin\slapd\admin\bin\perl.exe
 
C:\Program Files\Sun\MPS\slapd-example\bak2db.pl
  -
D "cn=Directory Manager" -w password
  -a C:\Program Files\Sun\MPS\slapd-example\bak\2001_07_01_11_34_00

詳細については、『Sun ONE Directory Server Reference Manual』の第 2 章にある「bak2db.pl」を参照してください。

dse.ldif 設定ファイルの復元

次のディレクトリ内に、dse.ldif ファイルのバックアップコピーが 2 つ作成されます。

ServerRoot/slapd-serverID/config

dse.ldif.startOK ファイルには、サーバー起動時に dse.ldif ファイルのコピーが記録されます。dse.ldif.bak ファイルは、dse.ldif ファイルに加えられた最新の変更内容のバックアップが含まれます。最新の変更内容を含むファイルを自分のディレクトリにコピーします。

dse.ldif 設定ファイルを復元するには、次の手順を実行します。

  1. root としてコマンド行に次のコマンドを入力し、サーバーを停止させます。

    Solaris パッケージ

    # /usr/sbin/directoryserver stop

    その他のインストール

    # ServerRoot/slapd-serverID/stop-slapd

  2. 次の設定ファイルを含むディレクトリに移動します。
  3. 正常であると考えられるバックアップ設定ファイルで dse.ldif ファイルを上書きします。たとえば、次のように入力します。
  4. cp dse.ldif.startOK dse.ldif

  5. 適切なコマンドでサーバーを起動します。

    Solaris パッケージ

    # /usr/sbin/directoryserver start

    その他のインストール

    # ServerRoot/slapd-serverID/start-slapd


前へ     目次     索引     ドキュメントホーム     次へ    
Copyright 2003 Sun Microsystems, Inc. All rights reserved.