15.2. レプリケーション関連のエラー、原因、および考えられる解決策の概要
以下は、レプリケーション関連のエラーおよび考えられるソリューションの概要です。
agmt=agreement_name (host_name:port) レプリカは、ローカルデータとは異なる世代 ID を有します
- 理由: メッセージの括弧内に指定されたコンシューマーがまだ正常に初期化されていないか、別のルートサプライヤーから初期化されました。
- 影響: ローカルのサプライヤーは、コンシューマーにデータを複製することはありません。
-
解決策: コンシューマーを初期化する前に発生する場合は、このメッセージを無視してください。または、メッセージが永続的であれば、コンシューマーを再初期化します。マルチサプライヤー環境では、すべてのサーバーは、ルートサプライヤーから直接または間接的に 1 回のみ初期化する必要があります。たとえば、サーバー
S1
は、S2
とS4
を初期化し、S2
はS3
を初期化します。注意すべき重要なことは、S2
の初期化が完了するまで、S2
はS3
の初期化を開始してはならないということです。このためには、S1
の Web コンソールから、またはS1
またはS2
のエラーログで合計更新ステータスを確認します。また、S2
はS1
を初期化してはなりません。
Warning: data for replica's was reloaded, and it no longer matches the data in the changelog.Recreating the changelog file.This could affect replication with replica's consumers, in which case the consumers should be reinitialized.
- 理由: このメッセージは、サプライヤーを再起動した場合にのみ表示されます。これは、サプライヤーが changelog を書き込みできないか、最後のシャットダウン時にレプリカ更新ベクトル (RUV) を消去できなかったことを示しています。前者はディスク領域の問題、後者はサーバーのクラッシュや不適切なシャットダウンなどが原因です。
-
影響: コンシューマーの
maxcsn
値がサーバーの変更ログに存在しなくなった場合、サーバーは変更をコンシューマーに送信できません。 - 対処法: サーバーのログディレクトリーの下にあるディスク容量と可能なコアファイルを確認します。これが単一サプライヤーレプリケーションの場合は、コンシューマーを再初期化します。それ以外の場合、サーバーが後でコンシューマーの変更シーケンス番号 (CSN) を見つけることができないと文句を言う場合は、コンシューマーが他のサプライヤーから CSN を入手できるかどうかを確認してください。そうでない場合には、コンシューマーを再初期化します。
Too much time skew
- 理由: ホストマシンのシステムクロックは同期が非常に低下します。
- 影響: Directory Server は、システムクロックを使用して CSN の一部を生成します。複数のサプライヤー間で変更シーケンスを反映させるために、サプライヤーは、他のサプライヤーのリモートクロックに基づいて、ローカルクロックを転送します。調整は一定量に制限されているため、許可される制限を超過すると、レプリケーションセッションが中止します。
-
対策: たとえば、
chronyd
サービスを設定することにより、Directory Server ホストマシンでシステムクロックを同期します。
agmt=agreement_name (host_name:port): 警告: endReplication 拡張操作を送信できません (error_message)
- 理由: コンシューマーが応答しない。
- 影響: コンシューマーが再起動せずに回復すると、サプライヤーからリリースロックメッセージを受け取らないと、コンシューマーのレプリカが永久にロックされる可能性が高くなります。
- 対策: コンシューマーがあらゆるサプライヤーから新しい変更を受け取ったり、レプリケーションモニターを開始できる場合に、このコンシューマーの全サプライヤーが、レプリカがビジーであることを警告しているかどうかを確認します。レプリカが永久にロックされ、サプライヤーを取得できない場合は、コンシューマーを再起動します。
Changelog is getting too big.
- 理由: changelog のパージがオフになっていて、それがデフォルトの設定になっているか、changelog のパージがオンになっていても一部のコンシューマーがサプライヤーよりもずっと遅れているかのどちらかです。
対策: デフォルトでは、changelog のパージはオフになっています。コマンドラインからオンにするには、次のように入力します。
#
dsconf -D "cn=Directory Manager" ldap://server.example.com replication set-changelog --max-age 1d --suffix "dc=example,dc=com"
1d
は 1 日を意味します。その他の有効な時間単位は、秒 (s
)、分 (m
)、時 (h
)、および週 (w
) になります。0
の場合は、パージをオフにします。changelog パージをオンにすると、5 分ごとにウェイクアップするパージスレッドは、その経過時間が設定した値よりも大きく、このサプライヤーまたはハブのすべての直接コンシューマーに再生された場合に変更を削除します。
パージのしきい値に達したときに changelog がパージされていないと思われる場合は、すべてのコンシューマー間でレプリケーションモニターからの最大遅延時間を確認します。パージのしきい値に関わらず、すべてのコンシューマーによって再生される前に変更がパージされることはありません。