この節では、トポロジを分析して、再初期化の必要なシステムを判別する方法について説明します。また、レプリケーショントポロジの再初期化に使用可能な方法についても説明します。
レプリカを再初期化する場合、すべてのコンシューマレプリカも再初期化する必要があります。
トポロジを再初期化するときは、サプライヤからデータの適正なコピーを取得して、トポロジ内のコンシューマ上の不良データを上書きします。トポロジを再初期化する前に、同期されていない、再初期化の必要なシステムを特定してください。この重要な手順を実行することにより、同期済みのデータを上書きして時間を浪費することを防げます。
例として、次の図にハブ 1 でレプリケーションが停止しているトポロジを示します。
ハブ 1 はデータをコンシューマ A と B に提供していたため、ハブ 1、コンシューマ A、およびコンシューマ B を再初期化する必要があります。
次の例では、コンシューマ A と B はハブ 2 からも更新を受信します。
コンシューマ A と B は、両方のハブから更新を受信するため、再初期化されたレプリカのサプライヤと同期可能です。そのステータスは、トポロジを再初期化するために選択するレプリカによって変化します。RUV を使用して最新の変更を確実に保持するようにしている場合は、これらのレプリカが最新であるためにコンシューマ A と B を再初期化せずに済む可能性があります。
次の手法を使ってトポロジを再初期化できます。
DSCC の使用。1 つのサーバーまたはいくつかの小規模データベースだけを再初期化する場合は、これが最善の手法です。
DSCC を使用したトポロジの再初期化の詳細については、「DSCC を使用してサフィックスを再初期化する」を参照してください。
以前のバージョンのコンソールを使って、Directory Server 5.x 上のレプリケーションを再初期化することはできません。
インポートおよびエクスポート操作の使用。
データをエクスポートしてから、そのデータをトポロジ内のほかのすべての場所でインポートすることにより、サフィックスを再初期化できます。この手法は大規模なシステムに適しており、1 つのサフィックスにのみ適用されます。
インポートとエクスポートを利用したレプリケーションの再初期化については、『Sun Java System Directory Server Enterprise Edition 6.3 管理ガイド』の「LDIF からのレプリカの初期化」を参照してください。
バイナリコピーの使用。
バイナリコピーにより、サーバーのバイナリバックアップファイルを使用して、別のサーバーに同じディレクトリの内容を復元することで、サーバー全体のクローンを作成できます。バイナリコピーを使用して、マスターまたはハブサーバーのバイナリコピーから任意のサーバーを再初期化できます。または別のコンシューマサーバーのバイナリコピーからコンシューマを再初期化できます。この手法は、Directory Server 5.2 以降で実行できます。5.x 以前のバージョンの Directory Server ではいくつかの制限事項がありますが、これがもっとも高速な手法です。
バイナリコピーを使用したレプリケーションの再初期化については、『Sun Java System Directory Server Enterprise Edition 6.3 管理ガイド』の「バイナリコピーを使用したレプリケートされたサフィックスの初期化」を参照してください。
どの再初期化手法でも不要なデータがコピーされます。たとえば、削除された値または状態情報を保持する値を含むデータや、その他の履歴データなどです。この不要なデータのために、ディスク上のエントリが大きくなります。また、エントリの状態情報の削除が必要になることもあります。レプリケーションの問題の根本原因が、この状態情報に関連している場合は、データが引き続きデータベース内に存在しているため、別のレプリケーションエラーの原因になる可能性があります。この不要で疑わしいデータをインポートすることを避けるために、トポロジのクリーンな再初期化を実行できます。
クリーンな再初期化を実行する際、より小さいデータベース、インデックス、および空の更新履歴ログを含むデータのクリーンなマスターコピーを作成します。クリーンな再初期化では、データベースファイルのバックアップコピーを作成しないため、ディスクスペースの消費が少なく、処理に要する時間も少なくなります。さらに、パフォーマンス低下の原因になり得るインデックスの断片化も減少します。ただし、データベースファイルを一貫した状態に保つため、クローン作成の対象となるサーバーを停止する必要があります。
マスターサーバーを停止します。
dsadm コマンドを使用して、データベースの内容をエクスポートします。
-Q オプションを使用して、レプリケーション情報をエクスポートから除外します。
# dsadm export -Q instance-path suffix-DN /tmp/clean-export.ldif |
dsadm コマンドを使用して、エクスポートしたデータを同じマスターサーバーに再インポートします。
# dsadm import instance-path /tmp/clean-export.ldif suffix-DN |
マスターサーバーを再起動します。
これで、マスターサーバーに含まれるデータはクリーンになりました。つまり、より小さいデータベース、インデックス、および空の更新履歴ログがマスターサーバーに含まれています。
クリーンなマスターデータを、システム内のほかのすべてのサーバーにインポートします。
「再初期化の手法の概要」で説明した 3 つの手法のいずれかを使用します。
マスターサーバーを停止します。
db2ldif スクリプトを -r オプションを指定せずに実行して、データベースの内容をエクスポートします。
# db2ldif -n database1 -a /tmp/clean-export.ldif |
ldif2db スクリプトを使用して、エクスポートしたデータを同じマスターサーバーに再インポートします。
# ldif2db -n database1 -i /tmp/clean-export.ldif |
マスターサーバーを再起動します。
これで、マスターサーバーに含まれるデータはクリーンになりました。つまり、より小さいデータベース、インデックス、および空の更新履歴ログがマスターサーバーに含まれています。
クリーンなマスターデータを、システム内のほかのすべてのサーバーにインポートします。
「再初期化の手法の概要」で説明した 3 つの手法のいずれかを使用します。
この手法には、サプライヤとコンシューマサフィックス間のレプリケーションアグリーメントが必要です。この手法を使用して、1 つのサフィックスを再初期化するか、または小さいサフィックスを多数再初期化します。
以前のバージョンの Directory Server コンソールを使用している場合は、「設定」パネルを表示して「レプリケーション」ノードを選択します。コンシューマ内で初期化するサフィックスを選択します。コンシューマに対するレプリケーションアグリーメントを選択します。アグリーメントを選択して、コンシューマをすぐに初期化します。