JP5264077B2 - 地理的分散型クラスタ - Google Patents

地理的分散型クラスタ Download PDF

Info

Publication number
JP5264077B2
JP5264077B2 JP2006549583A JP2006549583A JP5264077B2 JP 5264077 B2 JP5264077 B2 JP 5264077B2 JP 2006549583 A JP2006549583 A JP 2006549583A JP 2006549583 A JP2006549583 A JP 2006549583A JP 5264077 B2 JP5264077 B2 JP 5264077B2
Authority
JP
Japan
Prior art keywords
sites
site
transaction
record
replicated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2006549583A
Other languages
English (en)
Other versions
JP2007518196A (ja
Inventor
チャンドラセカラン,サシカンス
ケホー,ウィリアム・エフ
Original Assignee
オラクル・インターナショナル・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2007518196A publication Critical patent/JP2007518196A/ja
Application granted granted Critical
Publication of JP5264077B2 publication Critical patent/JP5264077B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • G06F11/2079Bidirectional techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2069Management of state, configuration or failover
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2058Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using more than 2 mirrored copies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

発明の分野
本発明は複数のサイト間におけるデータのミラーリングに関する。
発明の背景
データ・ミラーリングは、データが、第1の位置に記憶されるときに、同時に、そのデータが第1の位置から1つ以上の第2の位置にコピーされる手法である。第1の位置から1つ以上の位置にコピーされたデータは、第1の位置に記憶されたデータの正確なコピーである。したがって、データ・ミラーリングは、ミラーリング・データのバックアップを提供すること、および、災害の後で適時にデータを回復することの両方に有用である。データ・ミラーリングは、データがミラーリングされる位置から地理的に近い、あるいは遠い位置にコピーされるかに依存しない。
図1は、データ・ミラーリングに対する第1のアプローチを利用するシステム100を示すブロック図であり、サイトAに記憶されたデータは、サイトBにミラーリングされる。ファイルサーバ130は、データベース140に記憶されたデータをデータベース142に同期して複製する。ファイルサーバ130が、データベース140内のデータ・ブロックに変更を加えるデータベースサーバ120によって発行されたトランザクションを処理するごとに、ファイルサーバ130は、ファイルサーバ132への変更を反映するメッセージを送信する。メッセージを受信する際、ファイルサーバ132は、データベース140に加えられた変更を反映するために、データベース142に記憶されたデータを更新する。データベース142は、データベース140上で実行されたのと同じトランザクションをデータベース142に実行する、あるいはデータベース140に記憶されたデータの現在の状態を反映するためにデータベース142の不揮発性メモリを更新するなど、様々な手法を使用して更新することができる。
クライアント110およびクライアント112などのクライアントは、データベース内のデータを読み書きするために、データベースサーバにI/O要求を発行することが可能である。データベース140および142の一貫性を保証するために、システム100におけるすべてのクライアントは、サイトAでデータベースサーバ120を通じてすべてのI/O要求を発行し、それによって、クライアントが関連付けられたサイトに拘わらず、すべてのクライアントが、ミラーリングされるデータの同じ表示を有することを保証する。
図1に示されたデータ・ミラーリングのためのアプローチは、幾つかの問題点を有する。まず、クライアント112などのサイトAに関連付けられないクライアントからのすべてのI/O要求は、それらのクライアントが、異なるサイトでデータベースサーバにそれらのI/O要求を送信しなければならないので、性能に不利な条件に遭遇することがある。クライアントからのすべてのI/O要求が、要求しているクライアントから地理的に離れている場合がある単一のデータベースサーバを通じて送られるので、遠隔に位置するそれらのクライアントは、I/O要求について大幅な伝送遅延に直面することがある。さらに、単一のデータベースサーバは、システム100でのクライアントからのすべてのI/O要求に対してボトルネックとして作用する。
第2に、サイトAが動作不能になった場合(たとえば、ファイルサーバ130がクラッシュした場合、あるいは、利用不可能になった場合)、データベースサーバ120およびデータベースサーバ120に接続するシステム100内のすべてのクライアントは、サイトAの故障したシステムと交換するサイトBなどのバックアップ・システムが使用可能になるまで、サービスの一時的損失に遭遇する。
第3に、恐らく動作不能になるファイルサーバ130とファイルサーバ132との間の通信リンクによって、ファイルサーバ130がファイルサーバ132への書き込み動作を複製することができない場合には、1つ以上の書き込み動作を複製することができないので、データベース140および142がもはや相互に同期しないときには、データベース140あるいはデータベース142が、遭遇した問題から回復するためのバックアップ・システムとして使用されるべきか否かを判断する際に注意が必要である。データベースがバックアップ・システムとして選択され、選択されたデータベースが、システムにおけるいずれかのデータベース上で実行されたすべての書き込み動作を反映しない場合には、データベースに加えられた変更は失われる。
図2は、データ・ミラーリングのための第2のアプローチを示すブロック図である。図2が示すように、各サイトで記憶されたデータベースは、それぞれ、複数のパーティションに分割される。たとえば、データベース240は、パーティションAおよびB’を有し、データベース242は、パーティションA’およびBを有する。データベース240内のパーティションAに記憶されたデータは、データベース242内のパーティションA’にミラーリングされ、そして、データベース242内のパーティションBに記憶されたデータは、データベース240内のパーティションB’にミラーリングされる。データベース240は、パーティションAのための一次サイトとされ、データベース242は、パーティションBのための一次サイトとされている。
要求がそのサイトにミラーリングされるパーティションに記憶されたデータにみに関する(つまり、その要求を発行するクライアント、およびその要求を提供するデータベースは、両方とも同じサイトにある)場合、かつその場合に限って、クライアントからのデータ書き込みまたは読み出し要求は、ローカルで実行することができる。たとえば、クライアント210がパーティションA内のデータ・ブロックに書き込み、あるいは読み出し要求を発行する場合には、その要求は、データベース240でローカルに実行されることが可能である。しかしながら、クライアント210がパーティションB内のデータ・ブロックへの書き込み、あるいは読み出し要求を発行する場合には、データベースサーバ220は、その要求がデータベース242で実行されることができるように、ファイルサーバ232にその要求を送るであろう。このようにデータをパーティションで区切ることは、一次サイトがローカル・サイトであるパーティション内で、データに対してトランザクションを処理することの実行遅れを低減する一助となる。しかしながら、この手法は、一次サイトがリモート・サイトであるパーティション内でデータに対してトランザクションを処理することの実行遅れを低減しない。
しかし、このアプローチは、サイト間でデータを複製することができない場合には、あるいは特定のサイトが動作不能になった場合に、問題がある。第1のサイト(一次サイト)上のパーティションから第2のサイト(二次サイト)上の対応するパーティションにデータを複製することができないときには、一次サイトでのデータベースには、複製が成功しなかったことは、通知されない。その結果、二次サイトに複製されたデータを記憶しているパーティションは、陳腐化し、古くなることがある。その後、一次サイトが動作不能になった場合には、そこに記憶されたデータが古いので、二次サイトに複製されたデータを記憶するパーティションは、一次サイトの動作不能状態から回復するのに使用されることはできない。古いデータの使用は、データベースの一貫性原則に違反する。
したがって、上述されたアプローチに関連する問題を回避しつつ、データをミラーリングする技術において対処されていない要求が存在する。
この項に記述されたアプローチは、追求することができたアプローチではあるが、必ずしも以前に着想あるいは追求されたアプローチである必要はない。したがって、もし他の方法で示されなければ、この項に記述されたアプローチのうちのいずれも単にこの項へのそれらの包含による先行技術としての資格を有すると仮定されるべきではない。
本発明は、添付の図面の図において、限定としてではなく実施例として示されており、同じ参照番号は類似の要素を示す。
発明の詳細な説明
複数のサイト間でデータをミラーリングする方法およびシステムが記述される。次の記述では、説明の目的のために、多数の特定の詳細が本発明についての完全な理解を提供するために説明される。しかしながら、本発明は、これらの特定の詳細なしに実施されてもよいことは明らかである。他の例では、よく知られている構造および装置が、本発明を不必要に不明瞭にしないようにするためにブロック図の形態で示されている。
(アーキテクチャー概要)
図3は、本発明の実施形態にかかるデータ・ミラーリング・システム300を示すブロック・ネットワーク図である。データ・ミラーリング・システム300は、データ・ミラーリング・システム300における各サイト間でデータを双方向に複製するのに使用されることが可能である。さらに、ここで記述されるように、他の利点が、データ・ミラーリング・システム300を使用して達成されることが可能である。図3のデータ・ミラーリング・システム300は、サイト310およびサイト312、クライアント320およびクライアント322、データベースサーバ330およびデータベースサーバ332、ファイルサーバ340およびファイルサーバ342、データベース350およびデータベース352、定足数装置360、通信リンク370、372、374、および376を備えている。
サイトは、ここで広く使用されているように、データ・ミラーリング・システム300における物理的な要素の論理的な集合体を表わしている。データは、データ・ミラーリング・システム300において、第1のサイトから第2のサイトに複製されることが可能である。データ・ミラーリング・システム300の多数の要素は、1つのサイトで記憶されることが可能である。たとえば、1つのサイトは、1つ以上のクライアント、1つ以上のデータベースサーバ、1つ以上のファイルサーバ、1つ以上のデータベース、および、1つ以上の定足数装置を備えることが可能である。サイトにおける物理的な要素の論理的な集合体は、サイズが変化する領域に物理的に配置されることがある。たとえば、サイトは、特定の建物、建物の特定の階、あるいは建物の特定の部屋に相当する場合がある。さらに、サイトは、相互に物理的に近いか、あるいは離れていることがある。説明の容易さのために、図3は、単に2つのサイトを示している。しかしながら、実施形態は、単一のサイトを含む、任意の数のサイトを有することが可能である。
クライアントは、ここでは広く使用されているように、サービスの要求を発行することができる任意のソフトウェアまたはハードウェアの要素を表わしている。たとえば、データベースサーバへの要求を発行することができる要素は、典型的には、データベース・クライアントと呼ばれる。説明の容易さのために、各サイトは、図3において単一のクライアントで図示されている。しかしながら、サイトは、任意の数のクライアントを含むこと
が可能である。クライアント320および322のようなクライアントの限定的でない説明的な実施例は、ソフトウェア・アプリケーション、パーソナル・コンピュータ、データベースサーバに要求を発行することができるマシン、およびデータベースサーバを含んでいる。
データベースサーバ330およびデータベースサーバ332のようなデータベースサーバは、データの管理のために使用される1つ以上のソフトウェアおよび/またはハードウェア要素である。データベース管理の他の機能の中で、データベースサーバは、典型的には、データベースへのアクセス、およびデータベースにアクセスするデータベース・クライアントによる処理要求を管理し、容易にする。2つのデータベースサーバ(すなわち、データベースサーバ330およびデータベースサーバ332)だけが図3に示されているが、任意の数のデータベースサーバがデータ・ミラーリング・システム300内で利用されることが可能である。
ファイルサーバは、ここで広く使用されているように、ファイルのハンドリングおよび記憶機能を実行することができる任意のハードウェアまたはソフトウェア要素を表わしている。ファイルサーバ340およびファイルサーバ342のようなファイルサーバは、データベースサーバから受信され、データベース上で実行される動作を読み書きする。ファイルサーバは、データベース管理システム、あるいはデータベース管理システム内のモジュールから個別に、および無関係に実行するシステムを含むことが可能であるため、用語「ファイルサーバ」が、ここでは広く使用されていることに留意するべきである。
データベース350およびデータベース352のようなデータベースは、電子情報の永続的な記憶装置である。データベースの限定的でない説明的な実施例は、リレーショナル・データベース、オブジェクト指向型データベース、多次元データベース、コンピュータの分散したクラスタ中のデータベース、およびサーバ・ブレードのグリッド内のデータベースを含んでいる。データベースサーバの分散したクラスタは、米国特許第6,353,836号にさらに詳細に説明されており、参照することによってその全体がここに取り込まれる。1組のデータベースサーバが動作するグリッドは、その全体が参照によってここに組み込まれる米国仮特許出願第60/500,050号にさらに詳細に説明されている。
定足数装置は、ここで広く使用されているように、メンバーシップ投票動作を実行することができるソフトウェア要素の任意のハードウェアを表わしている。本実施形態においては、メンバーシップ投票動作は、どのデータベースサーバが複製メンバーシップから除去されるべきかを判断している。定足数装置360のような定足数装置の動作は、「双方向複製」と表題をつけられた項目中でさらに詳細に以降に説明される。説明の容易さのために、1つの定足数装置だけが図3に示されている。しかしながら、データ・ミラーリング・システム300の実施形態は、任意の数の定足数装置を含むことが可能である。
通信リンク370および372は、データベースサーバ(たとえば、データベースサーバ330またはデータベースサーバ332、および定足数装置360)間でのデータの交換を提供する任意の媒体あるいは機構によって実現されることが可能である。通信リンク374および376は、ファイルサーバ(たとえばファイルサーバ340、ファイルサーバ342)間でデータの交換を提供する任意の媒体あるいは機構によって実施されることが可能である。通信リンク370、372、374、および376の実施例は、非限定的に、ローカル・エリア・ネットワーク(Local Area Network(LAN))、ワイド・エリア・ネットワーク(Wide Area Network(WAN))、イーサネット(登録商標)またはインターネット、または一もしくは複数の地上、衛星もしくは無線リンクのようなネットワークを含んでいる。
(ミラーリング環境におけるエラー・ハンドリング − 概要)
方法および機構が、複数のサイト間でデータをミラーリングするために示されている。1つの手法によれば、複製関係は、第1のサイトおよび第2のサイトを含む複数のサイト間で確立される。本実施形態においては、複製関係は、複数のサイトのうちの任意のサイトでなされた少なくとも幾つかの変更が、複数のサイトのうちの他のサイトのそれぞれで複製されることを提供する。
複製関係の第1のサイトに関連付けられた第1のデータベースサーバは、書き込み動作の実行を要求する。その後、書き込み動作が、第1のサイトで実行される。メッセージは、書き込み動作が複製関係の第2のサイトにミラーリングされることを要求するように送信される。
説明の目的で、第2のサイトが書き込み動作をうまく実行することができなかったと仮定する。したがって、第1のデータベースサーバは、書き込み動作が第2のサイトでうまく実行できなかったという印を受信する。これに応じて、第1のデータベースサーバは、第2のサイトに関連付けられた第1のデータベースサーバあるいは第2のデータベースサーバが複製メンバーシップから除去されるべきか否かを判断するために、メンバーシップ投票動作を開始する。
一実施形態においては、第1のデータベースサーバは、定足数装置と通信することによってメンバーシップ投票動作を開始する。定足数装置は、メンバーシップ投票動作を実行することができるハードウェアまたはソフトウェア要素である。定足数装置は、どのデータベースサーバがより重要か、あるいは、より信頼できるかのような、多くの要因に基づいた複製メンバーシップから、どのデータベースサーバが除去されるべきかを判断することが可能である。定足数装置は、メンバーシップを判断するために、様々なメンバーシップ投票プロトコルを利用することが可能である。
第2のサイトに関連付けられた第2のデータベースサーバが複製メンバーシップから除去されるべきであると判断した場合には、第1のデータベースサーバは、書き込み動作が第2のサイトでもはや複製されることがないことを示すメッセージを第1のサイトのファイルサーバに送信することが可能である。追加の実施形態が、さらに詳細に以下に記述される。
(優先度に基づく確定ハンドリング − 概要)
本手法も、トランザクションに関連付けられた優先度値に基づくトランザクションの確定を取り扱うために提供されている。1つの手法によれば、データは、複数のサイト間でミラーリングされる。複数のサイトのうちの第1のサイトでは、第1のレコードが維持されている。第1のレコードは、第1のサイトで実行されたどのトランザクションが複数のサイトのうちの他のサイトに複製されたそれらのやり直し情報を有しているかを識別する。やり直し情報は、ここで広く使用されているように、トランザクションについて記述する情報を表わしている。さらに、第1のサイトでは、第2のレコードが維持されている。第2のレコードは、第1のサイトで実行されたどのトランザクションが第1のサイトで固定記憶域にログを取られたそれらのやり直し情報を有しているかを識別する。
第1のサイトで実行されるトランザクションに関連付けられた優先度値が判断される。そのトランザクションは、データ・ブロックへの修正を特定する。やり直し情報は、典型的には、やり直しログ・ファイルに記憶される。ほとんどの実施では、やり直しログ・ファイルは、トランザクションが確定する順に連続してやり直し情報を記憶する。したがって、優先度の高いトランザクション(それが発行されたサイトが動作不能になった場合に、トランザクションが失われるべきではないことを示す優先度値を備えたトランザクション)に関連付けられたやり直し情報が複製されたことを保証することは、優先度の高いト
ランザクションが既に複製される前に、優先度の低いトランザクション(それが発行されたサイトが動作不能になった場合に、トランザクションが失われることがあることを示す優先度値を備えたトランザクション)に関連付けられたやり直し情報が確定されたことを保証する。
優先度値が、第1のサイトが動作不能になった場合にトランザクションが失われるべきではないことを示すときには、トランザクションは、第1のレコードがすべての他のトランザクションが確定されたことを示した後であって、第1のサイトでのトランザクションが複数のサイトのうちの他のサイト複製されたそれらの対応するやり直し情報を有する前にのみ、確定される。
しかしながら、一実施形態においては、優先度値が、第1のサイトが動作不能になった場合にトランザクションが失われる場合があることを示すときには、トランザクションは、第1のサイトでのトランザクションが複数のサイトのうちの他のサイトに複製されたそれらの対応するやり直し情報を有する前であって、第1のレコードが、確定されたすべての他のトランザクションが確定されることを示す前に確定される。他の実施形態においては、優先度値が、第1のサイトが動作不能になった場合にトランザクションが失われる場合があることを示すときには、トランザクションは、第1のサイトでのトランザクションが第1のサイトで固定記憶域に記憶されたそれらの対応するやり直し情報を有する前であって、第2のレコードが、確定されたすべての他のトランザクションが確定されることを示した後で確定される。
追加の実施形態は、さらに詳細に以下に記述される。
(双方向複製)
さらに詳細に以下に説明されるように、実施形態は、システム300の各サイトでの、同時の、ローカル読み取り動作およびローカル書き込み動作をサポートしている。書き込み動作は、システム300内のサイト相互に同期あるいは非同期に複製されることが可能である。一実施形態においては、書き込み動作の性能は、別のサイトへの書き込み動作の複製の延期によって強化されることが可能である。たとえば、別のサイトへの書き込み動作の複製は、優先度の高いトランザクションが確定する必要があるまで、あるいは、先書きログまたは後書きログが保存される必要がある時点へ延期されることが可能である。書き込み動作の延期は、書き込み動作の複製が効率的にバッチ処理されることを可能にする。
図4は、実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャート400である。最初に、ステップ410において、複製関係が複数のサイト間で確立される。本実施形態においては、複製関係は、データ・ミラーリング・システム300内の各サイトに対して確立される。たとえば、複製関係は、図3のサイト310およびサイト312に対して確立される。一実施形態においては、複製関係は、データ・ミラーリング・システム300内のいずれかのサイトに加えられた少なくとも幾つかの変更が、データ・ミラーリング・システム300内の他のサイトのそれぞれに複製されることを提供する。ステップ410の実行後、処理は、ステップ420に進む。
ステップ420において、複数のサイトのうちの第1のサイトに関連付けられた第1のデータベースサーバは、書き込み動作の実行を要求する。本実施形態においては、ステップ420は、サイト310で、データベースサーバ330によって実行され、書き込み動作の実行を要求することが可能である。書き込み動作は、データベース350のような、第1のサイトにあるデータベースにデータを書き込む動作であることが可能である。ステップ420の実行の後で、処理は、ステップ430に進む。
ステップ430において、ステップ420で要求された書き込み動作は、第1のサイトで実行される。一実施形態においては、書き込み動作は、データベース350で書き込み動作を実行するようにファイルサーバ340に指示するデータベースサーバ330によってサイト310で実行されることが可能であり、その後、ファイルサーバ340は、データベース350で書き込み動作を実行する。さらに、ステップ430において、書き込み動作が第2のサイトにミラーリングされることを要求するメッセージが送信される。一実施形態においては、ファイルサーバ340は、サイト312でファイルサーバ342に書き込み動作をミラーリングする要求を送信することが可能である。ステップ430の実行の後で、処理は、ステップ440に進む。
各サイトでの各データベース・サーバは、1つ以下の書き込み動作が、ディスク上に同時に永続的に記憶された同じデータ・ブロックを変更することがあることを保証する機構を使用するので、書き込み動作は、システム内の各サイトで実行されることが可能であることを注記しておく。そのような機構は、様々な手法を使用して実施されることができる。それは、グローバル・ロック・マネージメント(共有ディスク・クラスタ)あるいはディスクの分割(非共有クラスタ)の形態を含むことが可能である。
ステップ440において、第1のデータベースサーバは、第2のサイトで書き込み動作をうまく実行することができないという印を受信する。たとえば、データベースサーバ330は、サイト312で書き込み動作をうまく実行することができないという印を受信する。一実施形態においては、その印は、メンバーシップ投票動作が実行されるべきであることを示す入力/出力エラーである。入力/出力エラーは、データベースサーバ330によってメッセージで受信される固有のエラー・コードを使用して表現されることが可能である。サイト310で受信された印は、サイト312で書き込み動作を複製することができないと識別する入力/出力エラーであることが可能である。一実施形態においては、その印は、データ・ミラーリング・システム300内の1つのサイトがデータ・ミラーリング・システム300内の別のサイトで実行された書き込み動作を反映しないときに、ステップ440でのみ、受信される。したがって、データベースサーバ332が故障した場合には、ステップ440の印は、サイト310によって受信されない。一実施形態においては、ファイルサーバ342が故障したか、データベース352が故障したか、通信リンク374が故障したか、あるいは、通信リンク376が故障した場合には、サイト310は、ステップ440の印を受信する。ステップ440の実行の後で、処理は、ステップ450に進む。
ステップ450において、第1のデータベースサーバは、第1のデータベースサーバあるいは、第2のサイトに関連付けられた第2のデータベースサーバが、複製メンバーシップから除去されるべきか否かを判断するために、メンバーシップ投票動作を開始する。たとえば、ステップ450は、データベースサーバ330あるいはデータベースサーバ332が、複製メンバーシップから除去されるべきか否かを判断するために、メンバーシップ投票動作を開始するデータベースサーバ330によって実行されることが可能である。
一実施形態においては、第1のデータベースサーバは、定足数装置と通信することによって、メンバーシップ投票動作を開始する。たとえば、データベースサーバ330は、定足数装置360と通信リンク370を通じて通信することによって、メンバーシップ投票動作を開始する。
図5は、本発明の実施形態にかかるメンバーシップ投票動作を開始する機能ステップを示すフローチャートである。ステップ510において、定足数装置は、書き込み動作をうまく実行することができないことを通知される。たとえば、ステップ510は、サイト312で書き込み動作をうまく実行することができなかったことを通信リンク370を通じ
て定足数装置360に通知するデータベースサーバ330によって実行されることが可能である。ステップ510の実行の後で、処理は、ステップ520に進む。
ステップ520において、ステップ510で通知された定足数装置は、どのデータベースサーバが複製メンバーシップから除去されるべきかを判断する。たとえば、ステップ520は、どのデータベースサーバが複製関係から除去されるべきかを判断する定足数装置360によって実行されることが可能である。本実施形態においては、どのデータベースサーバが複製関係から除去されるべきかの判断は、どのデータベースサーバが、より重要かあるいはより信頼できるかを判断することを含んでいる。データ・ミラーリング・システム300内のすべてのデータベースサーバが等しく重要あるいは信頼できる場合には、デフォルト・データベース・サーバは、定足数装置によって選択されることが可能である。
一実施形態においては、データベースサーバ332が複製メンバーシップから除去されるべきであると定足数装置360が判断した場合には、データベースサーバ330は、サイト310で実行された書き込み動作がもはやサイト312で複製することができないことを示すメッセージを、ファイルサーバ340に送信する。これに代えて、サイト310が複製メンバーシップから除去されるべきであると定足数装置360が判断した場合には、データベースサーバ332は、もはやサイト310でデータが複製されることがないことをファイルサーバ342に通知する。ファイルサーバは、もはや異なるサイトに書き込み動作が複製されなくても、依然として、ローカルで読み書き動作を処理することができる。
一実施形態においては、定足数装置360は、複数のミラーリング装置で構成され、ステップ510は、一次ファイルサーバによって実行される。一次ファイルサーバは、複数のサイトのうちの1つに関連付けられたファイル・サーバであり、それを通じて、複数のサイトのうちの他のサイトに関連付けられたすべての他のファイルサーバが、定足数装置と通信する。たとえば、データベースサーバ330は、一次ファイル・サーバであることが可能である。したがって、データベースサーバ332は、データベースサーバ330を通じて定足数装置360と通信する。
他の実施形態においては、定足数装置360は、データ・ミラーリング・システム300内のいずれの他のサイトとも異なる故障領域に関連付けられた別のサイトに位置している。この実施形態においては、データ・ミラーリング・システム300内の各データベース・サーバは、定足数装置360と直接接触することが可能である。しかしながら、定足数装置360が故障した場合には、データ・ミラーリング・システム300内の各サイトは故障する。なぜならば、たとえそれらのサイトが、さもなければ正常で、相互にネットワークおよび入力/出力接続を有していても、各サイトが定足数装置360と通信することができないからである。
一実施形態においては、サイトは、そのサイトでデータベースサーバが複製メンバーシップから除去されるべきであると定足数装置が判断した後で、複製関係を復帰させることが可能である。たとえば、もしサイト312が複製関係から除去された場合であっても、サイト312は、複製関係を復帰させることが可能である。複製関係を復帰させるサイト312に応じて、サイト312のデータは、サイト310のデータと再同期され、データベース352は、再び組み込まれる。
(やり直し情報書き込みの性能改善)
書き込み動作の同期複製は、書き込み動作の待ち時間およびコストを増加させる。さらに、ファイルサーバは、非同期に書き込み動作を複製してもよいが、まだ複製されていない他の場所で開始された書き込み動作、およびこれから発行される書き込み動作を調整す
るための注意が払われなければならない。非同期複製を有利に利用する多数の実施形態が下に説明される。
非同期複製を通じてやり直し情報を書き込む性能を改善する幾つかの実施形態が以下に説明される。やり直し情報は、ここで広く使用されているように、トランザクションについて記述する情報を表わしている。本実施形態においては、やり直し情報は、確定されているか、あるいはこれから確定されるトランザクションについて記述している。本実施形態においては、やり直し情報は、やり直しログ・ファイルに記録されることが可能である。やり直し情報は、確定されているトランザクションを巻き戻す、あるいは「取消す」ことに使用されることが可能である。
図6は、本発明の実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャートである。図6において示されたステップは、複数のサイト間でやり直し情報をミラーリングするのに使用されることが可能である。最初に、ステップ610において、第1のレコードが複数のサイトのうちの第1のサイトに維持されている。第1のレコードは、第1のサイトで実行されたどのトランザクションが複数のサイトのうちの他のサイトに複製されたそれらのやり直し情報を有しているかを識別する。ステップ610は、サイト310のデータベースサーバ330によって実行されることが可能である。本実施形態においては、ステップ610は、やり直しログ・ファイルの一部を識別することによって実行されることが可能である。ステップ610のやり直しログ・ファイルの識別された部分に反映されたすべてのトランザクションは、複数のサイトのうちの他のサイトに複製されている。
たとえば、ステップ610において識別されたやり直しログ・ファイルの部分は、やり直しログ・ファイルに反映された特定のトランザクションを識別するレコードを維持することによって識別されることが可能である。そのやり直しログ・ファイルは、複数のサイトのうちの他のサイトに複製されたその対応するやり直し情報を有しており、最大ログ連続番号(Log Sequence Number(LSN))に関連付けられている。特定のトランザクションに関連付けられたLSN以下であるLSNを有したやり直しログ・ファイル中のすべてのトランザクションは、複数のサイトのうちの他のサイトに複製されたそれらのやり直し情報を有するやり直しログ・ファイルの識別された部分に存在する。ステップ610の実行の後で、処理は、ステップ620に進む。
ステップ620において、第2のレコードは、複数のサイトのうちの第1のサイトで維持される。第2のレコードは、第1のサイトで実行されたどのトランザクションが、第1のサイトで固定記憶域にログを取られたそれらのやり直し情報を有しているかを識別する。ステップ620は、サイト310のデータベースサーバ330によって実行されることが可能である。本実施形態においては、ステップ620は、やり直しログ・ファイルの一部を識別することによって実行されることが可能である。ステップ620のやり直しログ・ファイルの識別された部分に反映されたすべてのトランザクションは、第1のサイトで固定記憶域に記録されている。
たとえば、ステップ620で識別されたやり直しログ・ファイルの部分は、第1のサイトで固定記憶域にログを取られたその対応するやり直し情報を有しており、最大ログ連続番号(LSN)に関連付けられたやり直しログ・ファイルに反映された特定のトランザクションを識別するレコードを維持することによって識別されることが可能である。特定のトランザクションに関連付けられたLSN以下であるLSNを有したやり直しログ・ファイル中のすべてのトランザクションは、第1のサイトで固定記憶域にログを取られたそれらのやり直し情報を有しているやり直しログ・ファイルの識別された部分に存在する。ステップ620の実行の後で、処理は、ステップ630に進む。
ステップ630において、トランザクションに関連付けられた優先度値が判断される。優先度値は、トランザクションがいつ確定するのかを、そのトランザクションの重要性に基づいて判断するのに使用されることが可能である。たとえば、第1のサイトが動作不能になった場合に特定のトランザクションが失われなければ、そのトランザクションは、第1のサイトが動作不能になった場合に失い得るトランザクションよりも優先度の高い値を与えられることが可能である。
一実施形態においては、ステップ630の優先度値に関連付けられたトランザクションは、第1のサイトで実行される。一実施形態においては、そのトランザクションは、修正が少なくとも1つのデータ・ブロックに加えられることを特定する。トランザクションによって修正されたデータ・ブロックは、サイト310のデータベース350内に存在することがある。説明の容易さのために、トランザクションは、1つのデータ・ブロックを修正するように説明されるが、トランザクションは、複数のデータ・ブロックを修正するものであってもよい。ステップ630は、サイト310のデータベースサーバ330によって実行されることが可能である。ステップ630の実行の後で、処理は、ステップ640に進む。
ステップ640において、判断は、第1のサイトが動作不能になった場合にトランザクションが失われるべきではないことを、先の値が示すか否かに関してなされる。ステップ640は、サイト310のデータベースサーバ330によって実行されることが可能である。
ステップ640の判断が肯定的な場合(優先度値が、第1のサイトが動作不能になった場合にトランザクションが失われるべきではないことを示す)、処理は、ステップ650に進む。ステップ650において、トランザクションは、トランザクションに関連付けられたやり直し情報がデータ・ミラーリング・システム300内の他のサイトのそれぞれに複製されたことを第1のレコードが示した後でのみ確定される。ステップ650は、サイト310のデータベースサーバ330によって実行されることが可能である。
一実施形態においては、トランザクションに関連付けられたやり直し情報が複数のサイトのうちの他のサイトに複製されているか否かのステップ650でなされた判断は、トランザクションに関連付けられた確定レコードを第1のレコードと比較することによって実行される。
ステップ640の判断が否定的な場合(優先度値が、第1のサイトが動作不能になった場合にトランザクションが失われることがあることを示す)、処理は、ステップ660に進む。ステップ660において、トランザクションは、当該トランザクションに関連付けられたやり直し情報が第1のサイトで固定記憶域に記憶されたことを第2のレコードが示した後でのみ確定される。ステップ660は、サイト310のデータベースサーバ330によって実行されることが可能である。
一実施形態においては、トランザクションに関連付けられたやり直し情報が固定記憶域に記憶されたか否かについてのステップ660でなされた判断は、トランザクションに関連付けられた確定レコードを第2のレコードと比較することによって実行される。
代替的な実施形態(図6において示さず)においては、ステップ660は、トランザクションに関連付けられたやり直し情報が複数のサイトのうちの他のサイトに複製されていることを第1のレコードが示す前に、トランザクションを確定することによって実行されることが可能である。一実施形態においては、サイト310のデータベースサーバ330
は、トランザクションに関連付けられたやり直し情報が複数のサイトのうちの他のサイトに複製されていることを第1のレコードが示す前に、トランザクションを確定する。トランザクションによって生成されたやり直し情報は、トランザクションに関連付けられたと見なされる。
上述された実施形態は、トランザクションの重要性に基づいてトランザクションをいつ確定すべきかの判断を有利に可能にする。たとえば、特定のトランザクションが非常に重要なトランザクションである場合(任意の状況下でも失われてはならない)、そのトランザクションの前に確定されたすべての他のトランザクションが他のサイトに複製された対応するやり直し情報を有していることを第1のレコードが示した後でのみ、トランザクションが確定される。しかしながら、さほど重要でないトランザクションは、そのトランザクションの前に確定されたすべての他のトランザクションが第1のサイトで固定記憶域に記憶されたそれらの対応するやり直し情報を有していることを第2のレコードが示した後で、確定されることが可能である。この方法においては、さほど重要でないトランザクションは、非常に重要なトランザクションよりも早く確定されることがあるが、確定された重要でないトランザクションは、確定されたトランザクションに関連付けられた変更が複数のサイトのうちの他のサイトにミラーリングされる前に第1のサイトが動作不能になった場合に、失われることがある。
複製段階の書き込み動作が遅れ、その書き込み動作を出した特定のサイトが動作不能になった場合には、生き残ったサイトは、動作不能なサイトの回復を開始する前に、複数のサイトのうちの他のサイトのそれぞれで受信される動作不能なサイトから送信されたすべてのメッセージを待たなければならない。この履行は、そのサイトが動作不能になるのに先立って動作不能なサイトから送信され、そして、まだ受信されていないメッセージが、回復を開始したかあるいは動作不能なサイトの回復を完了した後で生き残ったサイトによって、処理されないことを保証する。これに代えて、生き残ったサイトは、1つ以上の生き残ったサイトが動作不能なサイトの回復を開始したかあるいは完了した後で、動作不能なサイトから送信された任意のメッセージを無視することも可能である。
図7は、本発明の実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャートである。図7において示されたステップは、やり直しログへの書き込み動作の複製を有利に遅らせるために使用されることが可能である。データベースサーバがやり直しログにデータを書き込む待ち時間を低減することは有利である。データベースサーバは、直前に確定されたトランザクションの損失をサイト故障の事態に許容することができることを提供された、やり直しログへの書き込みの複製を遅らせることができる。以下に説明される本発明の実施形態は、永続的に記憶されていない変更を反映するデータ・ブロックが、永続的に記憶されるかあるいは別のサイトに転送されるまで、やり直しログへの書き込みの複製を有利に遅らせる。
最初に、ステップ710において、トランザクションは、複数のサイトのうちの第1のサイトで処理される。ステップ710は、書き込み動作のようなトランザクションを処理するサイト310のデータベースサーバ330によって実行されることが可能である。
ステップ720において、情報が、処理されたトランザクションを反映するように生成される。その情報は、揮発性メモリ内に生成されることが可能である。情報は、処理されたトランザクションに関するやり直し情報を含むことが可能である。ステップ720は、サイト310のデータベースサーバ330によって実行されることが可能である。処理されたトランザクションを反映する情報が生成された後で、処理は、ステップ730に進む。
ステップ730において、判断は、処理されたトランザクションに関連付けられたデータ・ブロックが、永続的に記憶されるかあるいはそのデータ・ブロックが別のサイトに転送される前に、ステップ720で生成された情報が永続的に記憶されたか否かに関してなされる。ステップ730は、サイト310のデータベースサーバ330によって実行されることが可能である。
ステップ730の判断が肯定的な場合(処理されたトランザクションに関連付けられたデータ・ブロックが、永続的に記憶されるかあるいはデータ・ブロックが別のサイトに転送される前に、ステップ720で生成された情報が永続的に記憶される)、処理は、ステップ740に進む。ステップ740において、データ・ブロックが永続的に記憶されるか、データ・ブロックが複数のサイトのうちの別のサイトに転送される前に、ステップ720で生成された情報は、永続的に記憶される。
一実施形態においては、ステップ740は、複数のトランザクションに関する情報が永続的に記憶されるように実行されることが可能である。たとえば、第1のサイトで、第2のトランザクションが処理され、情報が、処理された第2のトランザクションを反映する第1のサイトで揮発性メモリ内に生成されることが可能である。ステップ720で生成された情報(以下、「第1の情報」)および第2のトランザクションを反映する情報(以下、「第2の情報」)が、処理された第2のトランザクションに関連付けられた第2のデータ・ブロックが永続的に記憶されるか、あるいは、第2のデータ・ブロックが複数のサイトのうちの別のサイトに転送される前に永続的に記憶されない場合には、第1の情報および第2の情報は、第2のデータ・ブロックが永続的に記憶されるか、または第2のデータ・ブロックが複数のサイトのうちの別のサイトに転送される前にバッチ処理を使用して永続的に記憶されることが可能である。一実施形態においては、データベースサーバ330は、バッチ処理を使用する第1の情報および第2の情報を永続的に記憶している。一実施形態においては、バッチ処理は、非同期であることが可能である。非同期バッチ処理の結果は、入力/出力結果ディスクリプタ(たとえば、UNIXのaio_result_t)を使用して判断されることが可能である。非同期入出力結果ディスクリプタは、バッチ処理が処理をいつ完了したかを判断するのに使用されることが可能である。
ステップ730の判断が否定的な場合(処理されたトランザクションに関連付けられたデータ・ブロックが永続的に記憶されるか、あるいは、データ・ブロックが別のサイトに転送される前に、ステップ720において生成された情報が永続的に記憶されていない)、処理は、ステップ750に進む。ステップ750において、処理されたトランザクションに関連付けられたデータ・ブロックは、永続的に記憶されるか、あるいは、転送される。
(データベース・ファイル書き込みの性能の改善)
非同期複製を通じたデータベース・ファイルへの書き込み性能を改善する幾つかの実施形態が下に説明されている。図8は、本発明の実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャートである。図8において示されているステップは、先書きログ・スキームを使用してデータベース・ファイルに書き込むのに使用されることが可能である。
最初に、ステップ810において、第1のレコードは、複数のサイトのうちの第1のサイトで維持される。第1のレコードは、第1のサイトで記憶された1つ以上のデータ・ブロックに加えられたどの変更が複数のサイトのうちの他のサイトに複製された、関連付けられたやり直し情報を有しているかを識別するものである。第1のサイトは、先書きログ・スキームを実施する。先書きログ・スキームにおいては、永続的に記憶されない変更を反映するバッファ・キャッシュ内のデータ・ブロック(「汚い」データ・ブロック)は、または複数のデータ・ブロックに関連付けられたやり直し情報が永続的に記憶された後で
のみ、永続的に記憶される。一実施形態においては、第1のサイトは、トランザクションの実行に対して、複数のサイトのうちの他のサイトにトランザクションを非同期に複製する。ステップ810は、サイト310でデータベース350に記憶された1つ以上のデータ・ブロックに加えられたどの変更がサイト312に複製された、関連付けられたやり直し情報を有しているかを識別する第1のレコードを維持するサイト310のデータベースサーバ330によって実行されることが可能である。複数のサイトのうちの他のサイトに複製されたやり直し情報を関連付けられた1つ以上のデータ・ブロックに加えられた変更は、各変更をやり直しログ内のログ連続番号(LSN)に割り当て、複製されている直前の変更のログ連続番号を記憶することによって追跡されることが可能である。さらに、特定のデータ・ブロックに加えられた最後の変更に関連付けられたLSNは、特定のデータ・ブロックのヘッダに記憶される。ステップ810の実行の後で、処理は、ステップ820に進む。
ステップ820において、第2のレコードは、複数のサイトのうちの第1のサイトで維持される。第2のレコードは、第1のサイトで記憶された1つ以上のデータ・ブロックに加えられたどの変更が、複数のサイトのうちの第1のサイトで固定記憶域にログを取られた、関連付けられたやり直し情報を有しているかを識別する。複数のサイトのうちの第1のサイトで固定記憶域にログを取られたやり直し情報を関連付けた1つ以上のデータ・ブロックに加えられた変更は、やり直しログ内のログ連続番号(LSN)に各変化を割り当て、固定記憶域にログを取られた直前の変更のログ連続番号を記憶することによって追跡されることが可能である。ステップ820は、第2のレコードを維持するサイト310のデータベースサーバ330によって実行されることが可能である。第2のレコードは、サイト310でデータベース350に記憶された1つ以上のデータ・ブロックに加えられたどの変更が、サイト310で固定記憶域にログを取られた、関連付けられたやり直し情報を有しているかを識別する。ステップ820の実行の後で、処理は、ステップ830に進む。
ステップ830において、判断は、第1のサイトが、書き込みトランザクションが第1のサイトで発行されたのと同じ順に、書き込みトランザクションが複製されるか否かに関してなされる。サイト310のデータベースサーバ330は、ステップ830を実行することが可能である。
ステップ830の判断が肯定的な場合(第1のサイトが、書き込みトランザクションが第1のサイトで完了されたのと同じ順に、書き込みトランザクションを複製する)、処理は、ステップ840に進む。ステップ840において、第1のサイトで記憶された1つ以上のデータ・ブロックに加えられたいずれの変更も、固定記憶域にログを取られたやり直し情報を有していることを第2のレコードが示した後で、データ・ブロックは永続的に記憶される。1つ以上のデータ・ブロックに加えられた変更は、1つ以上のトランザクションによって実行されることが可能である。ステップ840は、サイト310でデータベース350に記憶された1つ以上のデータ・ブロックに加えられたいずれの変更も、サイト310で固定記憶域にログを取られた、関連付けられたやり直し情報を有していることを第2のレコードが示した後で、データベース350に特定のデータ・ブロックを永続的に記憶することによって実行されることが可能である。
ステップ830の判断が否定的な場合(第1のサイトが、書き込みトランザクションが第1のサイトで完了されたのと同じ順には、書き込みトランザクションを複製しない)、処理は、ステップ850に進む。ステップ850において、第1のサイトで記憶された1つ以上のデータ・ブロックに加えられたいずれの変更も、複数のサイトのうちの他のサイト複製されたやり直し情報を有していることを第1のレコードが示した後で、データ・ブロックは永続的に記憶される。1つ以上のデータ・ブロックに加えられた変更は、1つ以
上のトランザクションによって実行されることが可能である。ステップ850は、サイト310でデータベース350に記憶された1つ以上のデータ・ブロックに加えられたいずれの変更が、複数のサイトのうちの他のサイトに複製された、関連付けられたやり直し情報を有していることを第1のレコードが示した後で、サイト310のデータベース350に特定のデータ・ブロックを永続的に記憶することによって実行されることが可能である。特定のデータ・ブロックに加えられた変更が複数のサイトのうちの他のサイトに複製されたことを第1のレコードが示した後で、データ・ブロックに関連付けられたロックは、解除されることが可能である。具体的には、共有ディスクあるいは共有キャッシュ・クラスタ・データベースにおいては、データ・ブロックへの同時アクセスは、グローバル・ロック・マネージメントを使用して調整される。データ・ブロックに関連付けられたロックは、データ・ブロックに加えられた変更に関連付けられたやり直し情報が、複数のサイトのうちの他のサイトに複製されていることを、第1のレコードが示した後でのみ、解除されることが可能である。これは、データ・ブロックに加えられた先の変更に関連付けられた先のすべてのやり直し情報が、サイトのローカル固定記憶域において利用可能でない限り、リモート・サイトからデータ・ブロックを受信するいずれのサイトも、データ・ブロックを読み書きしないことを保証する。
図8において示された実施形態を使用して、異なるファイルへの書き込み動作が、該書き込み動作が発行された順に複製される場合には、特定のデータ・ブロックは、第2のレコードが特定のデータ・ブロックを更新したすべてのトランザクションを反映するとすぐに、永続的に記憶されることが可能である。このように、1つ以上のトランザクションによって特定のデータ・ブロックに加えられた変更に関連付けられたやり直し情報が複製された後でのみ、特定のデータ・ブロックの複製が生じるであろう。
本発明の実施形態は、後書きログ・スキームを使用して、データベース・ファイルへの書き込み性能を改善する。後書きログ・スキームにおいて、データ・ブロックは、データ・ブロックのためのやり直し情報が生成される前に、永続的に記憶される。図9は、本発明の実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャートである。図9において示されたステップは、後書きログ・スキームを使用して、データベース・ファイルに書き込むために使用されることが可能である。最初に、ステップ910において、複数のサイトのうちの第1のサイトでは、データ・ブロックが、データ・ブロックに加えられた変更に関するやり直し情報を永続的に記憶するのに先立って、永続的に記憶される。ステップ910は、データ・ブロックに加えられた変更に関するやり直し情報を永続的に記憶するのに先立って、データベース350にデータ・ブロックを永続的に記憶するサイト310のデータベースサーバ330によって実行されることが可能である。ステップ910の実行の後で、処理は、ステップ920に進む。
ステップ920において、第1のサイトでは、データ・ブロックに加えられた変更を反映するやり直し情報が、その変更が複数のサイトのうちの他のサイトに複製された後で、永続的に記憶される。ステップ920は、変更がサイト312に複製された後で、データ・ブロックに加えられた変更を反映するやり直し情報を永続的に記憶するサイト310のデータベースサーバ330によって実行されることが可能である。
一実施形態においては、ステップ920において、判断は、データ・ブロックに加えられた変更が、いつ複数のサイトのうちの他のサイトに複製されているかに関してなされる。本実施形態においては、サイト310のデータベースサーバ330は、データ・ブロックに加えられた変更が、いつサイト312に複製されているかに関して判断をする。
一実施形態においては、単一のプロセスは、データ・ブロックにそれぞれ変更を加える1つ以上のトランザクションを発行することが可能である。別の実施形態においては、1
つ以上のトランザクションは、複数のプロセスによって発行されることが可能である。データベースサーバ330は、1つ以上のデータ・ブロックに変更を加える1つ以上のトランザクションがいつ完了したかを判断することが可能である。1つ以上のデータ・ブロックに変更を加える1つ以上のトランザクションが完了した後で、ステップ910に記述されるように、1つ以上のデータ・ブロックは、永続的に記憶されることが可能である。
図9において示されたステップを使用して、ファイルサーバが、書き込み動作のためにやり直し情報を永続的に記憶する前に、永続的に記憶されているデータ・ブロックへのすべての書き込み動作の複製を完了するまで、データベースサーバは待機することができる。たとえば、データベースサーバ330が、データベース350に書き込み動作のためのやり直し情報を永続的に記憶する前に、サイト310で永続的に記憶されているデータ・ブロックへのすべての書き込み動作をサイト312に複製するのを完了するまで、サイト310のデータベースサーバ330は待機することができる。
(サイト回復)
一実施形態においては、データ・ミラーリング・システム300内の特定のサイトが動作不能になった場合には、特定のサイトからデータ・ミラーリング・システム300内の他のサイトのそれぞれに送信されたすべてのメッセージがそれらの宛て先で受信されていると判断した後で、特定のサイトの回復が開始される。たとえば、図3において示された本実施形態においては、サイト310がその後動作不能になった場合に、サイト310の回復は、サイト310からサイト312に送信されたすべてのメッセージがサイト312で受信されていると判断した後まで、開始されない。これに代えて、生き残ったサイトは、一又は複数の生き残ったサイトが、動作不能なサイトの回復を開始したかあるいは完了した後で、動作不能なサイトから送信されたいかなるメッセージも無視することが可能である。
(一時ファイル書き込みの性能改善)
一時ファイルは、ソートおよびハッシュ結合のようなデータベース動作で、データベースサーバによって使用されることが可能である。一時ファイルは、限定的持続時間、データを保持するために、メモ帳のように使用される。幾つかの容易さにおいて、一時的結束の空間割付けに関するメタデータ変更は、複製される必要がある。しかしながら、一時ファイルが複数のサイトのうちの他のサイトによって必要でない場合には、一時ファイルは複製される必要がない。
一実施形態においては、判断は、一時ファイルのようなデータ構造が複数のサイトのうちの他のサイトのそれぞれに複製されるべきか否かに関して、複数のサイトのうちの第1のサイトでデータベースサーバによってなされる。第1のサイトのデータ構造は、データ構造が複数のサイトのうちの他のサイトのそれぞれに複製されるべきでないと判断しない限り、複数のサイトのうちの他のサイトのそれぞれに複製される。たとえば、図3において示された本実施形態においては、サイト310のデータベースサーバ330は、特定の一時ファイルがサイト312に複製される必要はないと判断することが可能である。したがって、データベースサーバ330は、サイト312に一時ファイルを複製しない。
(機構の実施)
図10は、本発明の実施形態が実行され得るコンピュータ・システム1000を示すブロック図である。コンピュータ・システム1000は、バス1002あるいは情報を通信する他の通信機構と、情報を処理するためにバス1002と結合されたプロセッサ1004とを備えている。さらに、コンピュータ・システム1000は、ランダム・アクセス・メモリ(Random Access Memory(RAM))あるいは他の動的記憶装置のような、情報およびプロセッサ1004によって実行される命令を記憶するためにバス1002に結合されたメイン・メモリ1006を備えている。また、メイン・メモリ1006は、プロセッサ1004によって命令が実行される間、一時的変数あるいは他の中間情報を記憶するのに使用されることも可能である。さらに、コンピュータ・システム
1000は、静的情報およびプロセッサ1004のための命令を記憶するためにバス1002で結合された読み出し専用メモリ((Read Only Memory(ROM))1008あるいは他の静的記憶装置を備えている。磁気ディスクまたは光ディスクのような記憶装置1010は、情報および命令を記憶するためにバス1002に設けられ、結合されている。
コンピュータ・システム1000は、コンピュータ・ユーザへの情報の表示のために、陰極線管(Cathode Ruy Tube(CRT))のようなディスプレイ1012にバス1002を通じて結合されることが可能である。英数字および他のキーを含む入力装置1014は、プロセッサ1004と情報およびコマンド選択を通信するためにバス1002に結合されている。別の種類のユーザ入力装置は、マウス、トラックボール、あるいは、プロセッサ1004と方向情報およびコマンド選択を通信するため、ならびにディスプレイ1012上のカーソル移動を制御するためのカーソル方向キーのようなカーソル制御機器1016である。この入力装置は、典型的には、装置に空間内の位置を特定させることを可能にする、第1の軸(たとえば、x)および第2の軸(たとえば、y)の2軸の2自由度を有している。
本発明は、ここで記述された手法を実施するためのコンピュータ・システム1000の使用に関する。本発明の1つの実施形態によれば、それらの手法は、メイン・メモリ1006に含まれた1つ以上の命令の1つ以上のシーケンスをプロセッサ1004が実行するに応じて、コンピュータ・システム1000によって実行される。そのような命令は、記憶装置1010のような別のコンピュータ読み取り可能な媒体からメイン・メモリ1006に読み込まれることが可能である。メイン・メモリ1006に含まれた命令シーケンスの実行は、ここで記述された処理ステップをプロセッサ1004に実行させる。代替の実施形態においては、配線回路が、本発明を実施するソフトウェア命令の代わりに、あるいはその命令と組み合わせて使用されることが可能である。したがって、本発明の実施形態は、ハードウェア回路およびフトウェアの任意の特定の組み合わせに限定されない。
用語「コンピュータ読み取り可能な媒体」はここでは、実行用プロセッサ1004への命令の提供に関係する任意の媒体を表わしている。そのような媒体は、不揮発性媒体、揮発性媒体、および通信媒体を含む多くの形態をとることが可能であるが、これらに限定されるものではない。不揮発性媒体は、たとえば、記憶装置1010のような光学あるいは磁気ディスクを含んでいる。揮発性媒体は、メイン・メモリ1006のようなダイナミック・メモリを含んでいる。通信媒体は、バス1002を備えたワイヤを含む同軸ケーブル、銅線、および光ファイバを含んでいる。さらに、通信媒体は、電波および赤外線データ通信中に生成されるもののような、音響あるいは光波の形態をとることができる。
コンピュータ読み取り可能な媒体の一般的な形態は、たとえば、フロッピー・ディスク(登録商標)、フレキシブル・ディスク、ハードディスク、磁気テープ、あるいは、任意の他の磁気媒体、CD−ROM、任意の他の光学媒体、パンチカード、紙テープ、穴パターンを備えた任意の他の物理的媒体、RAM、PROM、および、EPROM、FLASH−EPROM、任意の他の記憶素子あるいはカートリッジ、以下に記述されるように搬送波、あるいは、そこからコンピュータが読むことができる任意の他の媒体を含んでいる。
コンピュータ読み取り可能な媒体の様々な形態は、実行用プロセッサ1004への1つ以上の命令の1つ以上のシーケンスを伝えることを伴う場合がある。たとえば、命令は、最初に、リモート・コンピュータの磁気ディスク上に担持されることが可能である。リモート・コンピュータは、そのダイナミック・メモリに命令をロードし、モデムを使用して電話線を通じて命令を送信することができる。コンピュータ・システム1000に対して
ローカルなモデムは、電話線を通じてデータを受信し、データを赤外線信号に変換するために赤外線送信機を使用することができる。赤外線検知器は、赤外線信号で伝えられるデータを受信し、適切な回路は、バス1002上にデータを配置することができる。バス1002は、メイン・メモリ1006にデータを伝える。プロセッサ1004は、メイン・メモリ1006から命令を取り出し、実行する。メイン・メモリ1006によって受信された命令は、プロセッサ1004による実行の前後に、記憶装置1010上に随意に記憶されることが可能である。
コンピュータ・システム1000は、バス1002に結合された通信インタフェース1018を備えることも可能である。通信インタフェース1018は、ローカル・ネットワーク1022に接続されるネットワーク・リンク1020に2方向データ通信結合を提供する。たとえば、通信インタフェース1018は、対応する種類の電話線にデータ通信接続を提供する統合サービス・デジタル網(Integrated Service Digital Network(ISDN))カードあるいはモデムであることが可能である。別の実施例として、通信インタフェース1018は、互換性をもつLANへのデータ通信接続を提供するローカル・エリア・ネットワーク(LAN)カードであることが可能である。無線リンクが実施されることも可能である。任意のそのような実施では、通信インタフェース1018は、様々な種類の情報を表わすデジタル・データ・ストリームを搬送する電気的、電磁気的、あるいは光学的信号を送信および受信する。
ネットワーク・リンク1020は、典型的には、1つ以上のネットワークを通じて他のデータ装置にデータ通信を提供する。たとえば、ネットワーク・リンク1020は、インターネット・サービス・プロバイダ(Internet Service Provider(ISP))1026によって運営されるホスト・コンピュータ1024あるいはデータ設備へのローカル・ネットワーク1022を通じた接続を提供することが可能である。ISP 1026は、代わりに、「インターネット」1028と現在一般的に呼ばれるワールド・ワイド・パケット・データ通信ネットワークを通じたデータ通信サービスを提供する。ローカル・ネットワーク1022およびインターネット1028は、両方とも、デジタル・データ・ストリームを搬送する電気的、電磁気的、あるいは光学的信号を使用する。様々なネットワークを通じた信号、およびネットワーク・リンク上1020および通信インタフェース1018を通じた信号は、コンピュータ・システム1000から、そしてコンピュータ・システム1000へデジタル・データを伝え、情報を搬送する獲得波(earner waves)の典型的な形態である。
コンピュータ・システム1000は、ネットワーク、ネットワーク・リンク1020、および通信インタフェース1018を通じて、プログラム・コードを含むメッセージを送信し、データを受信することができる。インターネットの実施例において、サーバ1030は、インターネット1028、ISP 1026、ローカル・ネットワーク1022、および通信インタフェース1018を通じてアプリケーション・プログラムのために要求されたコードを送信することが可能である。
受信したコードは、それが受信され、および/または、記憶装置1010もしくは後の実行のために他の不揮発性記憶装置に記憶されるように、プロセッサ1004によって実行されることが可能である。このように、コンピュータ・システム1000は、獲得波の形態でアプリケーションコードを得ることが可能である。
前述の明細書においては、本発明の実施形態は、実施から実施へと変化する多数の特定の詳細に関して記述されている。したがって、何が本発明であるかという、また、出願人によって本発明であると意図された単独且つ排他的な指標は、この出願から与えられる1組の請求項であり、該1組の請求項は、そのような請求項の論点における特定の形態であ
って、任意のその後の修正を含んでいる。そのような請求項に含まれた用語のためにここで明らかに述べられたいずれの定義も、請求項において使用されるような用語の意味に適用されるものとする。したがって、請求項で明らかに記述されない限定、要素、特性、特徴、長所、あるいは特質も、そのような請求項の範囲をいかなる方法であっても限定すべきではない。したがって、明細書および図面は、限定的な意味ではなく、例示と見なされるべきである。
データ・ミラーリングの第1のアプローチを示すブロック図である。 データ・ミラーリングの別のアプローチを示すブロック図である。 本発明の実施形態にかかるデータ・ミラーリング・システムを示すブロック・ネットワーク図である。 実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャートである。 本発明の実施形態にかかるメンバーシップ投票動作を開始する機能ステップを示すフローチャートである。 本発明の実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャートである。 本発明の実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャートである。 本発明の実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャートである。 本発明の実施形態にかかる複数のサイト間でデータをミラーリングするステップを示すフローチャートである。 本発明の実施形態が実施されることが可能なコンピュータ・システムを示すブロック図である。

Claims (30)

  1. 複数のサイト間でデータをミラーリングする方法であって、
    前記複数のサイトのうちの第1のサイトにあるデータベースサーバが、前記第1のサイトで実行されたどのトランザクションが前記複数のサイトのうちの他のサイトに複製されたそれらのやり直し情報を有しているかを識別するレコードを維持するステップと、
    前記データベースサーバが、前記第1のサイトで実行されるトランザクションに関連付けられた優先度値を判断するステップとを含み、前記トランザクションはデータ・ブロックへの修正を特定しており、
    前記優先度値が1組の可能性のある値の第1の値である場合に、前記レコードが、前記トランザクションに関連付けられたやり直し情報が前記複数のサイトのうちの他のサイトに複製されていることを示した後でのみ、前記データベースサーバが、前記トランザクションを確定するステップと、
    前記優先度値が前記1組の可能性のある値のうちの第2の値である場合に、たとえ前記レコードが、前記トランザクションに関連付けられたやり直し情報が前記複数のサイトのうちの他のサイトに複製されていることを示していなくても、前記データベースサーバが、前記トランザクションを確定するステップとを含み、
    前記第1の値は、前記第1のサイトが動作不能になった場合に、前記トランザクションが失われるべきではないことを示しており、
    前記第2の値は、前記第1のサイトが動作不能になった場合に、前記トランザクションが失われる場合があることを示している、方法。
  2. 前記トランザクションを確定する前であって前記レコードを維持している間に前記データベースサーバが、前記トランザクションに関連付けられた確定レコードを前記レコードと比較することによって、前記トランザクションが確定される前に確定されたすべての他のトランザクションが前記複数のサイトのうちの他のサイトに複製されたそれらの対応するやり直し情報を有するか否かを判断するステップをさらに含む、請求項1に記載の方法。
  3. 前記レコードは、第1のレコードであり、
    前記方法は、
    前記第1のサイトにある前記データベースサーバが、前記第1のサイトで実行されたどのトランザクションが前記第1のサイトで固定記憶域に記録されたそれらのやり直し情報を有しているかを識別する第2のレコードを維持するステップをさらに含む、請求項1に記載の方法。
  4. 前記優先度値が前記1組の可能性のある値のうちの前記第2の値である場合に、前記レコードが、前記トランザクションによって生成された前記やり直し情報が前記複数のサイトのうちの他のサイトに複製されていることを示す前に、前記データベースサーバが、前記トランザクションを確定するステップをさらに含む、請求項1に記載の方法。
  5. 前記優先度値が前記1組の可能性のある値のうちの前記第2の値である場合に、前記第2のレコードが、前記トランザクションによって生成された前記やり直し情報が第1のサイトで固定記憶域に記憶されていることを示した後で、前記データベースサーバが、前記トランザクションを確定するステップをさらに含む、請求項3に記載の方法。
  6. 前記トランザクションを確定する前に前記優先度値が前記第2の値である場合に、前記データベースサーバが、前記トランザクションに関連付けられた確定レコードを前記第2のレコードと比較することによって、前記第1のサイトで実行されたどのトランザクションが固定記憶域に記録されたそれらのやり直し情報を有しているかを判断するステップをさらに含む、請求項3に記載の方法。
  7. 前記データベースサーバが、前記複数のサイトのうちの各サイトで、データが前記複数のサイトのうちの他のサイトのそれぞれに複製されるべきか否かを判断するステップと、
    前記データが前記複数のサイトのうちの他のサイトのそれぞれに複製されるべきでないと判断されない限り、前記データベースサーバが、前記データを前記複数のサイトのうちの他のサイトのそれぞれに複製するステップをさらに含む、請求項1に記載の方法。
  8. 複数のサイト間でデータをミラーリングする方法であって、
    前記複数のサイトのうちの第1のサイトにあるデータベースサーバが、前記第1のサイトで記憶された1つ以上のデータ・ブロックに加えられたどの変更が、前記複数のサイトのうちの他のサイトに複製された、関連付けられたやり直し情報を有しているかを識別するレコードを維持するステップを含み、前記第1のサイトは先書きログ・スキームを実施し、
    書き込みトランザクションが発行された順に前記第1のサイトで実行される書き込みトランザクションを、前記第1のサイトが前記複数のサイトのうちの他のサイトに複製するか否かを、前記データベースサーバが判断するステップと、
    前記書き込みトランザクションが発行された順に前記第1のサイトで実行される書き込みトランザクションを、前記第1のサイトが前記複数のサイトのうちの他のサイトに複製しないと判断した場合に、前記レコードが、前記第1のサイトで前記データ・ブロックを更新したいずれかの書き込みトランザクションが前記複数のサイトのうちの他のサイトに複製されたそれらの各々のやり直し情報を有していることを示した後でのみ、前記データベースサーバが、トランザクションに関連付けられた前記1つ以上のデータ・ブロックのうちの1つのデータ・ブロックを永続的に記憶するステップとを含む、方法。
  9. 前記レコードは、第1のレコードであり、
    前記第1のサイトで記憶された前記1つ以上のデータ・ブロックに加えられたどの変更が、前記第1のサイトで固定記憶域に記録された、関連付けられたやり直し情報を有しているかを識別する第2のレコードを、前記データベースサーバが、前記第1のサイトで、維持するステップと、
    前記第1のサイトが、前記第1のサイトで実行される書き込みトランザクションを、前記書き込みトランザクションが発行された順に、前記複数のサイトのうちの他のサイトに複製した場合に、前記第2のレコードが、前記第1のサイトで前記データ・ブロックを更新したいずれの書き込みトランザクションが前記第1のサイトで固定記憶域に記録されたそれらの各々のやり直し情報を有していることを示した後に、前記データベースサーバが、データ・ブロックを永続的に記憶するステップとをさらに含む、請求項8に記載の方法。
  10. 前記レコードが、前記データ・ブロックに加えられた変更に関連付けられたやり直し情報が前記複数のサイトのうちの他のサイトに複製されていることを示した後に、前記データベースサーバが、前記データ・ブロックに関連付けられたロックを解除するステップをさらに含む、請求項8に記載の方法。
  11. 前記第1のサイトは、書き込みトランザクションを、前記第1のサイトでの前記書き込みトランザクションの完了とは非同期に、前記複数のサイトのうちの他のサイトに複製する、請求項9に記載の方法。
  12. 前記複数のサイトのうちの各サイトで、データは前記複数のサイトのうちの他のサイトのそれぞれに複製されるべきか否かを判断するステップと、
    前記データは前記複数のサイトのうちの他のサイトのそれぞれに複製されるべきでないと判断されない限り、前記複数のサイトのうちの他のサイトのそれぞれに前記データを複製するステップとをさらに含む、請求項8に記載の方法。
  13. 前記レコードは、やり直しログ・ファイルの一部を識別することによって、前記第1のサイトで実行された複数のトランザクションのうちのどのトランザクションが前記複数のサイトのうちの他のサイトに複製されたそれらのやり直し情報を有しているかを識別しており、前記やり直しログ・ファイルの識別された部分に反映されたすべてのトランザクションは、前記複数のサイトのうちの他のサイトに複製される、請求項1に記載の方法。
  14. 複数のサイト間でデータをミラーリングする1つ以上の命令シーケンスを担持する機械読み取り可能な媒体であって、1つ以上のプロセッサによる前記1つ以上の命令シーケンスの実行は、前記1つ以上のプロセッサに、
    前記複数のサイトのうちの第1のサイトで、前記第1のサイトで実行されたどのトランザクションが、前記複数のサイトのうちの他のサイトに複製されたそれらのやり直し情報を有しているかを識別するレコードを維持するステップと、
    前記第1のサイトで実行されるトランザクションに関連付けられた優先度値を判断するステップとを実行させ、前記トランザクションはデータ・ブロックへの修正を特定しており、
    前記優先度値が1組の可能性のある値の第1の値である場合に、前記レコードが、前記トランザクションに関連付けられたやり直し情報が前記複数のサイトのうちの他のサイトに複製されていることを示した後でのみ、前記トランザクションを確定するステップと、
    前記優先度値が前記1組の可能性のある値のうちの第2の値である場合に、たとえ前記レコードが、前記トランザクションに関連付けられたやり直し情報が前記複数のサイトのうちの他のサイトに複製されていることを示していなくても、前記トランザクションを確定するステップとを実行させ
    前記第1の値は、前記第1のサイトが動作不能になった場合に、前記トランザクションが失われるべきではないことを示しており、
    前記第2の値は、前記第1のサイトが動作不能になった場合に、前記トランザクションが失われる場合があることを示している、機械読み取り可能な媒体。
  15. 前記1つ以上のプロセッサによる前記1つ以上の命令シーケンスの実行は、前記1つ以上のプロセッサに、
    前記トランザクションを確定する前であって前記レコードを維持する間に、前記トランザクションに関連付けられた確定レコードを前記レコードと比較することによって、前記トランザクションが確定される前に確定されたすべての他のトランザクションが、前記複数のサイトのうちの他のサイトに複製されたそれらの各々のやり直し情報を有しているか否かを判断するステップをさらに実行させる、請求項14に記載の機械読み取り可能な媒体。
  16. 前記レコードは、第1のレコードであり、前記1つ以上のプロセッサによる前記1つ以上の命令シーケンスの実行は、前記1つ以上のプロセッサに、
    前記第1のサイトで、前記第1のサイトで実行されたどのトランザクションが前記第1のサイトで固定記憶域に記録されたそれらのやり直し情報を有しているかを識別する第2のレコードを維持するステップをさらに実行させる、請求項14に記載の機械読み取り可能な媒体。
  17. 前記1つ以上のプロセッサによる前記1つ以上の命令シーケンスの実行は、前記1つ以上のプロセッサに、
    前記優先度値が前記1組の可能性のある値のうちの前記第2の値である場合に、前記レコードが、前記トランザクションによって生成されたやり直し情報が前記複数のサイトのうちの他のサイトに複製されていることを示す前に、前記トランザクションを確定するステップをさらに実行させる、請求項14に記載の機械読み取り可能な媒体。
  18. 前記1つ以上のプロセッサによる前記1つ以上の命令シーケンスの実行は、前記1つ以上のプロセッサに、
    前記優先度値が前記1組の可能性のある値のうちの前記第2の値である場合に、前記第2のレコードが、前記トランザクションによって生成されたやり直し情報が前記第1のサイトで固定記憶域に記憶されていることを示した後に、前記トランザクションを確定するステップをさらに実行させる、請求項16に記載の機械読み取り可能な媒体。
  19. 前記1つ以上のプロセッサによる前記1つ以上の命令シーケンスの実行は、前記1つ以上のプロセッサに、
    前記トランザクションを確定する前に前記優先度値が前記第2の値である場合に、前記トランザクションに関連付けられた確定レコードを前記第2のレコードと比較することによって、前記第1のサイトで実行されたどのトランザクションが、固定記憶域に記録されたそれらのやり直し情報を有しているかを判断するステップをさらに実行させる、請求項16に記載の機械読み取り可能な媒体。
  20. 前記1つ以上のプロセッサによる前記1つ以上の命令シーケンスの実行は、前記1つ以上のプロセッサに、
    前記複数のサイトのうちの各サイトで、データは前記複数のサイトのうちの他のサイトのそれぞれに複製されるべきか否かを判断するステップと、
    前記データは前記複数のサイトのうちの他のサイトのそれぞれに複製されるべきでないと判断されない限り、前記データを前記複数のサイトのうちの他のサイトのそれぞれに複製するステップとをさらに実行させる、請求項14に記載の機械読み取り可能な媒体。
  21. 複数のサイト間でデータをミラーリングする1つ以上の命令シーケンスを担持する機械読み取り可能な媒体であって、1つ以上のプロセッサによる前記1つ以上の命令シーケンスの実行は、前記1つ以上のプロセッサに、
    前記複数のサイトのうちの、先書きログ・スキームを実施する第1のサイトで、前記第1のサイトで記憶された1つ以上のデータ・ブロックに加えられたどの変更が、前記複数のサイトのうちの他のサイトに複製された、関連付けられたやり直し情報を有しているかを識別するレコードを維持するステップと、
    書き込みトランザクションが発行された順に、前記第1のサイトで実行される書き込みトランザクションを、前記第1のサイトが前記複数のサイトのうちの他のサイトに複製するか否かを判断するステップと、
    前記書き込みトランザクションが発行された順に、前記第1のサイトで実行される書き込みトランザクションを、前記第1のサイトが複数のサイトのうちの他のサイトに複製しないと判断した場合に、前記第1のサイトで前記データ・ブロックを更新したいずれかの書き込みトランザクションが前記複数のサイトのうちの他のサイトに複製されたそれらの対応するやり直し情報を有していることをレコードが示した後にのみ、前記1つ以上のデータ・ブロックのうちの、トランザクションに関連付けられた1つのデータ・ブロックを、永続的に記憶するステップとを実行させる、機械読み取り可能な媒体。
  22. 前記レコードは、第1のレコードであり、前記1つ以上のプロセッサによる前記1つ以上の命令シーケンスの実行は、前記1つ以上のプロセッサに、
    前記第1のサイトで、前記第1のサイトで記憶された前記1つ以上のデータ・ブロックに加えられたどの変更が、前記第1のサイトで固定記憶域に記録された、関連付けられたやり直し情報を有しているかを識別する第2のレコードを維持するステップと、
    前記第1のサイトが、前記第1のサイトで実行される書き込みトランザクションを前記書き込みトランザクションが発行された順に、前記複数のサイトのうちの他のサイトに複製した場合に、前記第2のレコードが、前記第1のサイトで前記データ・ブロックを更新したいずれかの書き込みトランザクションが前記第1のサイトで固定記憶域に記録されたそれらの対応するやり直し情報を有していることを示した後で、前記データ・ブロックを永続的に記憶するステップとをさらに実行させる、請求項21に記載の機械読み取り可能な媒体。
  23. 前記1つ以上のプロセッサによる前記1つ以上の命令シーケンスの実行は、前記1つ以上のプロセッサに、
    前記レコードが、前記データ・ブロックに加えられた変更に関連付けられたやり直し情報が前記複数のサイトのうちの他のサイトに複製されていることを示した後で、前記データ・ブロックに関連付けられたロックを解除するステップをさらに実行させる、請求項21に記載の機械読み取り可能な媒体。
  24. 前記第1のサイトは、前記複数のサイトのうちの他のサイトへの書き込みトランザクションを、前記第1のサイトでの前記書き込みトランザクションの完了とは非同期に複製する、請求項22に記載の機械読み取り可能な媒体。
  25. 前記1つ以上のプロセッサによる前記1つ以上の命令シーケンスの実行は、前記1つ以上のプロセッサに、
    前記複数のサイトのうちの各サイトで、データが、前記複数のサイトのうちの他のサイトのそれぞれに複製されるべきか否かを判断するステップと、
    前記データは前記複数のサイトのうちの他のサイトのそれぞれに複製されるべきではないと判断されない限り、前記データを前記複数のサイトのうちの他のサイトのそれぞれに複製するステップとをさらに実行させる、請求項21に記載の機械読み取り可能な媒体。
  26. 前記第1のサイトでどのトランザクションが実行されたかを識別する前記レコードは、やり直しログ・ファイルの一部を識別することによって前記複数のサイトのうちの他のサイトに複製されたそれらのやり直し情報を有しており、前記やり直しログ・ファイルの識別された部分に反映されたすべてのトランザクションは、前記複数のサイトのうちの他のサイトに複製されている、請求項14に記載の機械読み取り可能な媒体。
  27. 前記レコードは、前記第1のサイトで記憶された前記1つ以上のデータ・ブロックに加えられたどの変更が、やり直しログ・ファイルの一部を識別することによって前記複数のサイトのうちの他のサイトに複製された、関連付けられたやり直し情報を有しているかを識別し、前記やり直しログ・ファイルの識別された部分のすべての変更は、前記複数のサイトのうちの他のサイトに複製されている、請求項8に記載の方法。
  28. 前記第2のレコードは、前記第1のサイトで記憶された前記1つ以上のデータ・ブロックに加えられたどの変更が、やり直しログ・ファイルの一部を識別することによって固定記憶域に記録された、関連付けられたやり直し情報を有しているかを識別し、前記やり直しログ・ファイルの識別された部分のすべての変更は、固定記憶域に記録されている、請求項9に記載の方法。
  29. 前記レコードは、前記第1のサイトで記憶された前記1つ以上のデータ・ブロックに加えられたどの変更が、やり直しログ・ファイルの一部を識別することによって前記複数のサイトのうちの他のサイトに複製された、関連付けられたやり直し情報を有しているかを識別し、前記やり直しログ・ファイルの識別された部分のすべての変更は、前記複数のサイトのうちの他のサイトに複製されている、請求項21に記載の機械読み取り可能な媒体。
  30. 前記第2のレコードは、前記第1のサイトで記憶された前記1つ以上のデータ・ブロックに加えられたどの変更が、やり直しログ・ファイルの一部を識別することによって固定記憶域に記録された、関連付けられたやり直し情報を有しているかを識別し、前記やり直しログ・ファイルの識別された部分のすべての変更は、固定記憶域に記録されている、請求項22に記載の機械読み取り可能な媒体。
JP2006549583A 2004-01-15 2005-01-12 地理的分散型クラスタ Active JP5264077B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/759,894 US7299378B2 (en) 2004-01-15 2004-01-15 Geographically distributed clusters
US10/759,894 2004-01-15
PCT/US2005/001057 WO2005071535A2 (en) 2004-01-15 2005-01-12 Geographically replicated databases

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2012001382A Division JP5559821B2 (ja) 2004-01-15 2012-01-06 データを記憶する方法、データをミラーリングする方法、命令シーケンスを担持する機械読み取り可能な媒体、および、当該方法をコンピュータに実行させるためのプログラム

Publications (2)

Publication Number Publication Date
JP2007518196A JP2007518196A (ja) 2007-07-05
JP5264077B2 true JP5264077B2 (ja) 2013-08-14

Family

ID=34749791

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2006549583A Active JP5264077B2 (ja) 2004-01-15 2005-01-12 地理的分散型クラスタ
JP2012001382A Active JP5559821B2 (ja) 2004-01-15 2012-01-06 データを記憶する方法、データをミラーリングする方法、命令シーケンスを担持する機械読み取り可能な媒体、および、当該方法をコンピュータに実行させるためのプログラム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2012001382A Active JP5559821B2 (ja) 2004-01-15 2012-01-06 データを記憶する方法、データをミラーリングする方法、命令シーケンスを担持する機械読み取り可能な媒体、および、当該方法をコンピュータに実行させるためのプログラム

Country Status (7)

Country Link
US (1) US7299378B2 (ja)
EP (2) EP2521037B1 (ja)
JP (2) JP5264077B2 (ja)
CN (1) CN100478902C (ja)
AU (1) AU2005207573B2 (ja)
CA (1) CA2550003C (ja)
WO (1) WO2005071535A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9782841B2 (en) 2013-09-19 2017-10-10 Kennametal Inc. Cutting tool

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7281153B2 (en) * 2004-04-14 2007-10-09 International Business Machines Corporation Apparatus, system, and method for transactional peer recovery in a data sharing clustering computer system
JP2006163596A (ja) * 2004-12-03 2006-06-22 Internatl Business Mach Corp <Ibm> 情報処理システム、制御方法、及びプログラム
US20070234342A1 (en) * 2006-01-25 2007-10-04 Flynn John T Jr System and method for relocating running applications to topologically remotely located computing systems
US8156195B2 (en) * 2006-02-14 2012-04-10 Emc Corporation Systems and methods for obtaining ultra-high data availability and geographic disaster tolerance
US7613749B2 (en) 2006-04-12 2009-11-03 International Business Machines Corporation System and method for application fault tolerance and recovery using topologically remotely located computing devices
US7594138B2 (en) 2007-01-31 2009-09-22 International Business Machines Corporation System and method of error recovery for backup applications
US8090792B2 (en) * 2007-03-08 2012-01-03 Nec Laboratories America, Inc. Method and system for a self managing and scalable grid storage
US8850073B1 (en) 2007-04-30 2014-09-30 Hewlett-Packard Development Company, L. P. Data mirroring using batch boundaries
US9201745B2 (en) * 2008-01-23 2015-12-01 Omx Technology Ab Method of improving replica server performance and a replica server system
US8161002B2 (en) * 2008-05-28 2012-04-17 International Business Machines Corporation System, method, and computer readable media for replicating virtual universe objects
US20100185682A1 (en) * 2009-01-09 2010-07-22 Lucent Technologies Inc. Object identifier and common registry to support asynchronous checkpointing with audits
US8041994B2 (en) * 2009-01-09 2011-10-18 Alcatel Lucent Asynchronous checkpointing with audits in high availability networks
US9215279B1 (en) 2009-02-17 2015-12-15 Netapp, Inc. Servicing of storage device software components of nodes of a cluster storage system
US9325790B1 (en) 2009-02-17 2016-04-26 Netapp, Inc. Servicing of network software components of nodes of a cluster storage system
US8122284B2 (en) * 2009-06-18 2012-02-21 Taylor Tracy M N+1 failover and resynchronization of data storage appliances
EP2323047B1 (en) * 2009-10-09 2020-02-19 Software AG Primary database system, replication database system and method for replicating data of a primary database system
US8046633B2 (en) * 2009-12-10 2011-10-25 International Business Machines Corporation Improving data availability during failure detection and recovery processing in a shared resource system
US9020891B1 (en) 2010-10-27 2015-04-28 Amazon Technologies, Inc. Reduced locking in a distributed data store
US9258363B2 (en) * 2010-11-15 2016-02-09 Microsoft Technology Licensing, Llc Data cube high availability
US9063787B2 (en) * 2011-01-28 2015-06-23 Oracle International Corporation System and method for using cluster level quorum to prevent split brain scenario in a data grid cluster
US9519555B2 (en) 2011-05-23 2016-12-13 Microsoft Technology Licensing, Llc Synchronous replication in a distributed storage environment
US9251021B2 (en) 2011-05-23 2016-02-02 Bradley Gene Calder Asynchronous replication in a distributed storage environment
US20150169598A1 (en) 2012-01-17 2015-06-18 Oracle International Corporation System and method for providing a persistent snapshot of a running system in a distributed data grid
US9953305B2 (en) * 2012-10-22 2018-04-24 Oonetic Online payment system and method according to the mirror authorization server principle
US20140279869A1 (en) * 2013-03-12 2014-09-18 Siemens Product Lifecycle Management Software Inc. Transaction-Based Traversal-Free Data Synchronization Among Multiple Sites
US9092330B2 (en) 2013-03-15 2015-07-28 International Business Machines Corporation Early data delivery prior to error detection completion
US9146864B2 (en) 2013-03-15 2015-09-29 International Business Machines Corporation Address mapping including generic bits for universal addressing independent of memory type
US9430418B2 (en) 2013-03-15 2016-08-30 International Business Machines Corporation Synchronization and order detection in a memory system
US9136987B2 (en) * 2013-03-15 2015-09-15 International Business Machines Corporation Replay suspension in a memory system
US9514007B2 (en) * 2013-03-15 2016-12-06 Amazon Technologies, Inc. Database system with database engine and separate distributed storage service
US9142272B2 (en) 2013-03-15 2015-09-22 International Business Machines Corporation Dual asynchronous and synchronous memory system
US9535778B2 (en) 2013-03-15 2017-01-03 International Business Machines Corporation Reestablishing synchronization in a memory system
WO2015094253A1 (en) * 2013-12-18 2015-06-25 Hewlett-Packard Development Company, L.P. Data block transmission
US9304865B2 (en) 2014-03-26 2016-04-05 International Business Machines Corporation Efficient handing of semi-asynchronous raid write failures
CN104572350B (zh) * 2014-12-19 2018-11-06 华为技术有限公司 一种元数据处理方法及装置
US9588855B2 (en) * 2015-04-22 2017-03-07 PernixData, Inc. Management and utilization of fault domains in distributed cache systems
US20180309826A1 (en) * 2017-04-24 2018-10-25 EITR Systems, Inc. Fault-tolerant storage system using an alternate network
US11550820B2 (en) 2017-04-28 2023-01-10 Oracle International Corporation System and method for partition-scoped snapshot creation in a distributed data computing environment
US10769019B2 (en) 2017-07-19 2020-09-08 Oracle International Corporation System and method for data recovery in a distributed data computing environment implementing active persistence
US10862965B2 (en) 2017-10-01 2020-12-08 Oracle International Corporation System and method for topics implementation in a distributed data computing environment
CN108416040B (zh) * 2018-03-14 2020-10-27 上海达梦数据库有限公司 一种数据库修复方法、装置、终端设备及存储介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2503288B2 (ja) * 1990-05-11 1996-06-05 富士通株式会社 デ―タベ―ス処理方式
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US5530855A (en) * 1992-10-13 1996-06-25 International Business Machines Corporation Replicating a database by the sequential application of hierarchically sorted log records
US5917998A (en) * 1996-07-26 1999-06-29 International Business Machines Corporation Method and apparatus for establishing and maintaining the status of membership sets used in mirrored read and write input/output without logging
US6035379A (en) * 1997-01-09 2000-03-07 Microsoft Corporation Transaction processing for user data employing both logging and shadow copying
JP3563591B2 (ja) * 1997-09-29 2004-09-08 株式会社リコー 分散型データベースシステムの一貫性管理方法およびその方法の各工程をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
US6353836B1 (en) 1998-02-13 2002-03-05 Oracle Corporation Method and apparatus for transferring data from the cache of one node to the cache of another node
JPH11338647A (ja) * 1998-05-25 1999-12-10 Hitachi Ltd 二重化データの形成方法
US6163856A (en) 1998-05-29 2000-12-19 Sun Microsystems, Inc. Method and apparatus for file system disaster recovery
US6144999A (en) 1998-05-29 2000-11-07 Sun Microsystems, Incorporated Method and apparatus for file system disaster recovery
JP2001265639A (ja) * 2000-03-23 2001-09-28 Mitsubishi Electric Corp データ管理システム
US6643795B1 (en) * 2000-03-30 2003-11-04 Hewlett-Packard Development Company, L.P. Controller-based bi-directional remote copy system with storage site failover capability
US6505307B1 (en) * 2000-09-06 2003-01-07 Unisys Corporation Method and apparatus for ensuring data integrity
JP3877519B2 (ja) * 2000-12-15 2007-02-07 株式会社日立製作所 システム回復方法およびその実施計算機システム並びにその処理プログラムを記録した記録媒体
US6785678B2 (en) * 2000-12-21 2004-08-31 Emc Corporation Method of improving the availability of a computer clustering system through the use of a network medium link state function
US7016946B2 (en) 2001-07-05 2006-03-21 Sun Microsystems, Inc. Method and system for establishing a quorum for a geographically distributed cluster of computers
US20030014523A1 (en) * 2001-07-13 2003-01-16 John Teloh Storage network data replicator
US7421509B2 (en) 2001-09-28 2008-09-02 Emc Corporation Enforcing quality of service in a storage network
US6757790B2 (en) 2002-02-19 2004-06-29 Emc Corporation Distributed, scalable data storage facility with cache memory
US6880052B2 (en) * 2002-03-26 2005-04-12 Hewlett-Packard Development Company, Lp Storage area network, data replication and storage controller, and method for replicating data using virtualized volumes
US7542986B2 (en) 2002-03-26 2009-06-02 Hewlett-Packard Development Company, L.P. System and method for maintaining order for a replicated multi-unit I/O stream
US7191298B2 (en) * 2002-08-02 2007-03-13 International Business Machines Corporation Flexible system and method for mirroring data

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9782841B2 (en) 2013-09-19 2017-10-10 Kennametal Inc. Cutting tool

Also Published As

Publication number Publication date
EP2521037A2 (en) 2012-11-07
US7299378B2 (en) 2007-11-20
AU2005207573B2 (en) 2009-10-01
EP2521037A3 (en) 2013-01-23
EP1704470A2 (en) 2006-09-27
JP2007518196A (ja) 2007-07-05
EP2521037B1 (en) 2018-06-27
JP5559821B2 (ja) 2014-07-23
CN1910555A (zh) 2007-02-07
AU2005207573A1 (en) 2005-08-04
WO2005071535A2 (en) 2005-08-04
CA2550003A1 (en) 2005-08-04
WO2005071535A3 (en) 2006-08-03
CA2550003C (en) 2011-02-15
EP1704470B1 (en) 2016-06-29
US20050160315A1 (en) 2005-07-21
JP2012069168A (ja) 2012-04-05
CN100478902C (zh) 2009-04-15

Similar Documents

Publication Publication Date Title
JP5264077B2 (ja) 地理的分散型クラスタ
JP4461147B2 (ja) リモートデータミラーリングを用いたクラスタデータベース
US6950915B2 (en) Data storage subsystem
US8468313B2 (en) Asynchronous replication with write concurrency grouping
US7610318B2 (en) Autonomic infrastructure enablement for point in time copy consistency
US7191299B1 (en) Method and system of providing periodic replication
US8103937B1 (en) Cas command network replication
US7487311B2 (en) System and method for asynchronous backup of virtual disks in a distributed storage array
CN101567805B (zh) 并行文件系统发生故障后的恢复方法
US7308545B1 (en) Method and system of providing replication
US7693882B2 (en) Replicating data across the nodes in a cluster environment
JP2006023889A (ja) リモートコピーシステム及び記憶装置システム
JP5292351B2 (ja) メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム
US7107355B2 (en) High availability lightweight directory access protocol service
US7451283B2 (en) Method, system, and program for copying tracks between a primary storage and secondary storage
JP2005309793A (ja) データ処理システム
JP2002049517A (ja) 記憶システム
JP5292350B2 (ja) メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム
WO2013091183A1 (zh) 一种键值对的操作方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101026

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110125

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110225

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110304

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110328

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110906

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120106

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120117

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20120316

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121130

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121205

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121225

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121228

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130201

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130430

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5264077

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250