(57)【要約】  複数のサイト間でデータをミラーリングするための方法および装置が提供される。レプリケーション関係が、第１のサイトおよび第２のサイトを含む複数のサイトの間で確立される。第１のサイトにおける第１のデータベースサーバが、第２のサイトで書込動作がミラーリングに首尾よく実行されなかったという指示を受信する。この指示に応じて、第１のデータベースは、クォーラムデバイスと通信することによってメンバーシップの投票動作を開始し、第１のデータベースサーバまたは第２のサイトに関連付けられる第２のデータベースサーバがレプリケーションメンバーシップから取り除かれるべきであるかを決定する。第２のサイトに関連付けられる第２のデータベースサーバのどちらがレプリケーションメンバーシップから取り除かれるべきだと決定されると、第１のデータベースサーバは、第２のサイトで書込動作がもはや複製されることになっていないことを示すメッセージを送信する。
2007518195.tif 000002
【特許請求の範囲】
【請求項１】
複数のサイト間でデータをミラーリングするための方法であって、
第１のサイトおよび第２のサイトを含む前記複数のサイト間でレプリケーション関係を確立するステップと、
前記複数のサイトのいずれかのサイトでなされる少なくともいくつかの変更を前記複数のサイトの他のサイトそれぞれに複製するステップと、
前記第１のサイトに関連付けられる第１のサーバが、書込動作の実行を要求するステップと、
前記要求に応じて、前記第１のサイトで前記書込動作を実行し、前記書込動作を前記第２のサイトでミラーリングすることを要求するメッセージを送信するステップと、
前記第１のサーバが、前記書込動作は前記第２のサイトで首尾よく実行されなかったという指示を受信するステップと、
前記指示に応じて、前記第１のサーバが、メンバーシップの投票動作を開始して、前記第１のサーバおよび前記第２のサイトに関連付けられる第２のサーバのうちのどちらが前記レプリケーションメンバーシップから取り除かれなければならないかを決定するステップと、
前記第２のサイトに関連付けられる前記第２のサーバが前記レプリケーションメンバーシップから取り除かれなければならないことが決定されると、前記第１のサーバが、書込動作が前記第２のサイトでもはや複製されることになっていないことを示すメッセージを送信するステップとを備える、データをミラーリングするための方法。
【請求項２】
前記第２のサイトが前記レプリケーション関係を再結合するステップと、
前記第２のサイトが前記レプリケーション関係を再結合することに応じて、前記第２のサイトに関連付けられるデータを前記第１のサイトに存在するデータに再同期化させるステップと、前記第２のサイトで、前記第２のサイトに関連付けられるデータベースを据え替えるステップとをさらに備える、請求項１に記載の方法。
【請求項３】
前記メンバーシップの投票動作の間に、前記第１のサイトが前記レプリケーションメンバーシップから取り除かれなければならないことが決定されると、データが前記第１のサイトでもはや複製されることになっていないことを前記第２のサイトに通知するステップをさらに備える、請求項１に記載の方法。
【請求項４】
通知する前記ステップは、前記第２のサイトに関連付けられるファイルサーバまたは前記第２のサーバに、データが前記第１のサイトでもはや複製されることになっていないことを前記第２のサイトで通知するステップを備える、請求項３に記載の方法。
【請求項５】
前記第１のサーバおよび前記第２のサイトに関連付けられる前記第２のサーバのうちどちらが前記レプリケーションメンバーシップから取り除かれなければならないかの決定は、前記第１のサーバまたは前記第２のサーバのうちどちらがより重要であり、またはより信頼性が高いかを決定するステップを備える、請求項１に記載の方法。
【請求項６】
クォーラムデバイスとして特定のデバイスを確立するステップをさらに備え、
メンバーシップの投票動作を開始する前記ステップは、
前記書込動作が成功不可能であったことを前記クォーラムデバイスに通知するステップと、
前記クォーラムデバイスが、前記第１のサーバおよび前記第２のサイトに関連付けられる前記第２のサーバのうちどちらが前記レプリケーションメンバーシップから取り除かれなければならないかを決定するステップとを備える、請求項１に記載の方法。
【請求項７】
前記クォーラムデバイスは複数のミラーリングされたデバイスを備え、前記クォーラムデバイスに通知する前記ステップはプライマリファイルサーバによって実行され、
前記プライマリファイルサーバは、前記複数のサイトのうちの１つに関連付けられるファイルサーバであり、このプライマリサーバを介して、前記複数のサイトの他のサイトに関連付けられる他の全てのファイルサーバは前記クォーラムデバイスと通信する、請求項６に記載の方法。
【請求項８】
前記書込動作が前記第２のサイトで首尾よく実行されなかったという指示は、前記第１のサイトで受信される入出力エラーである、請求項１に記載の方法。
【請求項９】
前記複数のサイトのうち特定のサイトが作動できなくなると、前記特定のサイトから前記複数のサイトの他の各サイトに伝送されたメッセージすべてがそれらの相手先で受信されたことが確定したあとに、前記特定のサイトのリカバリを開始するステップをさらに備える、請求項１に記載の方法。
【請求項１０】
複数のサイト間でデータをミラーリングするための、１つ以上の指示のシーケンスを記憶する、機械読み取り可能な媒体であって、
１つ以上のプロセッサによる前記１つ以上の指示のシーケンスの実行は、前記１つ以上のプロセッサに、
前記第１のサイトおよび第２のサイトを含む複数のサイト間でレプリケーション関係を確立するステップと、
前記複数のサイトのいずれかのサイトでなされる少なくともいくつかの変更を前記複数のサイトの他のサイトそれぞれに複製するステップと、
前記第１のサイトに関連付けられる第１のサーバが書込動作を実行することを要求するステップと、
前記要求に応じて、前記第１のサイトで前記書込動作を実行し、前記書込動作を前記第２のサイトでミラーリングすることを要求するメッセージを送信するステップと、
前記第１のサーバが、前記書込動作が前記第２のサイトで首尾よく実行されなかったという指示を受信するステップと、
前記指示に応じて、前記第１のサーバがメンバーシップの投票動作を開始して、前記第１のサーバおよび前記第２のサイトに関連付けられる第２のサーバのうちのどちらが前記レプリケーションメンバーシップから取り除かれなければならないかを決定するステップと、
前記第２のサイトに関連付けられる前記第２のサーバが前記レプリケーションメンバーシップから取り除かれなければならないことが決定されると、前記第１のサーバが、書込動作は前記第２のサイトでもはや複製されることになっていないことを示すメッセージを送信するステップとを実行させる、機械読み取り可能な媒体。
【請求項１１】
前記１つ以上のプロセッサによる前記１つ以上の指示のシーケンスの実行は、前記１つ以上のプロセッサに、
前記第２のサイトが前記レプリケーション関係を再結合するステップと、
前記第２のサイトが前記レプリケーション関係を再結合することに応じて、前記第２のサイトに関連付けられるデータを前記第１のサイトに存在するデータに再同期化させるステップと、前記第２のサイトで前記第２のサイトに関連付けられるデータベースを据え替えるステップとをさらに実行させる、請求項１０に記載の機械読み取り可能な媒体。
【請求項１２】
前記１つ以上のプロセッサによる前記１つ以上の指示のシーケンスの実行は、前記１つ以上のプロセッサに、
前記メンバーシップの投票動作の間に、前記第１のサイトが前記レプリケーションメンバーシップから取り除かれなければならないことが決定されると、データが前記第１のサ
イトでもはや複製されることになっていないことを前記第２のサイトに通知するステップをさらに実行させる、請求項１０に記載の機械読み取り可能な媒体。
【請求項１３】
通知する前記ステップは、前記第２のサイトに関連付けられるファイルサーバまたは前記第２のサーバに、データが前記第１のサイトでもはや複製されることになっていないことを前記第２のサイトで通知するステップを備える、請求項１２に記載の機械読み取り可能な媒体。
【請求項１４】
前記第１のサーバおよび前記第２のサイトに関連付けられる前記第２のサーバのうちどちらが前記レプリケーションメンバーシップから取り除かれなければならないかの決定は、前記第１のサーバまたは前記第２のサーバのうちどちらがより重要であり、またはより信頼性が高いかを決定するステップを備える、請求項１０に記載の機械読み取り可能な媒体。
【請求項１５】
前記１つ以上のプロセッサによる前記１つ以上の指示のシーケンスの実行は、前記１つ以上のプロセッサに、
クォーラムデバイスとして特定のデバイスを確立するステップを実行させ、
メンバーシップの投票動作を開始する前記ステップは、
前記書込動作が首尾よく実行されなかったことを前記クォーラムデバイスに通知するステップと、
前記クォーラムデバイスが、前記第１のサーバおよび前記第２のサイトに関連付けられる前記第２のサーバのうちどちらが前記レプリケーションメンバーシップから取り除かれなければならないかを決定するステップとを備える、請求項１０に記載の機械読み取り可能な媒体。
【請求項１６】
前記クォーラムデバイスは複数のミラーリングされたデバイスを備え、前記クォーラムデバイスに通知する前記ステップはプライマリファイルサーバによって実行され、
前記プライマリファイルサーバは、前記複数のサイトのうちの１つに関連付けられるファイルサーバであり、このプライマリサーバを介して、前記複数のサイトの他のサイトに関連付けられる他の全てのファイルサーバが前記クォーラムデバイスと通信する、請求項１５に記載の機械読み取り可能な媒体。
【請求項１７】
前記書込動作が前記第２のサイトで実行できなかったという指示は、前記第１のサイトで受信される入出力エラーである、請求項１０に記載の機械読み取り可能な媒体。
【請求項１８】
前記１つ以上のプロセッサによる前記１つ以上の指示のシーケンスの実行は、前記１つ以上のプロセッサに、
前記複数のサイトのうち特定のサイトが作動できなくなると、前記特定のサイトから前記複数のサイトの他の各サイトまで伝送されたメッセージすべてがそれらの相手先で受信されたあとに、前記特定のサイトのリカバリを開始するステップをさらに実行させる、請求項１０に記載の機械読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
本発明は複数のサイト間のデータのミラーリングに関する。
【背景技術】
【０００２】
発明の背景
データミラーリングは、データが第１の記憶装置に記憶されると同時に、このデータが第１の記憶装置から１つ以上の第２の記憶装置へコピーされる方法である。第１の記憶装置から１つ以上の第２の記憶装置へコピーされたデータは、第１の記憶装置で記憶されるデータの正確なコピーである。それゆえに、ミラーリングされたデータをバックアップすること、および災害の後に適時な方法によってデータを回復することの両方に、データミラーリングが有用である。データミラーリングは、データがミラー元から地理的に近い位置にコピーされるかまたは遠隔地にコピーされるかには依存しない。
【０００３】
図１は、データミラーリングへの第１のアプローチを利用するシステム１００を示すブロック図である。このブロック図において、サイトＡで記憶されたデータが、サイトＢにミラーリングされている。ファイルサーバ１３０は、データベース１４０において記憶されたデータをデータベース１４２に同期式に複製する。データベースサーバ１２０によって発行され、データベース１４０内のデータブロックを変更するトランザクションをファイルサーバ１３０が処理するたびに、ファイルサーバ１３０はこの変更を反映するメッセージをファイルサーバ１３２に伝送する。メッセージを受信すると即座に、ファイルサーバ１３２がデータベース１４２において記憶されたデータを更新し、データベース１４０でなされた変更を反映する。データベース１４２の更新は、たとえば、データベース１４０に実行されたのと同じ処理をデータベース１４２に実行する、またはデータベース１４２の不揮発性メモリを更新してデータベース１４０に記憶されたデータの現在の状態を反映する等、様々な方法を用いて行うことができる。
【０００４】
クライアント１１０およびクライアント１１２等のクライアントは、データベースのデータの読出または書込を行うために、データベースサーバにＩ／Ｏ要求を出してもよい。データベース１４０および１４２の整合性を確実にするために、システム１００の全てのクライアントは、全てのＩ／Ｏ要求をサイトＡのデータベースサーバ１２０を介して出し、したがってクライアントに関連するサイトに関係なく、全てのクライアントがミラーリングされているデータについて同じ画面を表示することを保証する。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
図１に示されるデータミラーリングのためのアプローチには、いくつかの問題がある。第１に、クライアント１１２等サイトＡに関連しないクライアントからのＩ／Ｏ要求は全て、性能上の不利益をこうむる可能性がある。それは、これらのクライアントが、異なるサイトのデータベースサーバにＩ／Ｏ要求を伝送しなければならないためである。クライアントからの全てのＩ／Ｏ要求は単一のデータベースサーバを介して送られるが、このデータベースサーバは要求側クライアントから地理的に遠隔に位置しうるため、遠隔に位置するこれらのクライアントが、Ｉ／Ｏ要求について伝送の大幅な遅延に直面する可能性がある。さらに、この単一のデータベースサーバは、システム１００のクライアントからの全てのＩ／Ｏ要求に対するボトルネックとして作用することになる。
【０００６】
第２に、サイトＡが作動できなくなると、たとえばファイルサーバｌ３０がクラッシュ
し利用できなくなると、ついで、サイトＢ等、故障したサイトＡのシステムと置き換わるバックアップシステムが動作可能となるまで、データベースサーバ１２０およびデータベースサーバ１２０に接続するシステム１００の全てのクライアントは、一時的に使えなくなる。
【０００７】
第３に、ファイルサーバ１３０がファイルサーバ１３２に書込動作を複製することができない場合、それはおそらく、ファイルサーバ１３０およびファイルサーバ１３２間の通信リンクが実行できなくなるためであるが、１つ以上の書込動作が複製されることができないために、データベース１４０および１４２がもはや相互に同期化されないので、その結果、発生した問題から回復するためにデータベース１４０またはデータベース１４２がバックアップシステムとして使用されなければならないかどうかを、注意して決定しなければならない。あるデータベースがバックアップシステムとして選ばれ、その選ばれたデータベースがシステムの全てのデータベースに実行された書込動作を全て反映しなければ、データベースになされた変更は失われることになる。
【０００８】
図２は、データミラーリングのための第２のアプローチを示すブロック図である。図２が示すように、各サイトに格納された各データベースは、２つ以上のパーティションに分割される。たとえば、データベース２４０は、パーティションＡおよびＢ’を有し、データベース２４２はパーティションＡ’およびＢを有する。データベース２４０におけるパーティションＡに記憶されたデータは、データベース２４２におけるパーティションＡ’にミラーリングされ、データベース２４２におけるパーティションＢに記憶されたデータは、データベース２４０におけるパーティションＢ’にミラーリングされる。データベース２４０はパーティションＡのプライマリサイトと考えられ、データベース２４２はパーティションＢのプライマリサイトと考えられる。
【０００９】
クライアントからのデータの書込または読出要求がローカルに実行され得る（すなわち、要求を出すクライアントおよび要求にサービスするデータベースが両方とも同じサイト内にある）のは、その要求がそのサイトでミラーリングされているパーティションにおいて記憶されたデータに関与するとき、かつそのときに限る。たとえば、クライアント２１０が書込または読出要求をパーティションＡのデータブロックに出すと、その要求がデータベース２４０でローカルに実行され得る。しかしながら、クライアント２１０が、パーティションＢのデータブロックに書込または読出要求を出すと、その要求がデータベース２４２で実行可能になるようにデータベースサーバ２２０はファイルサーバ２３２にその要求を送る。この方法によってはプライマリサイトがリモートサイトであるパーティション内のデータに対するトランザクションを処理する性能遅延は減少しないが、このようにデータを分割することによって、プライマリサイトがローカルサイトであるパーティション内のデータに対するトランザクションを処理する性能遅延が減少するのに役に立つ。
【００１０】
しかしながら、データがサイト間で複製されることができない場合、または、特定のサイトが実行不可能になる場合には、このアプローチには問題がある。データが第１のサイト（プライマリサイト）の１つのパーティションから第２のサイト（セカンダリサイト）の対応するパーティションに複製されることができないときには、プライマリサイトのデータベースは複製が成功していなかったことを通知されない。その結果、セカンダリサイトの反復データを記憶するパーティションは、古くなる可能性がある。それ以降、プライマリサイトが実行不可能になる場合、その中に記憶されるデータが古いために、ついで、セカンダリサイトの反復データを記憶するパーティションは、プライマリサイトを実行不可能な状態から復旧するのに使用されることができない。古いデータを使用することは、データベースの一貫性の原則を妨げる。
【００１１】
したがって、従来技術において取り組まれていない必要性があり、その必要性とはデー
タをミラーリングしつつ、上述のアプローチに関連付けられる問題を回避することである。
【課題を解決するための手段】
【００１２】
この項に記述されるアプローチは、実行されることのできる方法であるが、必ずしも前述で考えられたか、または実行された方法ではない。したがって、特に明記しない限り、単にこの項に含まれるだけで、この項に記述された方法のいずれもが従来の方法として見なすものと想定されるべきではない。
【発明を実施するための最良の形態】
【００１３】
本発明は、添付の図面により、限定するものとしてではなく、例として示されており、この図面において、同じ参照番号は類似の要素を示す。
【００１４】
発明の詳細な説明
複数のサイト間のデータをミラーリングするための方法およびシステムが記載されている。以下の記載では、説明の目的で、本発明を完全に理解するための数多くの具体的な詳細が記載される。しかしながら、これらの具体的な詳細なしで、本発明が実施されてもよいことは明らかである。他の例では、本発明を不必要に不明確にすることを回避するために、よく知られた構造およびデバイスがブロック図形式で示される。
【００１５】
（アーキテクチャの概要）
図３は、本発明の一実施形態による、データミラーリングシステム３００を示すブロック回路図である。データミラーリングシステム３００は、データミラーリングシステム３００の各サイト間のデータを双方向に複製するために使用されることができる。さらに、本願明細書において記述されるように、データミラーリングシステム３００を使用して、他の利点が達成され得る。図３のデータミラーリングシステム３００は、サイト３１０およびサイト３１２と、クライアント３２０およびクライアント３２２と、データベースサーバ３３０およびデータベースサーバ３３２と、ファイルサーバ３４０およびファイルサーバ３４２と、データベース３５０およびデータベース３５２と、クォーラムデバイス３６０と、通信リンク３７０、３７２、３７４および３７６とを含む。
【００１６】
概して本願明細書において使用されるように、サイトはデータミラーリングシステム３００における物理的なコンポーネントの論理グループを示す。データミラーリングシステム３００において、データは第１のサイトから第２のサイトに複製されることができる。データミラーリングシステム３００の数多くのコンポーネントが、単一サイトに格納されることができる。たとえば、単一サイトは、１つ以上のクライアントと、１つ以上のデータベースサーバと、１つ以上のファイルサーバと、１つ以上のデータベースと、１つ以上のクォーラムデバイスとを備えることができる。サイトの物理的なコンポーネントの論理グループは、様々な大きさの領域内に物理的に設置されることができる。たとえば、サイトは、特定の建物や、建物の特定の階、または、建物の特定の部屋に対応することができる。サイトは、他のひとつに物理的に間近にあっても遠隔にあってもよい。説明を簡単にするために、図３は２つのサイトのみを記載するが、実施形態におけるサイトの数はいくつであってもよく、サイトが1つだけのものも含まれる。
【００１７】
概して本願明細書において使用されるように、クライアントは、サービスのための要求を出すことの可能な、任意のソフトウェアまたはハードウェアコンポーネントを示す。たとえば、データベースサーバに要求を出すことの可能なコンポーネントは、一般的にデータベースクライアントと呼ばれる。説明を簡単にするために、図３において各サイトは単一のクライアントで示されるが、サイトは多くのクライアントを含んでもよい。クライアント３２０および３２２等の、クライアントの限定されない例示の実施例は、ソフトウェ
アアプリケーションと、パーソナルコンピュータと、データベースサーバに要求を出すことのできるマシンと、データベースサーバとを含む。
【００１８】
データベースサーバ３３０およびデータベースサーバ３３２等のデータベースサーバは、データを管理するために使用される１つ以上のソフトウェアおよび／またはハードウェアコンポーネントである。データベース管理の他の機能のうち、データベースサーバは、一般的に、データベースへのアクセスを制御し促進し、かつ、データベースクライアントによる要求を処理してデータベースにアクセスする。２台のデータベースサーバ、すなわちデータベースサーバ３３０およびデータベースサーバ３３２のみが図３に表されるが、多くのデータベースサーバが、データミラーリングシステム３００において用いられることができる。
【００１９】
本願明細書において広く使用されるように、ファイルサーバはファイル処理および記憶機能性を実行できるどのようなハードウェアまたはソフトウェアコンポーネントをも示す。ファイルサーバ３４０およびファイルサーバ３４２等のファイルサーバは、データベースサーバから受信されてデータベースに実行される書込および読取動作を処理する。データベース管理システムまたはデータベース管理システムの中のモジュールと分離し独立して実行するシステムをファイルサーバが含むことができるため、「ファイルサーバ」なる用語が広く本願明細書において使用されることに注意されたい。
【００２０】
データベース３５０およびデータベース３５２等のデータベースは、電子情報の持続的記憶装置である。データベースの限定されない例示の実施例は、リレーショナルデータベースと、オブジェクト指向データベースと、多次元的データベースと、コンピュータの分散されたクラスタにあるデータベースと、サーバブレードのグリッドにあるデータベースとを含む。データベースサーバの分散されたクラスタは、全体として本願明細書に引用している米国特許番号第６３５３８３６号においてさらに詳細に説明される。データベースサーバの一組が走るグリッドは、全体として本願明細書に引用している米国仮特許出願番号第６０／５０００５０号においてさらに詳細に説明される。
【００２１】
本願明細書において広く使用されるように、クォーラムデバイスはメンバーシップ投票の動作を実行することのできるソフトウェアコンポーネントのあらゆるハードウェアを示す。一実施形態において、メンバーシップの投票動作は、どのデータベースサーバ（複数）が複製メンバーシップから取ら除かれるべきかを決定する。クォーラムデバイス３６０等のクォーラムデバイスの動作は、「双方向多重化」と題される項において以下にさらに詳細に説明されるものとする。説明を簡単にするために、１つのクォーラムデバイスのみが図３に表されるが、データミラーリングシステム３００の実施形態は、多くのクォーラムデバイスを含むことができる。
【００２２】
データベースサーバ、たとえば、データベースサーバ３３０またはデータベースサーバ３３２およびクォーラムデバイス３６０の間のデータを交換するための任意の媒体またはメカニズムによって、通信リンク３７０および３７２が実行されることが可能である。ファイルサーバ、たとえばファイルサーバ３４０およびファイルサーバ３４２の間のデータを交換するための任意の媒体またはメカニズムによって、通信リンク３７４および３７６が実行されることが可能である。通信リンク３７０、３７２、３７４および３７６の例としては、ローカルエリアネットワーク（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ワイドエリアネットワーク（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、イーサネットまたはインターネット等のネットワークか、１つ以上の地上リンク、または衛星リンク、あるいは無線リンクが挙げられるが、これらに限定されるものではない。
【００２３】
（ミラーリング環境におけるエラー処理の概要）
複数のサイト間でデータをミラーリングするための方法およびメカニズムが示されている。１つの方法によれば、レプリケーション関係は、第１のサイトおよび第２のサイトを含む複数のサイトの間で確立される。一実施形態において、レプリケーション関係によって、複数のサイトのいずれかのサイトでなされた少なくともいくつかの変更が、複数のサイトの互いのサイトで複製される。
【００２４】
レプリケーション関係にある第１のサイトに関連付けられる第１のデータベースサーバは、書込動作の実行を要求する。その後、書込動作が第１のサイトで実行される。書込動作がレプリケーション関係にある第２のサイトでミラーリングされるよう要求するメッセージが、送信される。
【００２５】
説明のために、第２のサイトによって書込動作が首尾よく実行されなかったと想定する。その結果、第１のデータベースサーバは、第２のサイトにおいて書込動作が首尾よく実行されなかったという指示を受信する。それに応じて、第１のデータベースサーバは、メンバーシップの投票動作を開始して、第１のデータベースサーバか第２のサイトに関連付けられる第２のデータベースサーバのどちらをレプリケーションメンバーシップから取り除くべきかを決定する。
【００２６】
一実施形態において、クォーラムデバイスと通信することによって、第１のデータベースサーバがメンバーシップの投票動作を開始する。クォーラムデバイスは、メンバーシップの投票動作を実行することのできるハードウェアまたはソフトウェアコンポーネントである。どのデータベースサーバがより重要でありより信頼性が高いものであるか等、多くの要因に基づいてどのデータベースサーバがレプリケーションメンバーシップから取り除かれなければならないかを、このクォーラムデバイスが決定することができる。メンバーシップを決定するために、クォーラムデバイスは様々なメンバーシップの投票プロトコルを用いることができる。
【００２７】
第２のサイトに関連付けられる第２のデータベースサーバがレプリケーションメンバーシップから取り除かれるべきだと決定されると、第１のデータベースサーバは、第１のサイトにあるファイルサーバに、第２のサイトで書込動作がもはや複製されることになっていないことを示すメッセージを送信することができる。追加の実施形態は、下記に詳述されている。
【００２８】
（優先順位に基づくコミット処理の概要）
トランザクションに関連付けられる優先順位の値に基づくトランザクションのコミットを処理するための方法もまた、提供される。１つの方法によれば、データが複数のサイト間でミラーリングされる。複数のサイトのうち第１のサイトで先頭レコードが維持され、その先頭レコードは、第１のサイトで実行されたどのトランザクションがそれらのリドゥ情報を複数のサイトのうち他のサイトに複製するかを識別する。広く本願明細書において使用されるように、リドゥ情報はトランザクションを説明する情報を示す。また第２のサイトでは、第２のレコードが維持され、その第２のレコードは、第１のサイトで実行されたどのトランザクションが、それらのリドゥ情報を信頼性の高い記憶装置に第１のサイトで記録するかを識別する。
【００２９】
第１のサイトで実行されるようになるトランザクションに関連付けられる優先順位の値が決定される。トランザクションは、データブロックへの変更を特定する。リドゥ情報は、一般的にリドゥログファイルに記憶される。ほとんどの実施態様において、リドゥログファイルは、トランザクションがコミットする順番にリドゥ情報を順次記憶する。したがって、高優先度のトランザクション（トランザクションが発行されたサイトが作動できなくなると、トランザクションが失敗してはならないことを指示する優先順位の値を有する
トランザクション）に関連付けられるリドゥ情報が確実に複製されることによって、高優先度のトランザクションより前にコミットした低優先度のトランザクション（トランザクションが発行されたサイトが作動できなくなると、トランザクションが失敗する可能性のあることを示す優先順位の値を有するトランザクション）に関連付けられるリドゥ情報もまた確実に複製される。
【００３０】
優先順位の値が、第１のサイトが作動できなくなる場合にトランザクションが失敗してはならないことを示すと、ついで、第１のサイトでのトランザクションの前にコミットされた他のトランザクションのすべてが、それぞれのリドゥ情報を複数のサイトの他のサイトに複製することを先頭レコードが指示す後にだけ、トランザクションがコミットされる。
【００３１】
しかしながら、一実施形態において、優先順位の値が、第１のサイトが作動できなくなる場合にトランザクションが失敗する可能性があることを示すと、ついで、第１のサイトでのトランザクションの前にコミットされた他のトランザクションのすべてが、それぞれのリドゥ情報を複数のサイトの他のサイトに複製することを先頭レコードが指示する前に、トランザクションがコミットされる。別の一実施形態において、優先順位の値が、第１のサイトが作動できなくなる場合にトランザクションが失敗する可能性があることを示すと、第１のサイトでのトランザクションの前にコミットされた他のトランザクションのすべてが、それぞれのリドゥ情報を信頼性の高い記憶装置に第１のサイトで記憶することを第２のレコードが指示する後に、トランザクションがコミットされる。
【００３２】
追加の実施形態を、下記に詳述する。
（双方向レプリケーション）
以下にさらに詳細に説明されるように、実施形態は、システム３００の各サイトにおける、同時のローカルの読み取り動作およびローカルの書込動作をサポートする。書込動作は、同期的に、または、非同期的に、システム３００の他の各サイトに複製されることができる。一実施形態において、別のサイトへの書込動作のレプリケーションを遅らせることによって、書込動作の性能を強化することができる。たとえば、高優先度のトランザクションがコミットする必要があるまで、あるいは、書込前の記録または書込後の記録が保存される必要のあるポイントまで、別のサイトへの書込動作のレプリケーションを遅らせることができる。書込動作を遅らせることにより、書込動作のレプリケーションを能率的にバッチ処理することが可能となる。
【００３３】
図４は、一実施形態による、複数のサイト間でデータをミラーリングするステップを示すフローチャート４００である。まず、ステップ４１０において、レプリケーション関係が複数のサイト間で確立される。一実施形態において、レプリケーション関係は、データミラーリングシステム３００における各サイトに確立される。たとえば、レプリケーション関係は、図３におけるサイト３１０およびサイト３１２に確立される。一実施形態において、レプリケーション関係によって、データミラーリングシステム３００におけるいずれかのサイトでなされた少なくともいくつかの変更が、データミラーリングシステム３００における他の各サイトで複製される。ステップ４１０を実行した後、処理がステップ４２０へと進む。
【００３４】
ステップ４２０において、複数のサイトの中の第１のサイトに関連付けられる第１のデータベースサーバが、書込動作の実行を要求する。一実施形態において、サイト３１０にあり、書込動作の実行を要求するデータベースサーバ３３０によって、ステップ４２０が実行されることができる。書込動作は、データベース３５０等の第１のサイトに設置されるデータベースにデータを書き込む動作であってもよい。ステップ４２０を実行した後、処理がステップ４３０へと進む。
【００３５】
ステップ４３０において、ステップ４２０において要求された書込動作が第１のサイトで実行される。一実施形態において、書込動作は、データベース３５０で書込動作を実行するようファイルサーバ３４０に指示するデータベースサーバ３３０によってサイト３１０で実行されることができ、その後で、ファイルサーバ３４０は、データベース３５０で書込動作を実行する。また、ステップ４３０において、書込動作が第２のサイトでミラーリングされることを要求するメッセージが送信される。一実施形態において、ファイルサーバ３４０は、書込動作がサイト３１２でファイルサーバ３４２にミラーリングされる要求を送信することができる。ステップ４３０を実行した後で、処理がステップ４４０へと進む。
【００３６】
書込動作がシステムの各サイトで実行されるのは、各サイトで各データベースサーバがメカニズムを使用して、確実に１つ以上の書込動作がディスクに持続的に記憶される同一のデータブロックを同時に変更するためであることに注意されたい。様々な方法を使用して、このようなメカニズムは実行されることができ、その方法には、グローバルなロック管理（共有ディスククラスタ）の形式、または、ディスクのパーティショニング（非共有クラスタ）が含まれる。
【００３７】
ステップ４４０において、第１のデータベースサーバは、書込動作が第２のサイトで首尾よく実行されなかった指示を受信する。たとえば、データベースサーバ３３０は、書込動作がサイト３１２で首尾よく実行されなかったという指示を受信する。一実施形態において、その指示は、メンバーシップの投票動作が実行されるべきであることを指示する入出力エラーである。入出力エラーは、データベースサーバ３３０によるメッセージにおいて受信される独特のエラーコードを使用して表すことができる。サイト３１０で受信される指示は、書込動作がサイト３１２で複製できないことを識別する入出力エラーであってもよい。一実施形態において、データミラーリングシステム３００の１つのサイトがデータミラーリングシステム３００の別のサイトで実行された書込動作を反映しないときには、この指示は、ステップ４４０において受信されるだけである。すなわち、その結果として、データベースサーバ３３２が故障すると、ステップ４４０の指示がサイト３１０によって受信されない。一実施形態において、ファイルサーバ３４２が故障するか、データベース３５２が故障するか、通信リンク３７４が失敗するか、または通信リンク３７６が失敗する場合には、サイト３１０はステップ４４０の指示を受信する。ステップ４４０を実行した後、処理がステップ４５０へと進む。
【００３８】
ステップ４５０において、第１のデータベースサーバは、メンバーシップの投票動作を開始し、第１のデータベースサーバまたは第２のサイトに関連付けられる第２のデータベースサーバのどちらが、レプリケーションメンバーシップから取り除かれなければならないかを決定する。たとえば、メンバーシップの投票動作を開始し、データベースサーバ３３０またはデータベースサーバ３３２がレプリケーションメンバーシップから取り除かれなければならないかを決定するステップ４５０は、データベースサーバ３３０によって実行されることができる。
【００３９】
一実施形態において、クォーラムデバイスと通信することによって、第１のデータベースサーバはメンバーシップの投票動作を開始する。たとえば、通信リンク３７０を介してクォーラムデバイス３６０と通信することによって、データベースサーバ３３０がメンバーシップの投票動作を開始する。
【００４０】
図５は、本発明の一実施形態によるメンバーシップの投票動作を開始する機能ステップを示すフローチャートである。ステップ５１０において、クォーラムデバイスは書込動作が首尾よく実行されなかったことを通知される。たとえば、通信リンク３７０を介してク
ォーラムデバイス３６０に書込動作がサイト３１２で首尾よく実行されなかったことを通知するステップ５１０が、データベースサーバ３３０によって実行されることができる。ステップ５１０のパフォーマンスの後、処理がステップ５２０へと進む。
【００４１】
ステップ５２０において、ステップ５１０において通知されたクォーラムデバイスは、どのデータベースサーバがレプリケーションメンバーシップから取り除かれるべきかを決定する。たとえば、クォーラムデバイス３６０によって、どのデータベースサーバがレプリケーションメンバーシップから取り除かれるべきかを決定するステップ５２０が実行されることができる。一実施形態において、どのデータベースサーバがレプリケーション関係から取り除かれるべきかの決定は、どのデータベースサーバがより重要であるか、またはより信頼性が高いかを決定することを含む。データミラーリングシステム３００のデータベースサーバすべてが同様に重要であるか、または同様に信頼性が高い場合、デフォルトデータベースサーバが、クォーラムデバイスによって選択されることができる。
【００４２】
一実施形態において、データベースサーバ３３２がレプリケーションメンバーシップから取り除かれるべきであるとクォーラムデバイス３６０が決定すると、ついで、データベースサーバ３３０が、サイト３１０で実行された書込動作はサイト３１２でもはや複製されることにならないことを示すメッセージを、ファイルサーバ３４０に送信する。あるいは、サイト３１０がレプリケーションメンバーシップから取り除かれるべきであるとクォーラムデバイス３６０が決定すると、ついで、データベースサーバ３３２は、データがサイト３１０でもはや複製されることにならないことを、ファイルサーバ３４２に知らせる。たとえ書込動作が異なるサイトにもはや複製されなくても、ファイルサーバは読み取りおよび書込の動作をローカルに処理することが可能である。
【００４３】
一実施形態において、クォーラムデバイス３６０は複数のミラーリングされたデバイスからなり、ステップ５１０はプライマリファイルサーバによって実行される。プライマリファイルサーバは、複数のサイトのうちの１つに関連付けられるファイルサーバであり、このプライマリサーバを介して、複数のサイトの他のサイトに関連付けられる他の全てのファイルサーバがクォーラムデバイスと通信する。たとえば、データベースサーバ３３０は、プライマリファイルサーバであってもよい。その結果として、データベースサーバ３３２は、データベースサーバ３３０を介してクォーラムデバイス３６０と通信する。
【００４４】
一実施形態において、異なる障害ドメインに関連付けられるデータミラーリングシステム３００の他のいかなるサイトとも異なるサイトに、クォーラムデバイス３６０が設置される。この実施形態において、データミラーリングシステム３００の各データベースサーバは、クォーラムデバイス３６０と直接交信することができる。しかしながら、クォーラムデバイス３６０が故障すると、ついで、データミラーリングシステム３００の各サイトが故障するのは、たとえこれらのサイトが他の点では異常がなく、ネットワークおよび入出力を相互に接続するとしても、各サイトがクォーラムデバイス３６０と通信することができないためである。
【００４５】
一実施形態において、サイトのデータベースサーバがレプリケーションメンバーシップから取り除かれるべきであるとクォーラムデバイスが決定したあとに、サイトがレプリケーション関係を再結合することができる。たとえば、サイト３１２がレプリケーション関係から取り除かれたとしても、ついで、サイト３１２がレプリケーション関係を再結合することができる。レプリケーション関係を再結合するサイト３１２に応じて、サイト３１２内のデータがサイト３１０のデータによって再同期化され、データベース３５２が据え替えられる。
【００４６】
（リドゥ情報の書込パフォーマンスの改良）
書込動作の同期式レプリケーションによって、書込動作の呼び出し時間およびコストが上昇する。ほかの場所で開始しまだ複製されていない書込動作、および、まさに発行されようとしている書込動作を調整するのに注意を払わなければならないにもかかわらず、ファイルサーバは非同期式に書込動作を複製してもよい。非同期式レプリケーションを有利に用いる数多くの実施形態を以下に述べる。
【００４７】
非同期式レプリケーションによってリドゥ情報を書込の実行を改良するいくつかの実施形態を、以下に述べる。本願明細書において広く使用されるように、リドゥ情報はトランザクションを説明する情報を示す。一実施形態において、リドゥ情報は、コミットしたか、またはコミットしようとしているトランザクションを説明する。一実施形態において、リドゥ情報は、リドゥログファイルにおいて記録されることができる。リドゥ情報は、コミットされたトランザクションをロールバックするか、または、「アンドゥする」のに使用されることができる。
【００４８】
図６は、本発明の一実施形態による、複数のサイト間でデータをミラーリングするステップを示すフローチャートである。図６において示されるステップは、複数のサイト間でリドゥ情報をミラーリングするのに使用されることができる。まず、ステップ６１０において、先頭レコードが複数のサイトの第１のサイトで維持され、この先頭レコードは、第１のサイトで実行されたどのトランザクションが、これらのリドゥ情報を複数のサイトのうちの他のサイトに複製したかを識別する。ステップ６１０は、サイト３１０のデータベースサーバ３３０によって実行されることができる。一実施形態において、一部のリドゥログファイルを識別することによって、ステップ６１０が実行されることができる。ステップ６１０のリドゥログファイルの識別された部分に反映されたトランザクションはすべて、複数のサイトの他のサイトに複製されている。
【００４９】
それぞれのリドゥ情報が複数のサイトの他のサイトに複製されるリドゥログファイルに反映される特定のトランザクションを識別し、最も数字の大きいログシーケンス番号（Ｌｏｇ  Ｓｅｑｕｅｎｃｅ  Ｎｕｍｂｅｒ）に関連付けられるレコードを維持することによって、たとえば、ステップ６１０において識別されたリドゥログファイルの部分が識別されることができる。リドゥログファイルにあり、特定のトランザクションに関連付けられるＬＳＮより小さなＬＳＮを有するトランザクションはすべて、それらのリドゥ情報を複数のサイトの他のサイトに複製するリドゥログファイルの識別された部分にある。ステップ６１０を実行した後、処理がステップ６２０へと進む。
【００５０】
ステップ６２０において、第１のサイトで実行されたどのトランザクションが、リドゥ情報が信頼性の高い記憶装置に第１のサイトで記録したかを識別する第２のレコードが、複数のサイトのうちの第１のサイトで維持される。ステップ６２０は、サイト３１０のデータベースサーバ３３０によって実行されることができる。一実施形態において、リドゥログファイルの一部を識別することによって、ステップ６２０が実行されることができる。ステップ６２０のリドゥログファイルの識別された部分に反映されたトランザクションはすべて、第１のサイトで信頼性の高い記憶装置に記録されている。
【００５１】
それぞれのリドゥ情報が第１のサイトで信頼性の高い記憶装置に記録されるリドゥログファイルに反映される特定のトランザクションを識別し、最も数字の大きいログシーケンス番号（ＬＳＮ）に関連付けられるレコードを維持することによって、たとえば、ステップ６２０において識別されたリドゥログファイルの部分が識別されることもできる。ログファイル中にあり、特定のトランザクションに関連付けられるＬＳＮより小さいか、または等しいＬＳＮを有するトランザクションはすべて、リドゥログファイルの識別された部分にあり、このトランザクションによって、リドゥ情報が第１のサイトで信頼性の高い記憶装置に記録される。ステップ６２０を実行した後、処理がステップ６３０へと進む。
【００５２】
ステップ６３０において、トランザクションに関連付けられる優先順位の値が決定される。トランザクションの重要性に基づいてトランザクションがいつコミットされなければならないかを決定するのに、優先順位の値が使用されることができる。たとえば、第１のサイトが実行できなくなる場合に特定のトランザクションが失敗しなければ、ついで、トランザクションは、第１のサイトが実行できなくなる場合に失敗する可能性のあるトランザクションよりも高い優先順位の値を与えられることができる。
【００５３】
一実施形態において、ステップ６３０の優先順位の値に関連付けられるトランザクションは、第１のサイトで実行されることになる。一実施形態において、トランザクションは、少なくとも１つのデータブロックに変更がなされることになることを指示する。トランザクションによって変更されたデータブロックは、サイト３１０のデータベース３５０に存在することができる。説明を簡単にするために、トランザクションが２個以上のデータブロックを変更することができるにもかかわらず、このトランザクションは１つのデータブロックを変更するものとして述べられている。ステップ６３０は、サイト３１０のデータベースサーバ３３０によって実行されることができる。ステップ６３０を実行した後、処理がステップ６４０へと進む。
【００５４】
ステップ６４０において、第１のサイトが実行できなくなる場合に、トランザクションが失敗できないことを先の数値が示すかどうかに関する決定がなされる。ステップ６４０は、サイト３１０のデータベースサーバ３３０によって実行されることができる。
【００５５】
ステップ６４０の決定が肯定的な（第１のサイトが実行できなくなると、優先順位の値はトランザクションが失敗してはならないことを示す）場合、ついで、処理がステップ６５０へと進む。ステップ６５０において、トランザクションがコミットされるのは、トランザクションに関連付けられるリドゥ情報がデータミラーリングシステム３００の他の各サイトに複製されたことを先頭レコードが示したあとだけである。ステップ６５０は、サイト３１０のデータベースサーバ３３０によって実行されることができる。
【００５６】
一実施形態において、トランザクションに関連付けられるコミットレコードを先頭レコードと比較することによって、トランザクションに関連付けられるリドゥ情報が複数のサイトの他のサイトに複製されたかどうかの決定が、ステップ６５０において実行される。
【００５７】
ステップ６４０の決定が否定的な（第１のサイトが実行できなくなると、優先順位の値が、トランザクションが失敗する可能性のあることを示す）場合、ついで、処理がステップ６６０へと進む。ステップ６６０において、トランザクションがコミットされるのは、トランザクションに関連付けられるリドゥ情報が、信頼性の高い記憶装置に第１のサイトで記憶されたことを、第２のレコードが示したあとだけである。ステップ６６０は、サイト３１０のデータベースサーバ３３０によって実行されることができる。
【００５８】
一実施形態において、トランザクションに関連付けられるコミットレコードを第２のレコードと比較することによって、トランザクションに関連付けられるリドゥ情報が信頼性の高い記憶装置に記憶されたかどうかの決定が、ステップ６６０において実行される。
【００５９】
代替実施形態（図６において示さず）において、トランザクションに関連付けられるリドゥ情報が複数のサイトの他のサイトに複製されたことを先頭レコードが示す前にトランザクションをコミットすることによって、ステップ６６０が実行されることができる。一実施形態において、トランザクションに関連付けられるリドゥ情報が複数のサイトの他のサイトに複製されたことを先頭レコードが示す前に、サイト３１０のデータベースサーバ３３０がトランザクションをコミットする。トランザクションによって生成されるリドゥ
情報は、トランザクションに関連付けられるのと考えられる。
【００６０】
上述の実施形態によって、トランザクションの重要性に基づいて、いつトランザクションをコミットするかを有利に決定することができる。たとえば、特定のトランザクションが極めて重要なトランザクションである（そのトランザクションがいかなる状況下であっても失敗してはならない）場合、ついで、先頭レコードがトランザクションの前にコミットされた他のトランザクションすべてが、それぞれのリドゥ情報を他のサイトに複製することを示したあとに、トランザクションがコミットされるだけである。しかしながら、それほど重要ではないトランザクションは、トランザクションの前にコミットされた他のトランザクションすべてがそれぞれのリドゥ情報を第１のサイトにある信頼性の高い記憶装置に記憶することを第２のレコードが示したあとに、コミットされることができる。この方法では、コミットされたトランザクションに関連付けられる変更が複数のサイトの他のサイトにおいてミラーリングされる前にもし第１のサイトが実行できなくなると、それほど重要でない確約されたトランザクションが失敗する可能性があるにもかかわらず、それほど重要ではないトランザクションは極めて重要なトランザクションよりも前に確約されることができる。
【００６１】
書込動作のレプリケーションが遅延し、書込動作を出した特定のサイトが実行できなくなると、ついで、実行できないサイトのリカバリを開始する前に、残存しているサイトは実行できないサイトから伝送された全てのメッセージが複数のサイトの相互のサイトで受信されるのを待たなければならない。このように実行することによって確実となるのは、実行できなくなっているそのサイトより前に実行できないサイトから送信され、まだ受信されていないメッセージが、実行できないサイトのリカバリを開始したかまたは完了した後では、残存しているサイトによって処理されないことである。あるいは、１つ以上の残存しているサイトが、実行不可能なサイトのリカバリを開始したかまたは完了した後では、残存しているサイトは実行できないサイトから伝送されたいかなるメッセージも無視することができる。
【００６２】
図７は、本発明の一実施形態による、複数のサイト間でデータをミラーリングするステップを示すフローチャートである。図７に示されるステップは、有利には、リドゥログへの書込動作のレプリケーションを遅延させるために使用されることができる。データベースサーバがデータをリドゥログに書き込む呼び出し時間を減少させるのに、有利である。データベースサーバは、最近のコミットされたトランザクションが失敗しているリドゥログへの書込のレプリケーションを遅延することができ、そしてサイトが故障したときには耐えることができる。後述する本発明の実施形態は、有利には、持続的に記憶されなかった変更を反映するデータブロックが、持続的に記憶されるかまたは別のサイトに転送されるまで、リドゥログへの書込のレプリケーションを遅延させる。
【００６３】
まず、ステップ７１０において、複数のサイトの第１のサイトでトランザクションが処理される。ステップ７１０は、書込動作等のトランザクションを処理するサイト３１０のデータベースサーバ３３０によって実行されることができる。
【００６４】
ステップ７２０において、処理されたトランザクションを反映する情報が生成される。この情報は、揮発性メモリにおいて生成されることができる。この情報は、処理されたトランザクションに関するリドゥ情報を含むことができる。ステップ７２０は、サイト３１０のデータベースサーバ３３０によって実行されることができる。処理されたトランザクションを反映する情報が生成された後、処理がステップ７３０へと進む。
【００６５】
ステップ７３０において、処理されたトランザクションに関連付けられるデータブロックが持続的に記憶されるか、または、このデータブロックが別のサイトへ転送されるかの
どちらかの前に、ステップ７２０において生成される情報が持続的に記憶されているかどうかに関する決定がなされる。ステップ７３０は、サイト３１０のデータベースサーバ３３０によって実行されることができる。
【００６６】
ステップ７３０の決定が肯定的な（処理されたトランザクションに関連付けられるデータブロックが持続的に記憶されるか、または、データブロックが別のサイトへ転送されるかどちらかの前に、ステップ７２０において生成される情報が持続的に記憶されている）場合、ついで、処理がステップ７４０へと進む。ステップ７４０において、データブロックが持続的に記憶されるか、または、データブロックが複数のサイトの別のサイトへ転送されるかどちらの前に、ステップ７２０において生成される情報が持続的に記憶される。
【００６７】
一実施形態において、複数トランザクションに関する情報が持続的に記憶されるように、ステップ７４０が実行されることができる。たとえば、第１のサイトで、第２のトランザクションが処理されることができ、処理された第２のトランザクションを反映する情報が第１のサイトで揮発性メモリに生成されることができる。処理された第２のトランザクションに関連付けられる第２のデータブロックが持続的に記憶されるか、または、第２のデータブロックが複数のサイトの別のサイトへ転送されるかどちらかの前に、ステップ７２０で生成された情報（以下、「第１の情報」）、および、第２のトランザクションを反映する情報（以下、「第２の情報」）が記憶されず、第２のデータブロックが持続的に記憶されるか、または、第２のデータブロックは複数のサイトの別のサイトへ転送されるかどちらかの前に、バッチ処理を使用することにより、第１の情報および第２の情報が持続的に記憶されることができる。一実施形態において、バッチ処理を使用することにより、データベースサーバ３３０が持続的に第１の情報および第２の情報を記憶する。一実施形態において、バッチ処理は非同期式であってもよい。たとえばＵＮＩＸのａｉｏ＿ｒｅｓｕｌｔ＿ｔの入出力結果記述子を使用して、非同期式バッチ処理の結果が決定されてもよい。いつバッチ処理が完了したかを決定するのに非同期入出力結果記述子が使用されることができる。
【００６８】
ステップ７３０の決定が否定的な（処理されたトランザクションに関連付けられるデータブロックが持続的に記憶されるか、または、データブロックが別のサイトへ転送されるかどちらかの前に、ステップ７２０において生成される情報が持続的に記憶されなかった）場合、ついで、処理は、ステップ７５０へ進む。ステップ７５０において、処理されたトランザクションに関連付けられるデータブロックは、持続的に記憶されるか、または転送される。
【００６９】
（データベースファイルへの書込の実行の改良）
非同期式レプリケーションによってデータベースファイルへの書込の実行を改良する実施形態をいくつか後述する。図８は、本発明の一実施形態による、複数のサイト間でデータをミラーリングするステップを示すフローチャートである。図８に示されるステップは、ライトアヘッドロギング方式を使用して、データベースファイルに書き込むのに使用されることができる。
【００７０】
まず、ステップ８１０において、先頭レコードが複数のサイトの第１のサイトで維持され、そのレコードは第１のサイトの１つ以上のデータブロックになされたどの変更が、関連付けられたリドゥ情報を複数のサイトの他のサイトに複製したかを識別する。第１のサイトは、ライトアヘッドロギング方式を実行する。ライトアヘッドロギング方式において、持続的に記憶されない変更を反映するバッファキャッシュのデータブロック（「故障付きの」データブロック）が持続的に記憶されるのは、１つ以上のデータブロックに関連付けられるリドゥ情報が持続的に記憶された後だけである。一実施形態において、トランザクションを実行すると、第１のサイトは複数のサイトのうち他のサイトに非同期式にトラ
ンザクションを複製する。ステップ８１０は、先頭レコードを維持しているサイト３１０のデータベースサーバ３３０によって実行されることができ、そのレコードは、サイト３１０でデータベース３５０に記憶された１つ以上のデータブロックになされたどの変更が、関連付けられたリドゥ情報をサイト３１２に複製したのかを識別する。複数のサイトのうち他のサイトに複製されるリドゥ情報を関連付ける１つ以上のデータブロックになされた変更は、各変更をリドゥログのログシーケンス番号（ＬＳＮ）に割り当て、複製されたごく最新の変更のログシーケンス番号を記憶することによって、追跡されることができる。さらに、特定のデータブロックになされる最新の変更に関連付けられるＬＳＮは、特定のデータブロックのヘッダに記憶される。ステップ８１０を実行した後、処理がステップ８２０へと進む。
【００７１】
ステップ８２０において、第２のレコードが複数のサイトの第１のサイトで維持され、そのレコードは第１のサイトの１つ以上のデータブロックになされたどの変更が、関連付けられたリドゥ情報を複数のサイトの第１のサイトで信頼性の高い記憶装置に記録したかを識別する。複数のサイトのうちの第１のサイトで信頼性の高い記憶装置に記録されるリドゥ情報に関連付ける１つ以上のデータブロックになされた変更は、各変更をリドゥログのログシーケンス番号（ＬＳＮ）に割り当て、信頼性の高い記憶装置に記録されたごく最新の変更のログシーケンス番号を記憶することによって、追跡されることができる。サイト３１０のデータベース３５０において記憶された１つ以上のデータブロックになされたどの変更が、サイト３１０で記録されるリドゥ情報を関連する信頼性の高い記憶装置に関連付けるのかを識別する第２のレコードを維持するステップ８２０が、サイト３１０のデータベースサーバ３３０によって、実行されることができる。ステップ８２０を実行した後、処理はステップ８３０へと進む。
【００７２】
ステップ８３０において、書込トランザクションが第１のサイトで出されたのと同じ順番で、第１のサイトが書込トランザクションを複製するかどうかに関する決定がなされる。サイト３１０のデータベースサーバ３３０は、ステップ８３０を実行することができる。
【００７３】
ステップ８３０の決定が肯定的な（書込トランザクションが第１のサイトで完了したのと同じ順番で、第１のサイトが書込トランザクションを複製する）場合、ついで、処理がステップ８４０へと進む。ステップ８４０において、データブロックは持続的に記憶されるのは、第１のサイトで記憶された１つ以上のデータブロックになされるいずれかの変更が、リドゥ情報を信頼性の高い記憶装置に記録したことを第２のレコードが示した後である。データブロックになされる変更は、１つ以上のトランザクションによって実行されることができる。データベース３５０の特定データブロックを持続的に記憶することによってステップ８４０が実行されることができるのは、サイト３１０でデータベース３５０に記憶されるデータブロックになされるいずれかの変更が、関連付けられたリドゥ情報を信頼性の高い記憶装置にサイト３１０で記録したことを第２のレコードが示した後である。
【００７４】
ステップ８３０の決定が否定的な（書込トランザクションが第１のサイトで完了したのと同じ順番で、第１のサイトが書込トランザクションを複製されない）場合、ついで、処理がステップ８５０へと進む。ステップ８５０において、データブロックが持続的に記憶されるのは、第１のサイトで記憶された１つ以上のデータブロックになされるいずれかの変更が、リドゥ情報を複数のサイトの他のサイトに複製したことを先頭レコードが示した後である。１つ以上のデータブロックになされる変更は、１つ以上のトランザクションによって実行されることができる。サイト３１０のデータベース３５０の特定のデータブロックを持続的に記憶することによってステップ８５０が実行されることができるのは、サイト３１０でデータベース３５０に記憶される１つ以上のデータブロックになされるいずれかの変更が、関連付けられたリドゥ情報を複数のサイトの他のサイトに複製したことを
先頭レコードが示した後である。特定のデータブロックになされた変更が複数のサイトの他のサイトに複製されたことを先頭レコードが示したあと、ついで、データブロックと関連付けられるロックが解除されることができる。詳しくは、共有ディスクにおいて、または、共有キャッシュクラスタデータベースにおいて、グローバルロック管理を使用してデータブロックに対する並列アクセスが調整されるが、データブロックに関連付けられるロックが解除されることができるのは、先頭レコードがデータブロックになされる変更に関連付けられるリドゥ情報が複数のサイトの他のサイトに複製されたことを示した後だけである。このことによって確実となるのは、データブロックになされた先の変更に関連付けられるあらゆる先のリドゥ情報がサイトの局所の信頼性の高い記憶装置に利用可能とならない限り、リモートサイトからデータブロックを受信するいかなるサイトも、データブロックを読み取り書き込んだりしないことである。
【００７５】
図８に表される実施形態を使用して、書込動作が出される順番で、異なるファイルへの書込動作が複製されると、ついで、第２のレコードが特定のデータブロックを更新するトランザクションすべてを反映するとすぐに、特定のデータブロックが持続的に記憶されることができる。このように、１つ以上のトランザクションによって特定データブロックになされる変更に関連付けられるリドゥ情報が複製された後にだけ、特定のデータブロックを複製する。
【００７６】
本発明の実施形態は、ライトバックロギング方法を使用して、データベースファイルへの書込の実行を改良する。ライトバックロギング方法において、データブロックのためのリドゥ情報が生成する前に、データブロックが持続的に記憶される。図９は、本発明の一実施形態による、複数のサイト間でデータをミラーリングするステップを示すフローチャートである。図９において示されるステップは、ライトバックロギング方法を使用して、ファイルをデータベースに書き込むのに使用されることができる。まず、ステップ９１０において、複数のサイトの第１のサイトで、データブロックになされる変更に関するリドゥ情報を持続的に記憶する前に、データブロックが持続的に記憶される。サイト３１０のデータベースサーバ３３０によって、データブロックになされる変更に関するリドゥ情報を持続的に記憶する前に、データベース３５０にあるデータブロックを持続的に記憶するステップ９１０が実行されることができる。ステップ９１０を実行した後に、処理がステップ９２０へと進む。
【００７７】
ステップ９２０において、第１のサイトで、データブロックになされる変更を反映するリドゥ情報が持続的に記憶されるのは、この変更が複数のサイトの他のサイトに複製された後である。サイト３１０のデータベースサーバ３３０によって、変更がサイト３１２に複製されたあとにデータブロックになされる変更を反映するリドゥ情報を持続的に記憶するステップ９２０が実行されることができる。
【００７８】
一実施形態において、ステップ９２０において、データブロックになされる変更がいつ複数のサイトの他のサイトに複製されたかに関する決定がなされる。一実施形態において、サイト３１０のデータベースサーバ３３０は、データブロックになされた変更がいつサイト３１２に複製されたかに関して決定する。
【００７９】
一実施形態において、単一の処理は、各々がデータブロックに対する変更を行う１つ以上のトランザクションを発行することができる。別の一実施形態において、１つ以上のトランザクションは、２つ以上の処理によって発行されることができる。データベースサーバ３３０は、１つ以上のデータブロックに対する変更を行う１つ以上のトランザクションがいつ完了するかを決定することができる。１つ以上のデータブロックに対する変更を行う１つ以上のトランザクションが完了した後、ステップ９１０に記載されているように、１つ以上のデータブロックが持続的に記憶されることができる。
【００８０】
図９に示すステップを使用して、データベースサーバは、書込動作のためのリドゥ情報を持続的に記憶する前に、持続的に記憶されたデータブロックにファイルサーバが全ての書込動作のレプリケーションを完了するまで、待つことができる。たとえば、サイト３１０のデータベースサーバ３３０はデータベースサーバ３３０がデータベース３５０の書込動作のためのリドゥ情報を持続的に記憶する前に、ファイルサーバ３４０がサイト３１０で持続的に記憶されたデータブロックへの全ての書込動作のサイト３１２に対するレプリケーションを完了するまで、待つことができる。
【００８１】
（サイトリカバリ）
一実施形態において、データミラーリングシステム３００の特定のサイトが実行できなくなると、ついで、特定のサイトからデータミラーリングシステム３００の他の各サイトに伝送されたメッセージすべてがその相手先で受信されたことが決定された後に、特定のサイトのリカバリが開始される。たとえば、図３に表される実施形態において、サイト３１０が作動できなくなる場合、ついで、サイト３１０からサイト３１２まで伝送されたメッセージすべてがサイト３１２で受信されたことが決定された後までは、サイト３１０のリカバリは開始されない。あるいは、１つ以上の残存しているサイトが作動できないサイトのリカバリを開始したかまたは完了した後は、残存しているサイトは、作動できないサイトから伝送されたいかなるメッセージも無視することができる。
【００８２】
（テンポラリファイルへの書込の実行の改良）
ソートやハッシュ結合等の特定のデータベース操作においては、データベースはテンポラリファイルを用いてもよい。テンポラリファイルは、限られた時間の間データを保持するために、メモ用紙のように用いられる。このテンポラリファイルの空き領域の割当てに関するメタデータの変更を複製する必要がある場合もある。しかしながら、テンポラリファイルが複数のサイトの他のサイトによって必要とされなければ、テンポラリファイルは複製される必要はない。
【００８３】
一実施形態において、テンポラリファイル等のデータ構造が複数のサイトの他の各サイトに複製されることになっているかどうかに関する決定が、複数のサイトの第１のサイトでのデータベースサーバでなされる。データ構造が複数のサイトの他の各サイトに複製されることになっていないことが決定されなければ、第１のサイトのデータ構造は、複数のサイトの他の各サイトに複製される。たとえば、図３に表される実施形態において、サイト３１０のデータベースサーバ３３０は、特定のテンポラリファイルがサイト３１２に複製される必要はないことを決定することができる。その結果として、データベースサーバ３３０は、サイト３１２にテンポラリファイルを複製しない。
【００８４】
（メカニズムの実行）
図１０は、本発明の一実施形態が実行されることのできるコンピュータシステム１０００を示すブロック図である。コンピュータシステム１０００は、バス１００２または情報を通信するための他の通信メカニズム、および、情報を処理するためのバス１００２に結合されるプロセッサ１００４を含む。コンピュータシステム１０００はまた、ランダムアクセスメモリ（ＲＡＭ）または他の動的記憶装置等のメインメモリ１００６を含み、メインメモリはプロセッサ１００４によって実行されるべき情報および指示を記憶するためのバス１００２に結合される。プロセッサ１００４によって実行されるべき指示を実行する間に、メインメモリ１００６はまた、一時変数または他の中間の情報を記憶するために使用されることができる。コンピュータシステム１０００は、バス１００２に結合されプロセッサ１００４のための静的情報および指示を記憶するための読み出し専用メモリ（ＲＯＭ）１００８または他の静的記憶装置をさらに含む。磁気ディスクまたは光ディスク等の記憶装置１０１０が設けられ、情報および指示を記憶するためのバス１００２に結合され
る。
【００８５】
コンピュータシステム１０００は、コンピュータユーザに情報を表示するために、バス１００２を介してブラウン管（ＣＲＴ）等のディスプレイ１０１２に結合されることができる。英数字および他のキーを含む入力装置１０１４は、プロセッサ１００４に情報および命令の選択を通信するためにバス１００２に結合される。別のタイプのユーザ入力デバイスは、マウスや、トラックボール、またはカーソル方向キー等のカーソル制御機器１０１６であり、プロセッサ１００４に方向情報および命令選択を通信し、ディスプレイ１０１２上でカーソル移動を制御するためのものである。この入力装置は、一般的に２本の軸、すなわち第１軸（たとえばｘ）および第２軸（たとえばｙ）において２つの自由度を有し、このことにより、デバイスが平面の位置を特定することが可能となる。
【００８６】
本発明は、本願明細書において説明される方法を実行するためのコンピュータシステム１０００の使用に関する。本発明の一実施形態によると、これらの方法は、メインメモリ１００６に含まれる１つ以上の指示の１つ以上のシーケンスを実行するプロセッサ１００４に応じて、コンピュータシステム１０００によって実行される。このような指示は、記憶装置１０１０等の別のコンピュータ可読媒体からメインメモリ１００６の中に読み取られることができる。メインメモリ１００６に含まれる指示のシーケンスを実行することによって、プロセッサ１００４は本願明細書において説明される処理ステップを実行する。代替実施形態において、本発明を実行するために、配線による回路が、ソフトウェア指示の代わりに、または、ソフトウェア指示と組み合わせて使用されることができる。したがって、本発明の実施形態はハードウェア回路及びソフトウェアの特定の組み合わせに限定されない。
【００８７】
本明細書中で使用する「コンピュータ可読媒体」なる用語は、プロセッサ１００４への指示を実行する際に関与するいかなる媒体をも示す。このような媒体は、不揮発性媒体、揮発性媒体および伝送媒体を含むが、これらに限定されない多くの形を取り得る。不揮発性媒体は、たとえば、記憶装置１０１０等の光学ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ１００６等の動的メモリを含む。伝送媒体は同軸ケーブル、銅線および光ファイバを含み、バス１００２を備えるワイヤを含む。伝送媒体はまた、電波および赤外線データ通信中に生成されるような音波または光波の形を取り得る。
【００８８】
コンピュータ可読媒体の一般的な形は、たとえば、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープまたは他のいかなる磁気媒体、ＣＤ−ＲＯＭ、他のいかなる光媒体、パンチカード、紙テープ、孔のパターン有する他のいかなる物理メディア、ＲＡＭ、ＰＲＯＭおよびＥＰＲＯＭ、フラッシュＥＰＲＯＭ、他のいかなるメモリーチップまたはカートリッジ、後述するようなキャリア波、または、コンピュータがそこから読み取ることのできる他のいかなる媒体を含む。
【００８９】
プロセッサ１００４への１つ以上の指示の１つ以上のシーケンスを実行するために、コンプイータ可読媒体の様々な形が含まれることができる。たとえば、命令は、まずリモートコンピュータの磁気ディスクに実行されることができる。リモートコンピュータは、指示をその動的メモリに読み取り、モデムを使用して電話線を介して命令を送信することができる。ローカルなコンピュータシステム１００にローカルなモデムが、電話線上のデータを受信し、データを赤外線信号に変換するための赤外線トランスミッターを使用することができる。赤外線探知器は赤外線信号で伝えられたデータを受信し、適切な回路はバス１００２上のデータを設定することができる。バス１００２はメインメモリ１００６へデータを伝送し、プロセッサ１００４は指示を取り出して実行する。メインメモリ１００６によって受信された命令は、プロセッサ１００４によって実行される前か後のどちらでも、記憶装置１０１０に随意に記憶されることができる。
【００９０】
コンピュータシステム１０００はまた、バス１００２に結合する通信インタフェース１０１８を含む。通信インタフェース１０１８は、ローカルネットワーク１０２２に接続されるネットワークリンク１０２０に結合する双方向データ通信を提供する。たとえば、通信インタフェース１０１８は、データ通信を対応するタイプの電話線に接続する総合サービスデジタルネットワーク（Ｉｎｔｅｇｒａｔｅｄ  Ｓｅｒｖｉｃｅｓ  Ｄｉｇｉｔａｌ
Ｎｅｔｗｏｒｋ）カードまたはモデムであってもよい。別の実施例として、通信インタフェース１０１８は、データ通信を互換性のあるＬＡＮに接続するローカルエリアネットワーク（ＬＡＮ）カードであってもよい。無線リンクもまた実行されることができる。いずれの種類のインプリメンテーションにおいても、通信インタフェース１０１８は、さまざまな情報を示すデジタルデータストリームを伝える電気信号、電磁気信号、または光学信号を送受信する。
【００９１】
ネットワークリンク１０２０は、一般的に、１つ以上のネットワークを介してデータ通信を他のデータ装置に提供する。たとえば、ネットワークリンク１０２０は、ホストコンピュータ１０２４に、または、インターネットサービスプロバイダ（Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）１０２６によって運営されるデータ装置に、ローカルネットワーク１０２２を介して接続することができる。ＩＳＰ１０２６は、今では一般に「インターネット」１０２８と呼ばれる世界的なパケットデータ通信網を介して、次々にデータ通信サービスを提供する。ローカルネットワーク１０２２およびインターネット１０２８は両方とも、デジタルデータストリームを伝える電気信号、電磁気信号、または光学信号を使用する。様々なネットワークを介する信号およびリンク１０２０上にあり通信インタフェース１０１８をネットワーク化する信号は、ディジタルデータをコンピュータシステム１０００に／から伝え、情報を伝送するキャリア波の典型的な形である。
【００９２】
コンピュータシステム１０００は、ネットワーク（複数）、ネットワークリンク１０２０、および、通信インタフェース１０１８を介して、メッセージを送信しデータを受信することができ、それはプログラムコードを含むものである。インターネットの実施例において、サーバ１０３０は、インターネット１０２８、ＩＳＰ１０２６、ローカルネットワーク１０２２、および、通信インタフェース１０１８を介して、アプリケーションプログラム用の要求されたコードを伝送することができよう。
【００９３】
コードが受信され、および／または記憶装置１０１０または後に実行するための他の不揮発性記憶装置に記憶されるので、受信されたコードはプロセッサ１００４によって実行されてもよい。このように、コンピュータシステム１０００は、キャリア波の形でアプリケーションコードを得ることができる。
【００９４】
前述の仕様において、インプリメンテーションからインプリメンテーションまで変動させることができる数多くの具体的な詳細を参照しつつ、本発明の実施形態が説明されている。したがって、ただひとつの独占的な指標は、何が本発明であって出願人によって何が本発明を意味するものであるかは、このような請求項が出る特定の形式においてこの出願から出る請求項の一組であって、その後のいかなる修正をも含んでいる。このような請求項に含まれる用語のために、本願明細書において明確に記載するいかなる定義も、請求項において用いられているように、このような用語の意味に適用される。したがって、請求項において明白に詳述されない限定、要素、特性、特徴、利点または属性は、いかなる形であれこのような請求項の範囲を制限するものではない。したがって、明細書および図面は、制限的な意味よりもむしろ例示的な意味に考えられるものである。
【図面の簡単な説明】
【００９５】
【図１】データミラーリングの第１のアプローチを示すブロック図である。
【図２】データミラーリングの第２のアプローチを示すブロック図である。
【図３】本発明の一実施形態によるデータミラーリングシステムを示すブロック回路図である。
【図４】本発明の一実施形態による複数のサイト間のデータをミラーリングするステップを示すフローチャートである。
【図５】本発明の一実施形態によるメンバーシップの投票動作を開始する機能ステップを示すフローチャートである。
【図６】本発明の一実施形態による複数のサイト間のデータをミラーリングするステップを示すフローチャートである。
【図７】本発明の一実施形態による複数のサイト間のデータをミラーリングするステップを示すフローチャートである。
【図８】本発明の一実施形態による複数のサイト間のデータをミラーリングするステップを示すフローチャートである。
【図９】本発明の一実施形態による複数のサイト間のデータをミラーリングするステップを示すフローチャートである。
【図１０】本発明の実施形態が実行されるコンピュータシステムを示すブロック図である。
【図１】
2007518195.tif 000003
【図２】
2007518195.tif 000004
【図３】
2007518195.tif 000005
【図４】
2007518195.tif 000006
【図５】
2007518195.tif 000007
【図６】
2007518195.tif 000008
【図７】
2007518195.tif 000009
【図８】
2007518195.tif 000010
【図９】
2007518195.tif 000011
【図１０】
2007518195.tif 000012
【手続補正書】
【提出日】平成18年2月23日(2006.2.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のサイト間でデータをミラーリングするための方法であって、
第１のサイトおよび第２のサイトを含む前記複数のサイト間でレプリケーション関係を確立するステップと、
クォーラムデバイスとして特定のデバイスを確立するステップと、
前記複数のサイトのいずれかのサイトでなされる少なくともいくつかの変更を前記複数のサイトの他のサイトそれぞれに複製するステップと、
前記第１のサイトに関連付けられる第１のサーバが、書込動作の実行を要求するステップと、
前記要求に応じて、前記第１のサイトで前記書込動作を実行し、前記書込動作を前記第２のサイトでミラーリングすることを要求するメッセージを送信するステップと、
前記第１のサーバが、前記書込動作は前記第２のサイトで首尾よく実行されなかったという指示を受信するステップと、
前記指示に応じて、前記第１のサーバが、メンバーシップの投票動作を開始して、前記第１のサーバおよび前記第２のサイトに関連付けられる第２のサーバのうちのどちらが前記レプリケーション関係から取り除かれなければならないかを決定するステップとを備え、
前記メンバーシップの投票動作を開始するステップは、
前記書込動作が首尾よく実行されなかったことを前記クォーラムデバイスに通知するステップと、
前記クォーラムデバイスが、前記第１のサーバおよび前記第２のサイトに関連付けられる前記第２のサーバのうちどちらが前記レプリケーション関係から取り除かれなければならないかを決定するステップとを備え、
前記第２のサイトに関連付けられる前記第２のサーバが前記レプリケーション関係から取り除かれなければならないことが決定されると、前記第１のサーバが、書込動作が前記の第２のサイトでもはや複製されることになっていないことを示すメッセージを送信するステップとを備える、データをミラーリングするための方法。
【請求項２】
前記第２のサイトが前記レプリケーション関係を再結合するステップと、
前記第２のサイトが前記レプリケーション関係を再結合することに応じて、前記第２のサイトに関連付けられるデータを前記第１のサイトに存在するデータに再同期化させるステップと、前記第２のサイトで、前記第２のサイトに関連付けられるデータベースを据え替えるステップとをさらに備える、請求項１に記載の方法。
【請求項３】
前記メンバーシップの投票動作の間に、前記第１のサイトが前記レプリケーションメンバーシップから取り除かれなければならないことが決定されると、データが前記第１のサイトでもはや複製されることになっていないことを前記第２のサイトに通知するステップをさらに備える、請求項１に記載の方法。
【請求項４】
通知する前記ステップは、前記第２のサイトに関連付けられるファイルサーバまたは前記第２のサーバに、データが前記第１のサイトでもはや複製されることになっていないことを前記第２のサイトで通知するステップを備える、請求項３に記載の方法。
【請求項５】
前記第１のサーバおよび前記第２のサイトに関連付けられる前記第２のサーバのうちどちらが前記レプリケーション関係から取り除かれなければならないかの決定は、前記第１のサーバまたは前記第２のサーバのうちどちらがより重要であり、またはより信頼性が高いかを決定するステップを備える、請求項１に記載の方法。
【請求項６】
前記クォーラムデバイスは複数のミラーリングされたデバイスを備え、前記クォーラムデバイスに通知する前記ステップはプライマリファイルサーバによって実行され、
前記プライマリファイルサーバは、前記複数のサイトのうちの１つに関連付けられるファイルサーバであり、このプライマリサーバを介して、前記複数のサイトの他のサイトに関連付けられる他の全てのファイルサーバは前記クォーラムデバイスと通信する、請求項１に記載の方法。
【請求項７】
前記書込動作が前記第２のサイトで首尾よく実行されなかったという指示は、前記第１のサイトで受信される入出力エラーである、請求項１に記載の方法。
【請求項８】
前記複数のサイトのうち特定のサイトが作動できなくなると、前記特定のサイトから前記複数のサイトの他の各サイトに伝送されたメッセージすべてがそれらの相手先で受信されたことが確定したあとに、前記特定のサイトのリカバリを開始するステップをさらに備える、請求項１に記載の方法。
【請求項９】
複数のサイト間でデータをミラーリングするための、１つ以上の指示のシーケンスを記憶する、機械読み取り可能な媒体であって、
１つ以上のプロセッサによる前記１つ以上の指示のシーケンスの実行は、前記１つ以上のプロセッサに、
前記第１のサイトおよび第２のサイトを含む複数のサイト間でレプリケーション関係を確立するステップと、
クォーラムデバイスとして特定のデバイスを確立するステップと、
前記複数のサイトのいずれかのサイトでなされる少なくともいくつかの変更を前記複数のサイトの他のサイトそれぞれに複製するステップと、
前記第１のサイトに関連付けられる第１のサーバが書込動作を実行することを要求するステップと、
前記要求に応じて、前記第１のサイトで前記書込動作を実行し、前記書込動作を前記第２のサイトでミラーリングすることを要求するメッセージを送信するステップと、
前記第１のサーバが、前記書込動作が前記第２のサイトで首尾よく実行されなかったという指示を受信するステップと、
前記指示に応じて、前記第１のサーバがメンバーシップの投票動作を開始して、前記第１のサーバおよび前記第２のサイトに関連付けられる第２のサーバのうちのどちらが前記レプリケーション関係から取り除かれなければならないかを決定するステップとを実行させ、
前記メンバーシップの投票動作を開始するステップは、
前記書込動作が首尾よく実行されなかったことを前記クォーラムデバイスに通知するステップと、
前記クォーラムデバイスが、前記第１のサーバおよび前記第２のサイトに関連付けられる前記第２のサーバのうちどちらが前記レプリケーション関係から取り除かれなければならないかを決定するステップとを含み、
前記第２のサイトに関連付けられる前記第２のサーバが前記レプリケーション関係から取り除かれなければならないことが決定されると、前記第１のサーバが、書込動作は前記の第２のサイトでもはや複製されることになっていないことを示すメッセージを送信するステップを実行させる、機械読み取り可能な媒体。
【請求項１０】
前記１つ以上のプロセッサによる前記１つ以上の指示のシーケンスの実行は、前記１つ以上のプロセッサに、
前記第２のサイトが前記レプリケーション関係を再結合するステップと、
前記第２のサイトが前記レプリケーション関係を再結合することに応じて、前記第２のサイトに関連付けられるデータを前記第１のサイトに存在するデータに再同期化させるステップと、前記第２のサイトで前記第２のサイトに関連付けられるデータベースを据え替えるステップとをさらに実行させる、請求項９に記載の機械読み取り可能な媒体。
【請求項１１】
前記１つ以上のプロセッサによる前記１つ以上の指示のシーケンスの実行は、前記１つ以上のプロセッサに、
前記メンバーシップの投票動作の間に、前記第１のサイトが前記レプリケーションメンバーシップから取り除かれなければならないことが決定されると、データが前記第１のサイトでもはや複製されることになっていないことを前記第２のサイトに通知するステップをさらに実行させる、請求項９に記載の機械読み取り可能な媒体。
【請求項１２】
通知する前記ステップは、前記第２のサイトに関連付けられるファイルサーバまたは前記第２のサーバに、データが前記第１のサイトでもはや複製されることになっていないことを前記第２のサイトで通知するステップを備える、請求項１１に記載の機械読み取り可能な媒体。
【請求項１３】
前記第１のサーバおよび前記第２のサイトに関連付けられる前記第２のサーバのうちどちらが前記レプリケーションメンバーシップから取り除かれなければならないかの決定は、前記第１のサーバまたは前記第２のサーバのうちどちらがより重要であり、またはより信頼性が高いかを決定するステップを備える、請求項９に記載の機械読み取り可能な媒体。
【請求項１４】
前記クォーラムデバイスは複数のミラーリングされたデバイスを備え、前記クォーラムデバイスに通知する前記ステップはプライマリファイルサーバによって実行され、
前記プライマリファイルサーバは、前記複数のサイトのうちの１つに関連付けられるファイルサーバであり、このプライマリサーバを介して、前記複数のサイトの他のサイトに関連付けられる他の全てのファイルサーバが前記クォーラムデバイスと通信する、請求項９に記載の機械読み取り可能な媒体。
【請求項１５】
前記書込動作が前記第２のサイトで実行できなかったという指示は、前記第１のサイトで受信される入出力エラーである、請求項９に記載の機械読み取り可能な媒体。
【請求項１６】
前記１つ以上のプロセッサによる前記１つ以上の指示のシーケンスの実行は、前記１つ以上のプロセッサに、
前記複数のサイトのうち特定のサイトが作動できなくなると、前記特定のサイトから前記複数のサイトの他の各サイトまで伝送されたメッセージすべてがそれらの相手先で受信されたあとに、前記特定のサイトのリカバリを開始するステップをさらに実行させる、請求項９に記載の機械読み取り可能な媒体。
【国際調査報告】
2007518195.tif 000013
2007518195.tif 000014
2007518195.tif 000015