3.2. Directory Server の復元
ハードウェア障害の後などの特定の状況では、Directory Server を復元する必要があります。これは、コマンドラインまたは Web コンソールを使用して実行できます。Directory Server は個別のデータベースの復元をサポートしない点に注意してください。
データベースにカスタムデータを入力する場合は、インポート機能を使用します。サーバーから特定のデータを LDIF 形式でインポートできます。詳細は、Directory Server へのデータのインポート を参照してください。
3.2.1. インスタンスの実行中にコマンドラインを使用した全データベースの復元 リンクのコピーリンクがクリップボードにコピーされました!
実行中の Directory Server インスタンスにすべてのデータベースを復元するには、dsconf backup restore コマンドを使用します。
前提条件
- Directory Server のバックアップがある。
-
dirsrvユーザーに、バックアップディレクトリーの読み取りパーミッションがある。 - Directory Server インスタンスが実行している。
手順
/var/lib/dirsrv/slapd-<instance_name>/bak/<instance_name>-YYYY_MM_DD_hh_mm_ssディレクトリーに保存されているバックアップから、すべてのデータベースを復元します。# dsconf <instance_name> backup restore /var/lib/dirsrv/slapd-<instance_name>/bak/<instance_name>-YYYY_MM_DD_hh_mm_ss The backup restore task has finished successfullyデータの復元に使用できるすべての追加設定を表示するには、
dsconf <instance_name> backup restore --helpコマンドの出力を参照してください。-
復元中の問題は、
/var/log/dirsrv/slapd-<instance_name>/errorsログを検索します。
3.2.2. インスタンスのオフライン時コマンドラインを使用した全データベースの復元 リンクのコピーリンクがクリップボードにコピーされました!
インスタンスのオフライン時にすべてのデータベースを復元するには、dsctl bak2db コマンドを使用します。
前提条件
- Directory Server のバックアップがある。
-
dirsrvユーザーに、バックアップディレクトリーの読み取りパーミッションがある。 - Directory Server インスタンスが実行していない。
手順
/var/lib/dirsrv/slapd-<instance_name>/bak/<instance_name>-YYYY_MM_DD_hh_mm_ssディレクトリーに保存されているバックアップから、すべてのデータベースを復元します。# dsctl <instance_name> bak2db /var/lib/dirsrv/slapd-<instance_name>/bak/<instance_name>-YYYY_MM_DD_hh_mm_ss/ bak2db successful必要に応じて、コマンドに
-vオプションを指定して詳細な出力を表示します。# dsctl -v <instance_name> bak2db /var/lib/dirsrv/slapd-<instance_name>/bak/<instance_name>-YYYY_MM_DD_hh_mm_ss/ ... DEBUG: Instance allocated DEBUG: OK group dirsrv exists DEBUG: OK user dirsrv exists DEBUG: systemd status -> True ... INFO: bak2db successful-
復元中の問題は、
/var/log/dirsrv/slapd-<instance_name>/errorsログを検索します。 オプション: インスタンスを起動します。
# *dsctl <instance_name> start`
3.2.3. Web コンソールを使用した全データベースの復元 リンクのコピーリンクがクリップボードにコピーされました!
Directory Server は、Web コンソールを使用したデータの復元をサポートします。
前提条件
-
バックアップが、
/var/lib/dirsrv/slapd-<instance_name>/bak/ディレクトリーに保存されている。 -
dirsrvユーザーに、バックアップディレクトリーの読み取りパーミッションがある。 - Web コンソールでインスタンスにログインしている。
手順
-
Actionsメニューをクリックして、Manage Backupsを選択します。表示されるウィンドウには、/var/lib/dirsrv/slapd-<instance_name>/bak/ディレクトリーで利用可能なバックアップが表示されます。 -
復元するバックアップの横にある
Actionsメニューを開き、Restore Backupを選択します。 - をクリックして確定します。
-
復元中の問題についてログを確認するには、
メニューを開きます。
3.2.4. 複製されたエントリーが含まれるデータベースの復元 リンクのコピーリンクがクリップボードにコピーされました!
サプライヤーサーバーを復元すると、いくつかの状況が発生する可能性があります。
コンシューマーサーバーも復元される。
(データが同期されるように) 全く同じ時間に作成されたバックアップからすべてのデータベースを復元するような非常にまれな状況においては、コンシューマーはサプライヤーと同期が取れた状態のままであるため、特に何もする必要はありません。レプリケーションは中断せずに再開します。
サプライヤーだけが復元される。
サプライヤーのみが復元された場合や、コンシューマーが別のバックアップから復元された場合は、サプライヤーがコンシューマーを再初期化して、データベースのデータを更新します。
サプライヤーサーバーで変更ログエントリーの有効期限がまだ切れていない。
データベースのバックアップの取得後にサプライヤーの変更ログが期限切れになっていない場合は、ローカルコンシューマーを復元し、通常の操作を継続します。この状態は、
cn=changelog,cn=<database_name>,cn=ldbm database,cn=plugins,cn=configエントリーで、changelog の最大有効期限属性nsslapd-changelogmaxageに設定された値よりも短い期間内にバックアップを作成した場合に限り発生します。Directory Server は、レプリカとその変更ログの間の互換性を自動的に検出します。不一致が検出されると、サーバーは古い変更ログファイルを削除し、空のファイルを新たに作成します。
変更ログエントリーが、ローカルバックアップを作成した後にサプライヤーサーバー上で期限切れになる。
変更ログエントリーの有効期限が切れている場合は、コンシューマーが再初期化される。
例3.1 Directory Server のレプリケーショントポロジーの復元
2 つのサプライヤーと 2 つのコンシューマーサーバーで構成されるレプリケーション環境のサーバーをすべて復元するには、以下を実行します。
- restore または import のいずれかを使用して、最初のサプライヤーを再初期化します。
レプリケーションを使用して残りのサーバーをオンラインに初期化します。
- 最初のサプライヤーから 2 番目のサプライヤーを初期化します。
- サプライヤーからコンシューマーを初期化します。
- 各サーバーでレプリケーションのステータスを表示し、レプリケーションが正しく機能していることを確認します。
復元操作中に、復元されたデータベースに関連する変更ログが削除されます。再初期化が必要であることを示すメッセージが、サプライヤーサーバーのログファイルに記録されます。
3.2.5. 設定ファイル、証明書データベース、およびカスタムスキーマファイルの復元 リンクのコピーリンクがクリップボードにコピーされました!
設定ファイル、証明書データベース、カスタムスキーマファイルをバックアップから手動で復元できます。
前提条件
- Directory Server のバックアップがある。
-
dirsrvユーザーには、/var/lib/dirsrv/slapd-<instance_name>/bak/バックアップディレクトリーの読み取りパーミッションがある。 - Directory Server インスタンスが実行していない。
手順
バックアップディレクトリーから Directory Server 設定ディレクトリーに、復元するファイルをコピーします。たとえば、
dse.ldif設定ファイルを復元するには、次のように入力します。# cp /var/lib/dirsrv/slapd-<instance_name>/bak/<example_backup>/config_files/dse.ldif /etc/dirsrv/slapd-<instance_name>/インスタンスを起動します。
# dsctl <instance_name> start
検証
サーバーがサーバー設定を復元したことを確認します。
# dsconf <instance_name> config get