2 つのサーバーの間で 1 つまたは複数のサフィックスのレプリケーションを設定するたびに、スキーマ定義も自動的にレプリケートされます。スキーマ定義の自動レプリケーションにより、すべてのレプリカが、コンシューマにレプリケート可能なすべてのオブジェクトクラスと属性を定義する完全な同一のスキーマになります。マスターサーバーもマスタースキーマを格納します。
ただし、スキーマレプリケーションは、LDAP を経由してスキーマを変更した場合でも、即時に実行されません。スキーマレプリケーションは、ディレクトリデータの更新によって、またはスキーマ変更後の最初のレプリケーションセッションの開始時にトリガーされます。
すべてのレプリカにスキーマを適用するには、少なくともすべてのマスターでスキーマ検査を有効にする必要があります。スキーマは、LDAP 処理が行われるマスターでチェックされるため、コンシューマの更新時はチェックの必要はありません。パフォーマンスを向上させるために、レプリケーションメカニズムではコンシューマレプリカでのスキーマ検査を行いません。
ハブと専用コンシューマでは、スキーマ検査を無効にしないでください。スキーマ検査は、コンシューマのパフォーマンスに影響を与えません。スキーマ検査は常に有効にして、レプリカの内容がそのスキーマと一致するようにします。
コンシューマの初期化時に、マスターサーバーはスキーマをコンシューマに自動的にレプリケートします。さらに、DSCC またはコマンド行ツールから、スキーマが変更された場合にも、マスターサーバーは自動的にスキーマをレプリケートします。デフォルトで、スキーマ全体がレプリケートされます。コンシューマに存在していない追加のスキーマ要素は、コンシューマで作成され、99user.ldif ファイルに保存されます。
たとえば、マスターサーバーの起動時に、サーバーの 98mySchema.ldif ファイルにスキーマ定義が含まれているとします。さらに、ほかのサーバー、マスター、ハブ、または専用コンシューマのいずれかに対するレプリケーションアグリーメントを定義するとします。このマスターからレプリカを初期化すると、レプリケートされたスキーマには 98mySchema.ldif からの定義が含まれますが、レプリカサーバー側の 99user.ldif にもこの定義が格納されます。
コンシューマの初期化時にスキーマがレプリケートされたあとで、マスター側の cn=schema でスキーマを変更すると、マスターはスキーマ全体をコンシューマにもレプリケートします。このように、コマンド行ユーティリティーまたは DSCC からマスタースキーマに加えた変更は、コンシューマにレプリケートされます。これらの変更はマスターの 99user.ldif に保存され、先述した同じメカニズムによって、変更がコンシューマの 99user.ldif にも保存されます。
レプリケート環境で整合性のあるスキーマを維持するには、次のガイドラインに留意します。
コンシューマサーバーのスキーマを変更しない。
コンシューマサーバーのスキーマを変更すると、レプリケーションエラーが発生する可能性があります。これは、コンシューマのスキーマの違いによって、サプライヤからの更新がコンシューマのスキーマに一致しなくなる可能性があるためです。
マルチマスターレプリケーション環境では、1 つのマスターサーバーでスキーマを変更する。
2 つのマスターサーバーのスキーマを変更すると、最後に更新されたマスターのスキーマがコンシューマに伝達されます。コンシューマのスキーマがほかのマスターのスキーマと一致しなくなる可能性があります。
部分レプリケーションを設定する場合は、次のガイドラインにも留意します。
部分レプリケーションの設定ではサプライヤがスキーマをプッシュするため、部分コンシューマレプリカのスキーマは、マスターレプリカのスキーマのコピーとなります。このため、適用される部分レプリケーション設定には対応しません。
一般に、Directory Server はスキーマ違反を回避するために、スキーマに定義されている各エントリのすべての必須属性をレプリケートします。必要な属性をフィルタで除外する部分レプリケーションを設定する場合、スキーマ検査を無効にする必要があります。
スキーマ検査で部分レプリケーションが有効になっていると、レプリカをオフラインで初期化できなくなる可能性があります。Directory Server では、必要な属性をフィルタで除外した場合に、LDIF からデータをロードできません。
部分コンシューマレプリカで、スキーマ検査を無効にしている場合、その部分コンシューマレプリカが存在するサーバーインスタンス全体に、スキーマ検査が適用されません。その結果、サプライヤレプリカが、部分コンシューマと同じサーバーインスタンスに設定されません。
デフォルトでは、レプリケーションメカニズムによってスキーマがレプリケートされるたびに、スキーマ全体がコンシューマに送信されます。スキーマ全体をコンシューマに送信することが望ましくない状況は 2 つあります。
DSCC またはコマンド行から cn=schema に加える変更は、ユーザー定義のスキーマ要素だけに対象が限定され、すべての標準スキーマは変更されません。スキーマを頻繁に変更する場合、未変更のスキーマ要素を含む大規模な要素セットを毎回送信することはパフォーマンスに影響します。ユーザー定義のスキーマ要素だけをレプリケートすることで、レプリケーションとサーバーのパフォーマンスを向上できます。
Directory Server のマスターが Directory Server 5.1 のコンシューマにレプリケートすると、これらのバージョンの設定属性のスキーマが異なり、競合が発生します。この場合は、ユーザー定義のスキーマ要素のみをレプリケートする必要があります。
Directory Server は 11rfc2307.ldif スキーマファイルを使用します。このスキーマファイルは、RFC 2307 に準拠しています。
Directory Server 5.2 より前の Directory Server のバージョンでは 10rfc2307.ldif スキーマファイルを使用します。
DSCC を使用してこのタスクを実行することはできません。次の手順に示すように、コマンド行を使用します。