2011-08-10 11 views
6

を取り消された場合、サーバーのレプリケーションにサーバーの間に何が起こる私は、サーバーのレプリケーションシナリオに次のロータスドミノサーバーで何が起こるかを理解したいと思います:読者のアクセスが

  • サーバAは、データベースのレプリカを持っています。
  • サーバーBには、同じデータベースのレプリカがあります。
  • 両方のサーバーには、文書の削除権限を含むデータベースへの管理者アクセス権があります。
  • レプリケータプロセスはAとBを複製しただけで、すべてが同期しています。
  • データベースには、両方のサーバーが記載されているリーダーフィールドを持つメモが含まれています。
  • サーバーAでは、サーバーBの項目が「リーダー」フィールドから除去されます。
  • サーバAは、私はそのサーバーがA、Bは、レプリケーションを開始し、シナリオのバリエーションがありますが、サーバーBからBに複製サーバCの文書を削除することを期待B.
  • このシナリオでは

とレプリケーションを開始

私は、この予想を踏まえて構築されたアプリケーションを持っており、ほとんどの場合うまくいきました。しかし、サーバーBに残っており、複製プロセスから除外されている注釈があります。 OIDは異なるままです。 DSNが両方のノートで更新され、レプリケーションプロセスで何の結果も得られない場合があります。

+0

また、これをServerFaultに投稿することもできます。 –

+0

このプロセスは「うまくいく」べきです。しかし、上で説明した簡単なシナリオでも、私は複製していないノートを見ます。 C-APIでは、これらのノートを見つけるためのアプリケーションを構築しました。概念は素晴らしいです、私はそれを使用して、リーダーサイトに基づいて異なるサイトにデータのサブセットを配布します。 –

+1

ACLロールまたはACLグループベースの選択レプリケーションを使用する方が優れています。レプリケーションプロセスは最初からメモに入っており、正しく使用すると信じられないほど強力ですが、私が今までに見つけたものとは違うセキュリティモデルを理解する必要があります。 – AndrewB

答えて

1

IBMはこのためSPRを作成しました:

問題通常、スケジュールされたレプリケーションが行われた後、サーバーは、 文書の読者フィールドから削除されたときに、ドキュメントがあるため、サーバーから を削除されますそのサーバーは文書 にアクセスできなくなりました。場合によっては、プライマリサーバー上のドキュメントの リーダーフィールドからセカンダリサーバーを削除すると、2台のサーバー間で のレプリケーションが行われた後に、ドキュメントが が期待通りに削除されません。 レプリケーションを有効にすると、ソースサーバー上で次のエラーが表示されます。 "この操作を実行する権限がありません。 "。レプリケーション の履歴を消去して、両方のサーバーからレプリケーションを開始しても、問題が解決されない場合は、 さらに調査すると、セカンダリサーバ上の 文書のシーケンス番号は であり、 プライマリサーバの文書よりも最近更新されたことを意味します。通常、文書に読者 フィールドが含まれていない場合、または複製に関係する両方のサーバーが文書の両方のコピーの リーダーフィールドにリストされている場合は、両方のサーバーで文書が変更されたときにレプリケーションの競合が発生します( )。 レプリケーションが実行されます。しかし、この特定の状況では、 セカンダリサーバは プライマリサーバ上のドキュメントにアクセスできないため、レプリケーションは期待どおりに失敗し、レプリケーション の競合は生成されません。これは、競合ドキュメント を生成するために、両方のサーバーがドキュメントにアクセスできる必要があります。

1.短期的な解決策は、セカンダリサーバーの の文書よりもシーケンス番号が高くなるように、プライマリサーバー上の文書を変更することです。レプリケーションが行われた後、 の変更はセカンダリサーバーにレプリケートされ、ドキュメントは期待どおりセカンダリサーバーから削除されます( )。 2.)より永続的な解決策は、ユーザーとサーバーが同じサーバーの文書に変更を加えないようにすることです( 時)。また、複製を頻繁に行うと、 のような状態が発生する機会を減らすのに役立ちます。 サーバで変更が行われる前に、あるサーバで行われた変更が を複製する可能性があるためです。この問題の問題は、SPRの下で追跡されています。MKHS8MLQVD

0

サーバーを統合していて、うまくいかなかったようなことがありました。サーバーA /サーバーBのシナリオを使用した場合、サーバーBはサーバーAで複製され、文書はサーバーBから消えました。残念ながら、これは削除として追跡されました。したがって、AとBが再度複製すると、サーバーから文書が削除されましたA.

幸いにもバックアップがありました。

+0

複製は、削除(スタブ)になりません。なぜこれが削除として追跡されたのか考えていますか?私が期待する唯一の削除は削除スタブを残すことなくパージです。 –

+0

レプリケーションの競合のために文書が消えた可能性があります。メイン文書を削除した場合、競合文書は自動的には表示されませんが、あるサーバ上の文書は表示できますが他のサーバでは表示できない場合は、レプリケーションの競合を探すために特別なビューが必要ですが、迷惑をかけても、潜在的に貴重なデータの損失を防ぐために、自動的に作成されるので、多くの機会にベーコンを保存しています。 – AndrewB

2

これは簡単な落とし穴です。リーダーフィールドを使用してサーバー間のレプリケーションを制御する必要はありません。ユーザーとグループを制御するのは素晴らしいですが、レプリケーショングループ内のすべてのサーバーは常にすべてのものにアクセスする必要があります。

文書がサーバBに残されているか更新されていないのは、文書の読者フィールドからサーバBを削除するとサーバに見えなくなるため、変更されたか削除されたのか分かりません。サーバーBでサーバーAの削除が選択された理由は、削除によって文書がUNIDよりも少し削除された削除スタブに変換されるため、サーバーBへの削除が「可視」になります。プッシュレプリケーションが問題のドキュメントを無視するので、サーバAがサーバBにドキュメントを見ることを許可されていないことをサーバAが知るので、サーバAもサーバBに書き込むようにする。

+0

ローカルレプリカはどうですか?ローカルレプリカを複製するサーバーではなく、サーバーBがLotusクライアントである場合は、正常に動作するはずですか?サーバー間のレプリケーションを制御するために読者フィールドを使用してはならない理由をサポートする資料はありますか? –

+0

グループ名またはACLロールを含む読者フィールドは、Lotus Notesクライアントに複製する内容を制御する優れた方法ですが、複製の仕方は同じですがプロセスは同じです。私はドキュメンテーションを持っていない、10年の経験。サテライト・サーバー上に文書のサブセットを作成したい場合は、選択複製を使用して、透過的で、データ損失のリスクなしに文書化と変更が容易になります。 – AndrewB

2

実際、私はAndrewBの答えに同意しません。私の経験では、それはあなたの期待通りに動作するはずです。 readernamesフィールドを使用してレプリケーションを制御することは、私の標準的な目的の15年以上にわたるものです。私は選択レプリケーションの選択肢よりもはるかに信頼性が高いことを発見しました。これは悪いことですが、避けてください。

一度readeramesフィールドにserverBのエントリが含まれなくなると、ノート自体はserverBには表示されませんが、が変更されたという事実ははレプリケータには見えません。リプリケータはこれに気づき、serverBがドキュメントに対する権利を持っていないことを確認し、スタブを離れずに削除します。

両側のレプリケーション履歴を消去しようとしましたか?

+0

はい、私は両方のレプリケーション履歴を消去しようとしました。 –

関連する問題