JP5443614B2 - 複製されたデータインスタンスのモニタリング - Google Patents

複製されたデータインスタンスのモニタリング Download PDF

Info

Publication number
JP5443614B2
JP5443614B2 JP2012536966A JP2012536966A JP5443614B2 JP 5443614 B2 JP5443614 B2 JP 5443614B2 JP 2012536966 A JP2012536966 A JP 2012536966A JP 2012536966 A JP2012536966 A JP 2012536966A JP 5443614 B2 JP5443614 B2 JP 5443614B2
Authority
JP
Japan
Prior art keywords
instance
replica
database
data
primary
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
JP2012536966A
Other languages
English (en)
Other versions
JP2013508884A (ja
Inventor
アレクサンダー マクドナルド マクアリスター グラント
シヴァサブラマニアン スワミナサン
ビー.ハンター ジュニア バリー
エム.ブラジル シラス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
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 Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2013508884A publication Critical patent/JP2013508884A/ja
Application granted granted Critical
Publication of JP5443614B2 publication Critical patent/JP5443614B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • 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/202Error 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 processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • 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/202Error 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 processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • 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/202Error 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 processing functionality is redundant
    • G06F11/2035Error 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 processing functionality is redundant without idle spare hardware
    • 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
    • G06F11/2076Synchronous techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • 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/2082Data synchronisation
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring

Description

本発明は、クラウドコンピューティングに関する。
インターネットのようなネットワークで可能になるアプリケーションおよびサービスの数が増えるにつれて、クラウドコンピューティングのような技術に依存するコンテンツ、アプリケーションおよび/またはサービスプロバイダの数が増えている。クラウドコンピューティングは、一般に、Webサービスのようなサービスを介して電子リソースへのアクセスを提供するアプローチであり、それらのサービスを支持するために使用されるハードウェアおよび/またはソフトウェアは、動的に拡張性があり、いかなる時でもサービスのニーズを満たす。ユーザまたは顧客は、通常、クラウドを介したリソースへのアクセスに対し、賃貸、リース、またはそうでなければ支払をし、よってこれらのリソースへのアクセスを提供するハードウェアおよび/またはソフトウェアの購入および保持の必要はない。
種々のアプリケーションおよびリソースのアスペクトがクラウド内で調整および管理されうる一方で、これらのアプリケーションおよびリソースが依存するデータリポジトリは、顧客または他のそのようなユーザによって同様に調整可能にまたは容易に管理されてはいない。通常は、プロビジョニングおよびデータ記憶装置の拡張のようなタスクの実行は、面倒な手動手順であり、この手順で顧客は、構成が有効かどうかデータベース管理者(DBA)が判断できるよう、DBAまたは類似の経験を積んだユーザに構成情報および要件を提供しなければならない。さらに、顧客が動的および/または自動的にデータベースインスタンスのパラメータを調整する、またはデータリポジトリの他のそのようなアスペクトを管理する簡単な方法はない。多くのケースでは、データインスタンスはバックアップおよびリカバリメカニズムが設定されているが、これらのメカニズムは、その領域内の障害または停止に影響されやすいような単一の位置または領域にある。さらに、データインスタンスの障害時、新しいインスタンスを生成すること、新しいインスタンスを適切なボリュームをアタッチすること、および他の障害から復旧するのに必要なタスクを実行するのに、通常数分かかる。
本開示による種々の実施形態を、下記の図を参照して記載する。
種々の実施形態が実施可能な環境を示す図である。 種々の実施形態により使用可能な、制御プレーンおよびデータプレーンの例示的な分離を示す図である。 種々の実施形態により使用可能な、複数のモニタ構成要素を利用する例を示す図である。 1つの実施形態により使用可能な、複数のデータゾーンにわたる複製されたデータインスタンスの実行の実施例を示す図である。 1つの実施形態による、一次レプリカの例示的なステート移行ダイアグラムを示す図である。 1つの実施形態による、モニタ構成要素の例示的なステート移行ダイアグラムを示す図である。 1つの実施形態により使用可能な、フェイルオーバ動作の実行の例示的なプロセスを示す図である。 1つの実施形態により使用可能な、二次レプリカの復旧の例示的なプロセスを示す図である。 1つの実施形態により使用可能な、イベントプロセッサの管理の例示的なプロセス例を示す図である。 1つの実施形態により使用可能な、データベースインスタンスをモニタするリースを取得する例示的なプロセスを示す図である。 1つの実施形態により使用可能な、データベースインスタンスのパーティショニングの例示的なプロセスを示す図である。 1つの実施形態により使用可能な、障害を起こしたイベントプロセッサに起因する再割当ての例を示す図である。 1つの実施形態により使用可能な、新しいイベントプロセッサの追加の例示的なプロセスを示す図である。
本開示の種々の実施形態によるシステムおよび方法は、電子環境内のデータ記憶の面の管理への従来のアプローチにおいて経験する、1つまたは複数の前述および他の欠点を解消し得る。特に、種々の実施形態は、ユーザが、データ環境、またはデータプレーンの種々のアスペクトの管理および/または変更を可能にするために使用可能な、別個のコントロール環境、または制御プレーンを提供する。この「セルフサービス」機能はWebサービスのセットを介して提供が可能であり、ユーザおよび制御プレーンが仮想データベース管理者(DBA)としてともにはたらくことを可能にする。ユーザまたは顧客は、例えば、複数の外部に視認可能なアプリケーションプログラミングインタフェース(API)のうちの1つを通じて、制御プレーンに要求を提出できる。種々のAPIを、データ環境内でリレーショナルデータベースのようなデータリポジトリに対して特定の機能を実行するのに使用できる。APIのうちの1つへ受信された要求は分析され、データストアまたはデータストアインスタンスの運用または構成パラメータを調整する動作のような、データプレーン内で実行される所望のアクションを決定できる。ワークフロー構成要素のような構成要素は、動作のための適切なタスクを決定でき、タスクを適切な順序で実行させる。これらのタスクのうち少なくとも1つは、リレーショナルデータベースのアスペクトを調整するなどのために、データ環境内で通常は実行される。
いくつかの実施形態により、そのようなシステムはデータ環境内の複製されたデータインスタンスのプロビジョニングを提供可能である。プロビジョニングは、一次および二次レプリカのそれぞれが、1つまたは複数の別個のデータゾーン、別個の地理的位置などの中に、またはそれらにわたりプロビジョンされる、一次−二次複製アプローチを利用可能である。データベースレプリカは、別個のデータインスタンスで実行でき、それぞれが、レプリカにわたり共有されていない専用ブロック記憶ボリュームにアタッチされる。
種々の実施形態で、複製は、オーストリアのウィーン、Linbitからの分散複製型ブロックデバイス(DRBD(登録商標))、またはワシントン州シアトルのAmazon.com,Inc.により提供されるような弾性ブロックストア(EBS)のようなブロックレベル複製メカニズムを用いて実行が可能であり、これは冗長システムにわたりサーバと同期複製データの間のブロック装置の内容のミラーを設けることが可能である。それぞれのインスタンスは、データインスタンスの全ての入力および出力(I/O)動作を管理するためインストールされた、ブロックレベル複製メカニズム(BLRM)カーネルモジュールを有するカーネルを実行できる。全ての読み出しおよび書き込みは一次レプリカにおいて実行可能で、ブロックレベル複製メカニズムは、二次レプリカと同期的に情報を複製する。
一次および二次レプリカの両方は、外部に向けたDNS名を持つことができる。顧客は、DNS_primaryのようなDNS名を用いて現在の一次レプリカに到達できる。DNS_primary名は、(現在の)一次レプリカの外部DNS名へエイリアスする、または「cname」することができる。一次レプリカが障害を起こす、またはそうでなければ使用不可能なとき、二次レプリカが新しい一次レプリカになるよう、レベルが上げられ、またはフェイルオーバされることが可能であり、それによってDNS_primaryのcnameは、新しい一次インスタンスのDNS名へ更新されることが可能である。全ての書き込みは、現在の一次レプリカのデータベースへ送信される。一次インスタンスが書き込みを受信するとき、情報は二次レプリカに同期的に書き込まれる。両位置で正常に書き込まれると、書き込みは成功とみなすことができる。種々の実施形態において、全ての読み出しも、一次レプリカでのみ実行される。
データベースの複製を、よって、異なるデータゾーンで実行するインスタンスレプリカを用いて、複数のデータインスタンスにわたり維持することができる。データベースの書き込みは、全てのレプリカが複数データゾーンに関与する大規模故障などにより使用不可能である場合を除いて、失われるデータがないよう、ブロックレベルで同期複製メカニズムを用いてコミットできる。単一のレプリカ障害は長期間のデータベースの故障を引き起こさないので、複製は、単一のデータベースインスタンスを使用して達成されうるより高い可用性を提供できる。例えば、データベースの一次レプリカがダウンしている場合、種々の実施形態はフェイルオーバ動作を実行でき、それによって二次レプリカが新しい一次レプリカとして引き継ぐ。複製は、多くのインスタンスで非複製データベースより高い耐久性も提供でき、データゾーン、データボリューム障害などの障害に対して保護する。
図1は、種々の実施形態による態様を実施する環境100の例を示す。理解されるように、説明の目的でWebベース環境を使用するが、種々の実施形態を実施するため、適切に、異なる環境を使用してもよい。示される環境100は、テストまたは開発部分(またはサイド)およびプロダクション部分の両方を有する。プロダクション部分は電子クライアント装置102を有し、電子クライアント装置102は、適切なネットワーク104上の要求、メッセージ、または情報を送受信し、装置のユーザに情報を返送するのに動作可能なあらゆる適切な装置を有することができる。そのようなクライアント装置の例は、パーソナルコンピュータ、携帯電話、ハンドヘルドメッセージ装置、ラップトップコンピュータ、セットトップボックス、パーソナルデータアシスタント、電子ブックリーダなどを含む。ネットワークは、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、またはあらゆる他のそのようなネットワーク、またはそれらの組み合わせを含むことができる。そのようなシステムに使用される構成要素は、選択されたネットワークおよび/または環境のタイプに、少なくとも部分において依存し。そのようなネットワークを介して通信するプロトコルおよび構成要素は公知であり、本明細書では詳述しない。ネットワーク上の通信を、有線または無線接続、およびそれらの組み合わせにより可能にできる。この例で、ネットワークは、環境が要求を受信しこれに応えコンテンツを提供するWebサーバ106を有するのでインターネットを有するが、当業者に明らかであろうように、類似の目的を提供できる代替的な装置を他のネットワークに使用可能である。
例示の環境は、少なくとも1つのアプリケーションサーバ108およびデータストア110を有する。連鎖されまたはそうでなければ構成され得る、適切なデータストアからデータを取得するようなタスクを実行するようやりとりしうる、いくつかのアプリケーションサーバ、層、または他の要素、プロセス、または構成要素があり得ることを理解するべきである。本明細書で使用されるように、「データストア」という用語は、データの格納、アクセス、および検索が可能なあらゆる装置または装置の組み合わせを指し、いかなる標準でも、分散、またはクラスタ環境内のあらゆる組み合わせおよび数の、データサーバ、データベース、データ記憶装置およびデータ記憶媒体を有してもよい。アプリケーションサーバは、クライアント装置の1つまたは複数のアプリケーションのアスペクトの実行に必要とされるように、データストアと統合するあらゆる適切なハードウェアおよびソフトウェアを有することができ、アプリケーションのデータアクセスおよびビジネスロジックの大部分を扱う。アプリケーションサーバはデータストアと協働してアクセスコントロールサービスを提供し、HTML、XML、または他のこの例で適切に構造化された言語の形態でWebサーバによりユーザに提供され得る、ユーザに転送されるテキスト、グラフィック、オーディオ、および/またはビデオのようなコンテンツを生成することが可能である。全ての要求および応答、ならびにクライアント装置102とアプリケーションサーバ108間のコンテンツの伝達は、Webサーバが扱うことができる。本明細書の他の場所で述べたように、本明細書で述べた構造化コードがいかなる適切な装置またはホストマシン上でも実行可能であるので、Webおよびアプリケーションサーバは必要とされず、単に例であることを理解するべきである。さらに、環境は、ユーザまたはアプリケーションが加入できるサービスとしてテスト自動化フレームワークを提供できるような方法で設計できる。テスト自動化フレームワークを、本明細書で述べたあらゆる種々のテストパターンの実施として提供できるが、本明細書で述べまたは示唆するように、種々の他の実施も同様に使用可能である。
環境は、開発者、データ管理者または試験者等のユーザにシステムアクセスを許可するユーザ装置118を有する開発および/またはテストサイドも有する。ユーザ装置118は、クライアント装置102について前述のような、あらゆる適切な装置またはマシンであり得る。環境は、アプリケーションサーバ108と同様に機能するが、コードが配置されてプロダクションサイドで実行され、例えば外側のユーザにアクセス可能である前に、開発およびテストの間、通常はコードを実行する開発サーバ120も有する。いくつかの実施形態では、アプリケーションサーバは開発サーバとして機能でき、個別のプロダクションおよびテストストレージが使用されない場合がある。
データストア110は、特定のアスペクトに関するいくつかの個別のデータテーブル、データベース、または他のデータ記憶メカニズムおよび媒体を有することが可能である。例えば、示されたデータストアは、プロダクションサイドにコンテンツを提供するのに使用可能な、プロダクションデータ112およびユーザ情報116を格納するメカニズムを有する。データストアは、テストサイドのユーザ情報と使用可能なテストデータ114を格納するメカニズムを有するようにも示されている。前述したいずれかのメカニズム内に適切に、または、データストア110内に付加されたメカニズム内に格納可能なページイメージ情報およびアクセス権情報のような、データストア内に格納の必要があるかもしれない多くの他のアスペクトがあり得ることを理解するべきである。データストア110は、それと関連したロジックを通して、アプリケーションサーバ108または開発サーバ120から指示を受けとり、それに応答して、データを取得し、更新し、又は他の処理を行うように作動することできる。1つの例で、ユーザが特定のタイプのアイテムのサーチ要求を提出するかもしれない。この場合、データストアはユーザ情報にアクセスしてユーザの識別情報を照合し得、カタログ詳細情報にアクセスしてそのタイプのアイテムについての情報を取得することができる。情報を、それから、ユーザがユーザ装置102上のブラウザを介して見られるWebページの結果リストのように、ユーザに返送できる。対象となる特定のアイテムの情報は、ブラウザの専用ページまたはウィンドウで見ることができる。
それぞれのサーバは、通常は、そのサーバの全般的管理および作動のための実行可能なプログラム命令を提供するオペレーティングシステムを有し、および、通常は、サーバのプロセッサにより実行されるときサーバがその意図された機能を実行するのを可能にする命令を格納するコンピュータ可読な媒体を有する。オペレーティングシステムの適切な実施およびサーバの全般的機能は公知または商業的に入手可能であり、特に本明細書の開示に照らして、当業者には容易に実行される。
1つの実施形態の環境は、分散コンピューティング環境であり、通信リンクを介して相互接続されるいくつかのコンピュータシステムおよび構成要素を利用し、1つまたは複数のコンピュータネットワークまたは直接接続を使用する。しかし、そのようなシステムは、図1で示されるより少ないまたはより多い数の構成要素を有するシステムでも同等に作動可能であることが、当業者に理解される。よって、図1のシステム100の描写は例示説明の性質を有するものとして受け止めるべきであり、開示の範囲を限定するものではない。
図1で示されるような環境は、電子マーケットプレイスのようなプロバイダには有用であり得、そこでは複数のホストを使用して、コンテンツの提供、ユーザの認証、支払トランザクションの実行、またはあらゆる多数の他のそのようなタスクの実行のようなタスクを実行してもよい。これらのホストのいくつかを同一の機能を提供するよう構成してもよく、一方で他のサーバを、少なくともいくつかの異なる機能を実行するよう構成してもよい。そのような場合では、電子環境は、図2の構成200に示されるようなさらなる構成要素および/または他の配置を有してもよく、詳細は後述する。
1つの実施形態によるシステムおよび方法は、ユーザがクラウド内のリレーショナルデータセットの格納、処理、および問い合わせのようなタスクを実行できるよう、開発者、顧客、または他の権限を与えられたユーザが、容易におよびコスト効率よくリレーショナルデータベースおよび他のそのようなデータソースを取得および構成することを可能にする、リレーショナルデータベースサービス(「RDS」)を提供する。この例がインターネット、Webサービス、およびインターネットベースの技術について述べられているが、種々の実施形態の態様は、電子環境内のネットワーク上で使用可能なまたは提供されるいかなる適切なサービスでも使用可能であることを理解すべきである。さらに、本明細書ではサービスを「リレーショナルデータベースサービス」と呼ぶが、そのようなサービスは電子環境内のいかなる適切なタイプのデータリポジトリまたはデータ記憶装置でも使用可能であることを理解すべきである。この例のRDSは、配備、アップグレード、パッチ管理、バックアップ、複製、フェイルオーバ、容量管理、拡張、およびデータ管理の他のそのような面のデータ管理の複雑性について心配することなく、ユーザまたは顧客が容易にリレーショナルデータセットを管理することを可能にする、少なくとも1つのWebサービスを含む。開発者は、よって、データベースインフラストラクチャの管理の複雑性について心配することなく、高度なクラウドアプリケーションの開発へ解放される。
1つの実施形態のRDSは、データ記憶の管理面に有用な構成要素(例えばハードウェアおよびソフトウェア)を有する、別個の「制御プレーン」を提供する。1つの実施形態では、ユーザまたは顧客がRDS内にコールしてデータ記憶に関する特定のタスクの実行を可能にする、データ管理アプリケーションプログラミングインタフェースのセット(API)または他のそのようなインタフェースが提供される。ユーザはしかし、データリポジトリと通信するのにダイレクトインタフェースまたはAPIをなお使用でき、データ記憶の管理または類似のタスクの実行の必要があるときのみ、制御プレーンのRDS特異のAPIを使用可能である。
図2は、1つの実施形態により使用可能なRDS実施例200を示す。この例で、エンドユーザのための計算装置202が示され、これはネットワーク206を通して制御プレーン208内へコールし、データプレーン210のデータリポジトリをプロビジョンするようなタスクを実行することが可能である。ユーザまたはアプリケーション204は、データプレーン210のインタフェースを通して、直接プロビジョンされたリポジトリにアクセスが可能である。エンドユーザ計算装置およびアプリケーションを説明の目的で使用するが、いかなる適切なユーザ、アプリケーション、サービス、装置、構成要素、またはリソースも、種々の実施形態で適切に制御プレーンおよび/またはデータプレーンのインタフェースにアクセス可能であることを理解するべきである。さらに、構成要素がコントロールおよびデータ「プレーン」内に分離されているが、これは、それぞれの機能を提供するため使用される少なくともいくつかのリソース(例えばハードウェアおよび/またはソフトウェア)の実際または仮想の分離に言及しうることを理解するべきである。
この例の制御プレーン208は、基本的に、プロビジョニング、拡張、複製、などのようなコントロールおよび管理アクションを扱うハードウェアおよびソフトウェア構成要素の仮想層である。この実施形態の制御プレーンは、Webサービス層212、または段を有し、例えばコンピュータ実行可能なソフトウェア、アプリケーションサーバ、または他のそのような構成要素とともに少なくとも1つのWebサーバを有することが可能である。Webサービス層も、ネットワーク206に渡ってのWebサービスコールまたは要求を受信するためのAPI232(または他のそのようなインタフェース)のセットを有してもよい。それぞれのAPIを、リレーショナルデータベースのインスタンスをプロビジョン、拡張、クローン、または休止するような、データ環境に関し実行される少なくとも1つの特定のアクションの要求を受信するよう提供することが可能である。APIのうちの1つへの要求を受信すると、Webサービス層は要求を解析、またはそうでなければ分析し、コールに従って行うまたはコールを処理するのに必要とされるステップまたはアクションを判断することができる。例えば、データリポジトリを作成する要求を含むWebサービスコールが受信されるかもしれない。この例で、Webサービス層は要求を解析し、作成するデータリポジトリのタイプ、要求される記憶ボリューム、要求されるハードウェア(もしあれば)のタイプ、または他のそのような態様を判断することが可能である。要求の情報は、その後の処理のため、管理(「Admin」)データストア222、または他の適切な格納場所、またはジョブ待ち行列へ書き込むことが可能である。
1つの実施形態のWebサービス層は、種々の制御プレーンAPIを提供しAPI仕様に基き適切な応答を返すことが可能な、拡張性がある顧客に向けたサーバのセットを有する。Webサービス層は、1つの実施形態では外部に向けた顧客APIを処理するステートレスの複製されたサーバで構成される、少なくとも1つのAPIサービス層も有することができる。Webサービス層は、認証情報に基く顧客認証、顧客の許可、APIサーバへの顧客要求のスロットル、ユーザ入力の検証、要求および応答のマーシャリングまたはアンマーシャリングのような、Webサービスフロントエンド機能に関与できる。API層は、APIコールに応え、管理データストアへの/からのデータベース構成データの読み出しおよび書き込みにも関与できる。多くの実施形態で、Webサービス層および/またはAPIサービス層は、唯一の外部に視認可能な構成要素、またはコントロールサービスの顧客が視認可能でアクセス可能な唯一の構成要素となる。Webサービス層のサーバは、当業界で公知のように、ステートレスで水平方向に拡張されうる。APIサーバならびに持続的データストアは、例えば、サーバが1つのデータセンタの障害に許容力があるように、地理的地域内または地理的位置近辺の複数のデータセンタにわたって広がることが可能である。
この実施形態の制御プレーンは、本明細書で「スイーパ」と呼ぶ構成要素214を有する。スイーパ構成要素は、制御プレーンの種々の構成要素をポーリングし、またはそうでなければ、未処理の要求に応え実行されるあらゆるタスクを判断するのに作動可能なあらゆる適切な構成要素であり得る。この例で、Webサービス層は、adminデータストア222、または類似のジョブ待ち行列内の「データベース作成」要求の命令または情報を出し、スイーパは未処理のジョブのadminデータストアを周期的にチェックできる。当業者に明らかであろうように、ジョブが存在するという通知をスイーパへ送信するWebサービス層のような、種々の他のアプローチの使用が可能である。スイーパ構成要素は「データベース作成「要求をピックアップでき、要求の情報を用いて、要求の少なくとも1つのワークフローをインスタンス化するのに作動可能なワークフロー構成要素216へ要求、コール、または他のそのようなコマンドを送信できる。1つの実施形態のワークフローは、本明細書の他の箇所で述べるようなワークフローサービスを用いて生成および保持される。ワークフローは、一般に、特定のジョブを実行するため実行されるべきタスクのシーケンスである。ワークフローは実際のワークではないが、ワークの情報および実行のフローを制御するワークの抽象化である。ワークフローは、実行中のいつでもプロセスのステートを管理し返送することが可能なステートマシンとしても考えられうる。1つの実施形態のワークフロー構成要素(または構成要素のシステム)は、1つの実施形態では、リポジトリ作成、変更、および削除、リカバリおよびバックアップ、セキュリティグループ作成、削除、および変更、ユーザ証明書管理、キーローテーションおよび証明書管理のような、タスクのワークフローのホスティングおよび実行の管理および/または実行に作動可能である。そのようなワークフローは、本明細書の他の箇所で述べるように、ワークフローサービスの上で実行されうる。基本的なワークフローサービスは必ずしも変化しないので、ワークフロー構成要素は、MySQLのような異なるデータベースエンジンに使用されるワークフローステップ間の違いも管理できる。
この例で、データベースを作成し、元の要求から抽出された情報を問い合わせるため、ワークフローテンプレートを用いてワークフローをインスタンス化することができる。例えば、要求が、Oracle(登録商標)RDBMSまたは他のそのようなインスタンスではなく、MySQL(登録商標)リレーショナルデータベース管理システム(RDBMS)インスタンスに関する場合、特定のタスクがMySQLインスタンスへ向けられたワークフローに追加される。ワークフロー構成要素は、要求された記憶量に関連する特定のタスク、なんらかの特定のハードウェア要求、または他のそのようなタスクも選択することが可能である。これらのタスクは、ジョブ全体に有益な実行順序でワークフローに追加可能である。いくつかのタスクが平行して実行できる一方で、他のタスクは最初に完了する前のタスクに依存する。ワークフロー構成要素またはサービスはワークフロー内にこの情報を含めることができ、タスクを実行でき、情報が必要に応じ渡される。
顧客の「データベース作成」ワークフロー例は、データストアインスタンスのプロビジョニング、オフインスタンス永続的記憶装置のボリュームの割り当て、データストアインスタンスへ永続的記憶ボリュームをアタッチすること、その後、顧客がアクセスまたはそうでなければデータインスタンスに接続するのに使用できる、DNSアドレスまたは他のアドレス、ポート、インタフェース、または識別子の割り当ておよび付加のようなタスクを含み得る。この例で、ユーザは、インスタンスへアクセスするのに使用される、DNSアドレスおよびポートアドレスを提供される。ワークフローは、特定のデータ記憶技術(例えばMySQL)に使用されるあらゆるバイナリまたは他の情報をダウンロードおよびインストールするタスクも有することができる。ワークフロー構成要素は、これらのおよびあらゆる関連するタスク、またはそのようなタスクのあらゆる他の適切な組み合わせの実行を管理でき、「データベース作成」要求に応え「データベース」の作成を示す要求への、実際にデータプレーン210内のデータストアインスタンスに対応し、インスタンスにアクセスするのに使用されるDNSアドレスを提供する、応答を生成できる。ユーザは、それから、制御プレーン208にアクセスするまたは通る必要なしに、DNSアドレスおよびポートを使用して、データストアインスタンスに直接アクセスできる。種々の他のワークフローテンプレートが、記憶装置を増やす用途のような1つまたは複数のデータストアインスタンスの削除、作成、または変更のような類似のジョブを実行するのに使用可能である。いくつかの実施形態では、ワークフロー情報は記憶装置に書き込まれ、少なくとも1つの別個の実行構成要素(図示せず)が、ワークフロー情報に基き実行されるタスクをプルし、またはそうでなければアクセス、または受信する。例えば、プロビジョニングタスクを実行する専用のプロビジョニング構成要素があってもよく、この構成要素はワークフロー構成要素にコールされないかもしれないが、タスク待ち行列をモニタでき、または明らかなように多数の関連した方法のいずれかでプロビジョニングタスクの情報を受信可能である。
述べたように、種々の実施形態は、リポジトリのプロビジョニングのようなプロセスまたはタスクの現在のステートの要求またはコールを受信でき、プロセスの現在のステートを返送できるワークフローサービスの利点を利用することができる。ワークフロー構成要素および/またはワークフローサービスは、それぞれのタスクを実行する実際のコールまたは要求はしないが、代わりに、制御プレーンの構成要素が次に実行されるタスクを判断するのを可能にするワークフローのステートおよび構成情報、およびそのタスクに必要とされるあらゆる情報を管理し、それからそのステート情報を含むデータプレーン内の適切なコールを生成し、それによってデータプレーンの構成要素がコールしてタスクを実行できる。ワークフローおよびタスクは、スループットを増やし処理リソースを最大化するため、平行してスケジューリングできる。述べたように、実際のタスクの実行はデータプレーン内で起こるが、タスクは制御プレーンから始まる。例えば、ワークフロー構成要素は、データストア内にコールできるホストマネジャと通信可能である。よって、所与のタスクについて、あるパラメータを渡すワークフローサービスへのコールができ、それによって、ワークフローサービスはワークフローのタスクのシーケンスを生成し、現ステートのタスクが実行できるよう、現在のステートを提供する。タスクが実行された(またはそうでなければ、解決されまたは終了した)後、ホストマネジャのような構成要素がサービスに応答でき、サービスは、それから、次のタスクが実行できるように、ワークフローの次のステートについての情報を提供する。ワークフローのタスクのうちの1つが実行される毎に、サービスはワークフローが完了するまで実行される新しいタスクを提供できる。さらに、異なるワークフローに複数スレッドを平行して実行して、ワークフローの処理を加速できる。
この実施形態の制御プレーン208は、少なくとも1つのモニタリング構成要素218も有する。データインスタンスがデータプレーン内で作成されるとき、インスタンスの情報は、モニタリングデータストア220のような、制御プレーン内のデータストアへ書き込み可能である。モニタリングデータストアは別個のデータストアであることが可能で、またはAdminデータストア222、または他の適切なリポジトリ内のテーブルの異なるセットのような他のデータストアの部分であることが可能であることを理解するべきである。モニタリング構成要素は、モニタリングデータストア内の情報にアクセスしてデータプレーン210内のアクティブインスタンス234を判断できる。モニタリング構成要素は、Webサービス層、ワークフロー構成要素、スイーパ構成要素、および種々のホストマネジャのような、制御プレーンおよび/またはデータプレーンの複数の構成要素からのログおよび/またはイベント情報の収集のような、他のタスクも実行できる。そのようなイベント情報を使用して、モニタリング構成要素は、顧客に向けたAPIを実行するような目的で、顧客が視認可能なイベントを表すことができる。モニタリング構成要素は、常に、制御プレーンの全ての実行中のリポジトリおよび/またはインスタンスの正常性をモニタし、これらのいかなるインスタンスの障害も検出し、適切なリカバリプロセスを開始することが可能である。
データプレーン内のそれぞれのインスタンス234は、データストアにアクセスを提供するマシンについて、少なくとも1つのデータストア226およびホストマネジャ構成要素228を有することができる。1つの実施形態のホストマネジャは、インスタンス、および/またはソフトウェア配備およびデータストア作動のようなタスクを管理するためにプログラムされたTomcatまたはJavaアプリケーションサーバのようなアプリケーションサーバ上で実行する、またデータストアおよび/またはそれぞれのインスタンスのステートをモニタする、アプリケーションまたはソフトウェアエージェントである。1つの実施形態のホストマネジャは、内部のシステム構成要素からのみアクセス可能で、顧客または他の外側エンティティには可能でないポート上でリスニングする。いくつかの実施形態では、ホストマネジャは制御層内へコールを開始できない。ホストマネジャは、論理ボリュームおよびファイルシステムの設定、データベースバイナリおよびシードのインストール、および、リポジトリの開始または終了を含む、新しいリポジトリのインスタンスを設定するようなタスクの管理および/または実行に関与できる。ホストマネジャは、データストアの正常性をモニタし、またI/Oエラーまたはデータ記憶装置エラーのようなエラー状態のデータストアをモニタし、必要があればデータストアをリスタートすることが可能である。ホストマネジャは、データストアおよび/またはオペレーティングシステムのソフトウェアパッチおよびアップグレードのインストールを行う、および/または管理をする。ホストマネジャは、CPU、メモリ、およびI/O使用に関し得るような関連メトリックスも収集できる。
モニタリング構成要素は、特定の要求の送信によって、またはホストマネジャからのハートビートのモニタリングによるなどように、それぞれのホストのステータスを判断するため、モニタされるインスタンス234のそれぞれのホストマネジャ228と周期的に通信可能である。1つの実施形態では、モニタリング構成要素は、特定のホストおよび/またはインスタンスのステータスを得るためのように、コマンドをそれぞれのマネジャへ発行するよう構成された、イベントプロセッサ(またはモニタリングサーバ)のセットを有する。応答が規定回数のリトライ後に受信されない場合、それからモニタリング構成要素は、問題があると判断でき、問題の検証、および必要があればインスタンスの再プロビジョンのようなインスタンスについてアクションを実行するため、Adminデータストア222または他のそのようなジョブ待ち行列内に情報を格納できる。スイーパは、この情報にアクセスして、インスタンスのリカバリワークフローを開始し障害の自動的復旧を試みることができる。ホストマネジャ228は、制御プレーンのモニタリングのプロキシおよび他の構成要素として働き、制御プレーン構成要素の代理でインスタンスのタスクを実行することができる。時々、対応するホスト、インスタンス、またはボリュームのクラッシュ、リブート、リスタートなどの、自動的に解決できない問題が、インスタンスのうちの1つに起こる。1つの実施形態では、これらのおよび他の顧客の可視イベントのログを取ることが可能な、ロギング構成要素(図示せず)がある。ロギング構成要素は、インスタンスがある期間利用不可な場合に、顧客が適切な「イベント」または類似のAPIをコールしてイベントに関する情報を得られるように、APIまたは他のそのようなインタフェースを有することができる。一部の場合、要求は、インスタンスが障害を起こすとき保留のままにしてもよい。この実施形態の制御プレーンはデータプレーンから分離しているので、制御プレーンはデータ要求を受信することは全くなく、よってその後の依頼の要求を待ち行列に入れることができない(が、いくつかの実施形態ではこの情報を制御プレーンに転送できる)。よって、この実施形態の制御プレーンは、障害に関しユーザへ情報を提供し、ユーザは必要に応じて要求を扱うことができる。
述べたように、一度インスタンスがプロビジョンされ、ユーザにDNSアドレスまたは他のアドレスまたは位置が提供されると、ユーザは。インスタンス234と直接相互作用するため、Javaデータベース接続(JDBC)または他のそのようなクライアントを用いて、ネットワークを通してデータプレーン210へ「直接」要求を送信できる。1つの実施形態では、データプレーンは、「クラウド」またはハードウェアおよび/またはソフトウェア構成要素の動的ネットワークにわたるデータ記憶装置およびアクセスを提供する、コンピューティングクラウド環境、またはWebサービスおよびリソースのセットの形を取る(または少なくとも有する、または部分である)。例えばインスタンスまたは可用性の障害が、使用のためのDNSアドレスを適切な置換インスタンスへプログラムして再マッピングすることにより隠せるので、DNSアドレスは、そのような動的クラウド環境内で有益である。ユーザ202またはアプリケーション204に受信された要求は、例えば、要求のDNSに対応する実際のインスタンス234またはホストへ要求を向けることができる、ネットワークアドレス変換(NAT)ルータ224、または他の適切な構成要素へ向けることができる。述べたように、そのようなアプローチは、ユーザまたはアプリケーションがインスタンスのアクセスに使用されるDNSまたは他のアドレスを変更する必要なく、インスタンスの動的な移動、更新、複製などを可能にする。述べたように、それぞれのインスタンス234は、ホストマネジャ228およびデータストア226を含むとができ、永続的記憶装置230内に、少なくとも1つのバックアップインスタンスまたはコピーを持つことができる。そのようなアプローチを用いて、一度インスタンスが制御プレーンを通して構成されると、ユーザ、アプリケーション、サービス、または構成要素は、制御プレーン232にアクセスする必要なしに、データプレーンへの要求を通じて直接インスタンスとやり取りができる。例えば、ユーザは、インスタンス内のデータに関する構造化された問い合わせ言語(SQL)または他のそのようなコマンドを、DNSアドレスを通して直接発行できる。ユーザがインスタンスの記憶容量を拡張するようなタスクを実行したい場合にのみ、制御プレーンにアクセスしなければならないことになるだろう。少なくとも1つの実施形態で、制御プレーン208の機能は、データプレーン210のプロバイダに関連してもしなくてもよいプロバイダにより少なくとも1つのサービスとして提供され得るが、単にデータプレーン内のデータインスタンスのプロビジョンおよび管理に使用することができるサードパーティのサービスであってもよく、別個のデータプレーン210内のそれらのインスタンスの可用性をモニタし確実にすることもできる。
述べたように、Webサービスまたは他のそのようなサービスとして制御プレーンの機能を提供する1つの利点は、制御プレーンが仮想データベース管理者(DBA)として機能し、人間のDBAがデータのプロビジョニングのようなタスクを実行する必要を避けることである。データのプロビジョニングは、現状では、DBAが必要がある構成情報を受け取り、構成が有効かどうか判断し、インスタンスを最適化および調整し、他のそのようなタスクを実行することを要求する厄介な手動手順であり、かなりの量の時間および努力がかかる。さらに、そのようなアプローチは、データが失われた後まで発見されないかもしれないエラーの機会を多く提供する。本明細書に記載されたような制御プレーンまたはサービスを用いて、ユーザまたは顧客は、代わりに、ハードウェアのタイプおよびデータベース製品のバージョンのような情報を含むコールを提出できる。制御プレーンまたはサービスは、それから、データストアまたはデータ記憶インスタンスを作成、削除、変更、拡張、またはそうでなければ、変更するのに必要なタスクを実行することができる。制御プレーンは、また、DBAがそれぞれのエンジンの専門家であることを要求することなく、一定の様式でいくつかの異なるデータベースエンジンに対応することができる。一度プロビジョンされると、ユーザはデータインスタンスへのネイティブのアクセスを有し、特定のインスタンスのDNSアドレスまたは他の位置情報へ、(MySQLアプリケーションのような)既存のアプリケーションを単に示すことができる。ユーザがMySQL、Oracle、または他のデータベース技術上で構築したアプリケーションを使用継続できるので、問い合わせモデルの制限または修正または他のそのような機能はない。
図3は、1つの実施形態による、モニタリング、および単一のまたは複製されたRDSインスタンスの自動化されたリカバリのような目的で、使用可能な構成300の例を示す。単純化および明瞭化の目的で参照番号を図の間で持ち込すが、これらは単に種々の実施形態に使用可能な類似の構成要素を表すことを理解するべきであり、種々の他の実施形態から必要とされる構成要素として、または単一の実施形態の異なる観点を単に示すものとして解釈すべきではない。さらに、種々の実施形態でより少ないまたは付加された構成要素を使用でき、所与の図内の構成要素の存在または欠如は、特に述べていなければ、与えられた実施形態内でその構成要素が必要とされるまたは有益でないと解釈すべきではない。実施形態および図の間の変形は、本開示の観点で、当業者に明らかである。
図に示されるように、制御プレーンのモニタリング構成要素(またはサービス)218は、本明細書ではイベントプロセッサと呼ぶ、一連の処理ノード302を有することができる。1つの実施形態では、イベントプロセッサは、データプレーンのアスペクトのモニタに作動可能なモニタリングサーバのフリートを有する。それぞれのイベントプロセッサは、関連したホストマネジャ228を通じて、データストア226および/またはデータインスタンス234の特定のセットまたは範囲と通信するよう構成可能である。述べたように、それぞれのデータストアおよびホストマネジャは、データプレーン210のノードまたはマシン、またはデータ環境上に存在できる。それぞれのイベントプロセッサは、適切な通信技術を用いて割り当てられたホストマネジャと通信して、「getStatus」要求のようなセキュア(例えばHTTPS)要求を用いたそれぞれのホストマネジャのpingによるなどによって、それぞれのホストから現在のステータスを取得することが可能である。要求に応え、それぞれのホストマネジャは、ホストマネジャ228に問題があるかどうか、またはホストマネジャ228が問題を検出したかどうかのような情報、ならびに関連すると判断されるあらゆる関連メトリック、パラメータ値、または診断情報を含む応答を送信できる。特定の実施形態で、ホストマネジャが返送する情報の量およびタイプは、ホストマネジャのステートに基き変わりうる。例えば、検出されたエラーがなければ、ホストマネジャは、ログを取る、またはそうでなければ処理する標準セットの特定のメトリックを送信してもよい。問題が検出されれば、例えば、問題のタイプを示す情報、ならびにそのタイプの問題に関連した診断または他の情報のような情報の異なるセットを含んでもよい。そのような判断をするのに、ホストマネジャに種々のアルゴリズムを提供可能である。ホストマネジャから情報を受信すると、イベントプロセッサは必要に応じて情報を分析し、モニタリングデータストア220または他のそのような場所内に情報を格納することが可能である。イベントプロセッサは、本明細書の他の箇所で述べるように、モニタリングデータストア内にあらゆるログ情報も格納できる。この例に示されるように、モニタリングデータストア220は単一の論理データストアであり得るが、多くのデータインスタンス304にわたりパーティションすることができる。
モニタリング構成要素218の部分として複数のイベントプロセッサ302を使用することは、多くの利点を持つ。そのような利点の1つは、データプレーン内の多数のデータインスタンス234に対し、1つのイベントプロセッサがそれぞれのインスタンスを同時にモニタするのに十分な能力を有し得ないことである。複数のイベントプロセッサの利用は、いくつかのイベントプロセッサにわたり分散したモニタリング作業を可能にする。さらに、複数のイベントプロセッサの使用は、既存のイベントプロセッサが、障害または他のそのような問題の際、他のイベントプロセッサの作業を引き取ることを可能にする。データインスタンスが単一のイベントプロセッサによってのみ管理されおり、そのプロセッサに問題が生じ、イベントプロセッサが利用不可となったなら、データインスタンスはモニタリングされず、よって故障または他のそのような問題の危険性があり得ることになるであろう。モニタリングをイベントプロセッサのセットにわたって広げ、それぞれのイベントプロセッサによるモニタリングの範囲を動的に更新することを可能にすることで、制御プレーンは、データプレーン内のそれぞれのインスタンスが、実質的にいつでも、1つまたは複数のイベントプロセッサの障害の場合でさえ、モニタされることを確実にできる。
1つの実施形態では、それぞれのイベントプロセッサの責任は、任意の時点でのモニタされるインスタンス(レプリカを含む)の数をとること、およびその数のイベントプロセッサにわたるインスタンスの数を割り振ることにより判断される。例えば、データプレーン内にモニタされるべき25,000のインスタンスがあり、制御プレーン内で実行中の5つのイベントがあれば、そのとき、それぞれのイベントプロセッサに、データインスタンスのおよそ5,000のモニタリングの責任を与えることができる。それぞれのインスタンスに識別子が与えられていれば、例えば、それからそれぞれのイベントプロセッサに、(第1の5,000識別子、第2の5,000識別子、などのような)識別子の範囲を与え、25,000インスタンスのそれぞれにマッピング情報を管理する必要とするのではなく、それぞれのイベントプロセッサの責任をより容易に調整することができる。図の例は、そのような例におけるそれぞれのイベントプロセッサの責任の範囲を示す。
1分に一度のような適切な間隔で、それぞれのイベントプロセッサ302は、そのイベントプロセッサによりモニタ中のそれぞれのホストマネジャ228に要求を送信可能である。1つの実施形態のイベントプロセッサは、データプレーン内のデータインスタンスに対しホストマネジャを定期的にポーリングする、制御プレーンのTomcat収納構造内で実行中のJavaアプリケーションである。イベントプロセッサは、DNS名およびホストマネジャポートを使用してgetStatus()または類似のコール(例えばover SSL)をすることにより、1つの実施形態のホストマネジャをポーリング可能である。いくつかの実施形態では、モニタ中のデータインスタンスは、顧客データストア識別子、データストア識別子、およびインスタンス識別子の組み合わせにより、一意的に識別される。そのようなアプローチを用いて、データインスタンスをクラウド内の他のインスタンスに移動するとき、古いおよび新しいインスタンスのステートを識別可能である。イベントプロセッサは、ホストマネジャからの応答に基きデータインスタンスのステートを判断できる。1つの実施形態のデータインスタンスは、少なくとも下記のステート例に入ることができる。「OK」(データインスタンスは適切に実行中)、「incommunicado」(データインスタンスは障害の疑いのステート)または「dead」(データインスタンスは到達不可およびステータス要求に応答せず)。
ほとんどの場合、ホストマネジャは、ホストマネジャ、関連するインスタンス、などが予測通り実行中であることを示す応答を返し、イベントプロセッサは、モニタリングデータストア220内の情報を更新できる。1つの実施形態で、ホストマネジャがHTTP応答コード「200」(正常なHTTP要求の標準応答コード)のような適切な応答を返すとき、イベントプロセッサは、データインスタンスが「OK」または類似のステートであると考えることができる。応答がホストマネジャから受信されない場合、または応答がタイムアウト応答(HTTPコード「500」、または他のいずれかの「5xx」エラー応答コード)である場合、イベントプロセッサはgetStatus要求を再送でき、データベースインスタンスを「incommunicado」または類似のステートにおくことができる。ホストが予め定められた数のステータスpingまたは他のそのような要求より多く「incommunicado」ステートにある場合、データインスタンスは「dead」または類似のステートにあると宣言することができる。ホストが予め定められた数のステータスping内に「200」応答(または類似の)コードでオンラインに戻ってくる場合、ホストまたはインスタンスは「OK」ステートに移ることができる。ホストステートが「incommunicado」から「dead」または「OK」に移る前に少なくとも部分で使用される予め定められた回数のチェックは、間欠的なネットワークエラー、一時的にオーバーロードされたイベントプロセッサ、一時的にオーバーロードされたホストマネジャ、または他のそのような、実際はデータインスタンス利用不可、他のそうでなければリカバリを要求する結果とならない一時的エラーによる誤った肯定を避けるためである。1つの実施形態では、ステートが他のイベントプロセッサにより容易に判断可能なので、「incommunicado」のステートは持続されない。
予め定められた数のステータス要求の後応答が受信されない場合、またはステートがそれ以外に 「dead」または類似のステートに移される場合、本明細書の他の箇所で述べるように、イベントプロセッサは、問題のステートに関する情報をAdminデータストア222(または前述したような他のそのようなジョブ待ち行列)内に投入し、無応答のホストマネジャに関して疑いのステートが存在することを示す。前述のように、制御プレーンのスイーパ214構成要素は、情報のため周期的にAdminデータストアをチェックでき、スイーパが疑いまたは問題のステートに関する情報を検出するとき、適切なリカバリワークフローを開始できる。例えば、スイーパは、情報を、利用不可中のデータインスタンスを扱うワークフロー、ホストマネジャにより報告されたエラーを扱うワークフロー、またはあらゆる多数の他のそのような状況のワークフローのような適切なワークフローの生成を引き起こすワークフロー構成要素216に渡すことができる。ワークフローマネジャは、適切なワークフローを生成し、ステート情報を渡し、本明細書の他の箇所で述べるように種々の他のアスペクトを扱うことができる。
リカバリ情報をAdminデータストア内に格納する1つの利点は、そのようなアプローチがモニタリングシステムの障害の場合でさえ、リカバリを可能にすることである。モニタリングデータストアの可用性から独立してリカバリアクションを可能にすることが、望ましい場合がある。この実施形態では、ワークフローの生成などを含むあらゆるタイプのリカバリが、Adminデータストア(または他のそのようなジョブ待ち行列)がアクティブかつ利用可能であることを必要とするので、Adminデータストアの使用を受け入れることができる。よって、リカバリに他の依存性をつけることを避け、代わりに利用可能性を単一の場所で有することが望ましくあり得る。
種々の実施形態によるシステムおよび方法は、顧客が、Webサービスまたは類似のそのようなアプローチを利用して、クラウドコンピューティングまたは類似の環境内に、1つまたは複数の複製されたデータベースインスタンスを作成することを可能にし、高度な耐久性があり、高度に可用性のあるデータソリューションを提供する。顧客が種々の実施形態で複製されたデータベースインスタンスを作成するとき、顧客データは、一次−二次複製モデルを用いて同期的に複製される。いくつかの実施形態では、レプリカは異なるデータゾーン内のような異なる物理的位置に配置できる。それぞれのデータ「ゾーン]は、例えば特定の地理的領域内に配置された、異なる地理的位置に、または周辺に配置された異なるゾーンの1つまたは複数のデータセンタ、またはデータサーバのグループを指すことができる。異なる地理的位置にある他のデータゾーンが、大きな壊滅的イベントの場合を除いて障害を避けられ得るので、RDSインスタンスは、そのとき、データゾーンのうちの1つの障害を許容できる。いくつかのケースで、データセンタは複数のデータゾーンにわたることが可能であるが、与えられたデータセンタ内のデータレプリカは、異なるゾーンでインスタンス化が可能である。重複するゾーン、複数の地理的位置のゾーンなどのような、多くの他の変形が可能である。一次レプリカが障害を起こす、または別様に利用不可になる場合、RDSシステムは迅速および自動的に二次レプリカへフェイルオーバすることができ、ほとんどダウンタイムまたはデータ非可用性がない結果をもたらす。
1つの実施形態では、図2について述べられたような、制御プレーンのWebサービス層の特定のインタフェースをコールすることで、顧客は複製されたデータベースインスタンスの作成が可能である。例えば、顧客は、非複製のデータインスタンスを作成する際のように、「CreateDBInstance」APIをコールして、インスタンスクラス、割り当てられた記憶装置、データベースエンジン、などのアスペクトを指定できる。複製されたインスタンスを作成するとき、顧客は、「Replicated」または類似のパラメータのような少なくとも1つの付加的なパラメータを、作成されたインスタンスを複製すべきであることを示す「true」または他のいずれかの適切な値に設定した値とともに含めることができる。いくつかの実施形態で、顧客が他に指定した場合を除いて非複製のインスタンスが作成されないように、値はデフォルト設定で「false」に設定される。いくつかの実施形態では、特定のレベルのサービスのために料金を支払う顧客のような、特定の顧客だけが複製されたインスタンスを作成する能力を持つ。
いくつかの実施形態では、顧客は、二次レプリカを一次レプリカと異なるデータゾーン内に作成するかどうかも選択できる。顧客は、いくつかの実施形態では、例えばインスタンスの1つまたは複数の特定のデータゾーンまたは順序付きリストを選択することも可能であり、一方で他の実施形態では、顧客は少なくとも一次レプリカのデータゾーンを選択することはできない。例えば、顧客が2つのデータゾーンと延長時間内に利用不可となるデータゾーンのうちの1つを指定する場合、いくつかの実施形態で、耐久性の必要が第3のデータゾーン内などで他のレプリカが生成される状態を引き起こす。これは、複数顧客の順番データゾーンリストの管理および更新を必要とする可能性があり、重要な利点を提供することなくユーザの経験を複雑にする可能性がある。さらに、アプリケーションにとっては、二次レプリカと同一のデータゾーン内に位置付けられたいくつかのアプリケーションのフリートがあるよう、データゾーンにわたり関連したアプリケーションのフリートを広げることの方がより容易であり得る。
いくつかの実施形態では、顧客は複製されたデータインスタンスに「DescribeDBInstance」または類似のAPIをコールでき、それによって、RDSは、一次レプリカおよび一次レプリカが現在位置付けられたデータゾーンのエンドポイントDNS名のような情報をリストにできる。例えばRDSインスタンスのステータスが「Available」で、エンドポイントDNS名を使用してインスタンスに接続するとすぐに、顧客がデータストアのエンドポイントDNS名を受信可能であるので、顧客は、なお単一のデータゾーンに使用されるであろう従来のアプローチを用いて、RDSインスタンスと通信可能である。レプリカ障害の場合、RDSはデータベースを対応する二次レプリカへフェイルオーバでき、エンドポイントDNS名を新しい一次レプリカにエイリアスすることができる。データベースエンドポイントDNS名は、多くの実施形態で一定のままであり、複製されたインスタンスの有効期間の間は変化しない。
いくつかの実施形態では、顧客に、「ModifyDBInstance」または類似のAPIを、Replicatedパラメータを「true」に設定してコールすることによるなどで、非複製インスタンスを複製されたインスタンスに変換する能力を提供することができる。これは、APIコールパラメータに依存し得て、次のメンテナンスウィンドウの間または要求の後直ちになどの適切な時間に、データベースが複製されたインスタンスに変換される状況を起こしうる。
種々の実施形態は、サーバ間のブロック装置の内容をミラーリングする何も共有しない複製された記憶ソリューションを実行するカーネルモジュールのような、ブロックレベル複製メカニズム(BLRM)の利点を活用する。BLRMは、ブロック装置(すなわちハードディスクまたは論理ボリューム)の上で動作する。それは、一次レプリカが全ての更新を下層のブロック装置に指示する一次−スレーブ複製アーキテクチャを使用する。ブロック装置への全ての入力および出力(I/O)要求は、BLRMカーネルモジュールにより傍受され、全ての書き込み動作が自動的および同期的に複製される。BLRMは、ピア装置の固有の障害の検出を提供し、ピアノードがアクセス不可能なとき、適切なリカバリハンドラを呼び出す。BLRMは、バックグラウンドで、一次レプリカにおけるデータアクセスに干渉することなく、一時的に利用不可のノードを、データの最新バージョンへ自動的に再同期もさせる。BLRMは、世代識別子(「GI」)を使用して複製されたデータの世代を識別し、それによって、BLRMは、2つのノードが同一のレプリカペアのメンバかどうか、バックグラウンド再同期(必要があれば)の指示、および部分的または全体の再同期が必要かどうかといったアスペクトを判断できる。BLRMドライバは、レプリカペアの初期化の間、切断されたスタンバイレプリカが一次レプリカにスイッチングしているとき、または一次ロールのリソースが二次レプリカから切断されているときのような適切な時にいつでも新しい世代を開始できる。本明細書では、説明の目的で1つの例としてブロックレベルの複製メカニズムを使用するが、あらゆる他の適切なブロックレベルまたはメカニズム技術が種々の実施形態の範囲内で使用可能であることを理解するべきである。
述べたように、種々の実施形態のRDSデータインスタンスは1つまたは複数のシステムまたはプラットフォーム上で構築可能である。例えば、インスタンスは仮想コンピューティング環境上で構築可能であり、仮想コンピューティング環境は、顧客がWebサービスまたは他の適切なアプローチを利用して、さまざまなオペレーティングシステムでそれらのインスタンスを起動し、管理することを可能にする。そのような仮想コンピューティング環境を提供するWebサービスの例は、Amazon.com,Inc.から提供された伸縮自在な計算クラウド(Elastic Computing Cloud、EC2)サービスである。データインスタンスを、インスタンスの有効期間から独立して持続するオフインスタンス記憶装置を提供可能な、ブロックレベル記憶メカニズム上でも構築できる。ブロック格納メカニズムは、インスタンスにアタッチして、インスタンス内の装置としてエクスポーズ可能な記憶ボリュームを提供できる。ブロック格納プラットフォームの例は、同時係属中の2008年8月8日出願の米国特許出願第12/188,949号、表題「Managing Access of Multiple Executing Programs to Non−Local Block Data Storage「にあり、これは参照により本明細書に組み込まれる。論理ボリューム(例えばLVM層)は、顧客データベースがLVM/ファイルシステム層上で実行できるよう、ブロック記憶ボリュームおよび適切なファイルシステムの上に構築可能である。1つの実施形態では複製されたデータベースに対し、BLRMはLVM層の上で実行できる。そのような実施形態のBLRMは、全てのI/O要求を傍受して、それらの要求を論理ボリュームに送信し、論理ボリュームは、次いで複数のブロック記憶ボリュームにわたり要求を分割することができる。論理ボリュームの使用は、複数のブロック記憶Eボリュームを扱う能力ならびに記憶装置を容易に拡張する能力などをもたらすことができる。LVMの上にBLRMの層を置くことにより、書き込み動作をレプリカにわたり複製させることを可能することもできる。
図4は、複製されたRDSインスタンスを提供する一次−二次複製モデルを実行するメカニズム400の例を示す。この例で、一次レプリカ410および二次レプリカ412は、データプレーン408、またはデータベース環境の異なるデータゾーン(1および2)内に位置する。それぞれのレプリカはブロック記憶メカニズムの上に構築され、ここでは、それぞれのレプリカのブロックストア420、422へのI/O管理をBLRM層418、422として示す。図2に関して述べたものと同様であり得るような制御プレーン406の構成要素は、例えば構成コマンドを必要なセットアップ動作を実行できるローカルホストマネジャ414、416へ発行することにより、複製されたRDSインスタンスを作成することが可能である。図に見られるように、BLRM418、422のようなブロックレベルメカニズムは、ブロック装置レベルでの全てのI/O要求、およびローカルディスクおよびリモートディスク420、424への要求に対する書き込み情報を傍受するよう位置する。この例で、データベース426(例えばSQL)は一次レプリカ410内でのみ実行され、全てのクライアント402はそのデータベーストランザクションを一次レプリカ410上(適切なネットワーク404を介して)で実行する。データベースは通常下層の装置内の更新を感知しないので、データベース426は二次レプリカ412上で実行されず、ファイルシステムも二次レプリカ上にマウントされ得ない。
それぞれのデータベースクライアント402は、RDSデータベースDNSエンドポイント名を使用して自動的に現在の一次レプリカを発見し、RDSデータベースDNSエンドポイント名は一次レプリカ410のホスト名へエイリアスすることができる。DNSを使用して現在の一次レプリカを発見することにより、例えばネイティブのMySQLクライアント、JDBC、PHP、C#、およびHaskellのような既存のデータベースクライアントとの互換性が維持できる。DNSキャッシングがクライアントの古い一次レプリカへの接続の試みを引き起こす可能性があるが、二次レプリカ内でデータベースは実行されないので、クライアントは二次レプリカへの接続によりデータベースと対話できない。顧客は、それから適切なDNS情報を取得することを知ることができる。
述べたように、データベース複製を、同一のまたは異なるデータゾーン内で実行する複数の下層のデータインスタンスにわたり対応することが可能である。一度書き込み動作が同期アプローチを用いてコミットされると、データは、複数のデータゾーンの障害などにより全てのレプリカが利用不可である、非常にまれなケースを除いて失われない。そのようなアプローチは、1つのレプリカ障害が長時間にわたるデータベースの故障を引き起こさないので、単一のデータベースインスタンスより高い可用性を提供できる。例えば、データベースの一次レプリカがダウンしている場合、システムは多くの場合二次レプリカへフェイルオーバ動作を実行できる。さらに、そのようなアプローチは、非複製データベースより高い耐久性を提供でき、データゾーンまたは単一のブロック記憶ボリューム障害などの障害のような障害から保護できる。
前に述べたように、RDSは、BLRMのようなブロックレベルメカニズムの利点を活用して、サーバ間のブロック装置の内容をミラーすることができる。一次−スレーブ複製アーキテクチャは、一次がブロック装置への全ての更新を受け入れ書き込むことを可能にする。ブロック装置への全てのI/O要求は、書き込みが同期複製できるよう、BLRMカーネルモジュールにより傍受される。BLRMは、複製されたデータの世代を識別するため、世代識別子(「GI」)を利用する。BLRMは、このメカニズムを使用し、2つのノードが、偶発的に接続された2つのノードにではなく、実際に同一のレプリカペアのメンバであるかどうか判断する。GIは、必要があれば、バックグラウンド再同期の指示を判断するため、および部分的または完全再同期が必要かどうかを判断するため使用可能である。少なくとも1つの実施形態で、GIは全範囲で一意的な識別子(Universally unique identifiers、UUID)であり、シーケンス番号を単調に増加しない。BLRMドライバは、レプリカペアの初期化の間、切断された二次レプリカが新しい一次レプリカに切り換えられるとき、または一次ロールのリソースが二次レプリカなどから切断されるとき、新しい世代を開始できる。
レプリカペア(例えば一次レプリカPおよび二次レプリカS)が初めて初期化され接続される例で、一次レプリカPはGI1のような新しいGIを生成可能である。一次レプリカPがSから切断されてPが同期複製なしに全てのI/Oを実行する劣化モードに移る場合、PはGI2のような新しいGIを生成可能である。PおよびSがネットワークパーティションにより切断された場合でも、Sは新しいGIを生成しない。この例で、一次レプリカPは、メタデータ内に新しいGIおよび前のGI(それぞれGI2とGI1)を保存する。前のGIを格納する1つの理由は、二次レプリカリカバリの最適化である。例えば、Sが瞬間的に切断される原因となる一時的ネットワークパーティションがあり得る。その後、パーティションが回復しSがPに再接続されるとき、Pが2つのデータ世代間で変更されたそれらのブロックのみを送れるよう、PはSの現在のGIをPの前のGIと見ることができる。
一次レプリカの障害がある例では、Pが利用不可と検出されるときに、Sを新しい一次レプリカへとレベルを上げることができる。二次レプリカを新しい一次レプリカへレベルを上げるためのコマンドが発行されるとき、BLRMは新しい一次レプリカ(以前のS)で新しいGIを生成できる。よって、P(元の一次レプリカ)がクラスタに再接合しSと通信するとき、Pはデータ世代が変化したことを判断でき、PはSからデータを同期しなければならない。
述べたように、一次レプリカPは全ての書き込みおよび読み出しを受け入れることが可能で、DNS_primaryは一次インスタンスのDNS名へエイリアスするかcnameすることができる。二次インスタンスSは、DRDB複製(または類似のブロックレベル複製)プロトコルを通して一次レプリカから全ての更新を受信できる。マウントされた装置、または二次レプリカ内で開始されたデータベースはない。フェイルオーバを可能にするとき、利用可能な他の構成要素は、モニタリング構成要素Mである。モニタリング構成要素は、一次および/または二次レプリカの正常性をモニタし、障害が起こるとき適切なフェイルオーバアクションを開始できる。1つの実施形態のモニタリング構成要素は周期的にpingし、またはそうでなければ一次および二次レプリカと通信する。この通信は、例えば、T_heartbeatまたは類似のパラメータにより特定される秒数のような一定の間隔をおいて起こるハートビート通信を含むことができる。モニタリング構成要素がPおよびSにpingするときはいつでも、1つの実施形態においてモニタリング構成要素は、HTTPgetStatus()コマンドをそれぞれのレプリカ内で実行中のホストマネジャへ発行する。PおよびSがそれぞれそのコールを受信するとき、レプリカは、それぞれのレプリカの現在のステートを判断するために、BLRMまたは類似のステータスコールを実行できる。例えば、一次レプリカPは、IN_SYNC,STALLED,DEGRADED,DEADなどのようなステータスを判断するため、BLRMツールコマンドを実行できる。
ステータスの報告に加え、それぞれのレプリカは、それらのそれぞれのGIを、メモリ内に世代番号を格納可能なモニタリング構成要素へ報告できる。新しいモニタリング構成要素がブートストラップするときはいつでも、新しい構成要素は、レプリカペアのリストならびにエンドポイントを、強力に一致したデータストア(すなわちモニタリングデータベース)から読み出し、メモリ内に情報を格納することができる。それぞれのステータスpingの間、モニタリング構成要素は数が同一かどうか判断可能である。なんらかの理由で数が異なる場合、GI値をメモリ内で更新できる。
一次または二次レプリカは少なくとも2つのモニタされたステートのうち1つであり得る。図5は、1つの実施形態による一次レプリカのステート変移ダイアグラム500の例を示す。レプリカがモニタリング構成要素に接続されているとき、レプリカはMONITOREDステートを有することができる。レプリカがモニタリング構成要素に接続されていないとき、レプリカはNOT_MONITOREDまたは類似のステートであり得る。一次インスタンスは、複数のデータ同期ステートの1つであり得る。例えば、PおよびSの両方が作動中で互いに通信可能なとき、PはIN_SYNCステートである可能性があり、そこでは全ての書き込みがPおよびSの間で同期的に書き込まれる。ステートダイアグラムを見ると、一次レプリカがIN_SYNC/Monitoredステートにある504で、一次レプリカは二次レプリカと通信可能で、全ての書き込みは成功しており、BLRMはハートビートしており、一次はモニタされている。一次がモニタリング構成要素から切断されているがなお二次レプリカと同期している場合、ステートはステート502へ変移できる。ステート502で、一次は二次レプリカと通信可能で、両方のレプリカが接続されて最新であるが、一次がモニタリング構成要素から切断されており、よってモニタされていない。二次レプリカもCONNECTEDステートにあり得、そこでは二次レプリカは正常で一次レプリカとコンタクトがあり、二次レプリカが正常で一次レプリカとコンタクトがないとき、DISCONNECTEDステートであり得る。よってステータス502および504で、二次レプリカはCONNECTEDであろうが、他のステートではDISCONNECTEDであろう。
Pがモニタされているが、Sから切断され、またはそうでなければSとコンタクトがないとき、一次レプリカはSTALLEDまたは類似のステート508を有することができ、全ての書き込みが凍結されるので、I/O動作に進むことができない。PがSから切断され非複製モードに切り換わったとき、一次レプリカはDEGRADEDまたは類似のステート406を有することができる。これは、Sがダウンまたはそうでなければアクセス不可能なとき、Pが読み出しおよび書き込みを提供し続けることを可能にする。Pはステート502または508からDEGRADEDモードに到達し得る。RDSが通常は新しいスタンバイレプリカを作成するので、Pは多くの実施形態で、DEGRADEDモードに長くはとどまらないかもしれない。一度新しい二次がインスタンス化され、一次レプリカと完全に同期され、モニタリング構成要素にモニタされると、ステートはステート504に戻る可能性があり、そこでレプリカはIN_SYNCおよびMonitoredである。
PがSから切断され、またNOT_OBSERVEDステートにある、またはそうでなければ入るとき、一次レプリカは、SUICIDALまたは類似のステート510であり得る。この場合、Pのステートは、T_failover秒のような時間後にSUICIDALに変更されうる。このステート510は、いくつかの実施形態では、STALLEDステート508からのみ到達でき、Pがモニタリング構成要素とコンタクトがないときに起こる。このステートで、一次レプリカは、自身をシャットダウン、またはデータインスタンスをリブートすることによって、自身を「kill」する。
そのようなプロセスを実施するモニタリングおよびフェイルオーバアーキテクチャの部分として、それぞれの複製されたデータベース(すなわちレプリカペア)が、モニタリング構成要素によりモニタされる。RDSでは、1つのモニタリング構成要素が複数のレプリカペアをモニタできる。さらに、システムは複数または「フリート」のモニタノードを利用できる。述べたように、モニタリング構成要素は、T_heartbeat秒毎のような適切な間隔でレプリカペアを継続的にpingすることにより、モニタされたデータベースのステートを判断できる。図6は、それぞれのモニタリング構成要素Mの観点からの複製されたデータベースのステート変移ダイアグラム600の例を示す。一次レプリカがIN_SYNCステートにあり、二次が接続されているとき、MはIN_SYNCまたは類似のステート604にあるものとしてデータベースを見ることができる。例えば、モニタリング構成要素がネットワークパーティションによりレプリカのうちの1つと通信できないとき、Mはステート604にあるものとしてデータベースを見ることができるが、フェイルオーバイベントを実行する必要がないように、他のレプリカが、モニタリング構成要素にレプリカが接続され同期していることを示す。
なんらかの理由でMが一次および二次レプリカの両方ともはや通信できない場合、モニタリング構成要素が区分されているか、両方のレプリカが同時に利用不可である。どちらのケースも、MはPartitionedまたは類似のステート602に移動中としてデータベースのステートを見ることができる。これは、一次および二次レプリカの両方をNOT_Monitoredステートにおく。モニタ区分が回復するときまたは新しいモニタリング構成要素がデータベースに割り当てられるとき、ステートはIN_SYNCステート604に戻ることができる。
Mが一次レプリカともはや通信できず、二次レプリカがDisconnectedステートにあるように一次レプリカと通信できない場合、モニタリング構成要素はS_ONLYステート606にあるものとしてデータベースを見ることができる。T_failover秒のような時間内に、モニタリング構成要素が一次レプリカとの通信を再確立することが可能である場合、ステートはIN_SYNC604に戻ることができる。モニタが少なくともT_failover秒の間一次レプリカと通信できない場合、モニタリング構成要素は二次レプリカを新しい一次にレベルを上げることを決定できる。二次レプリカが現在のGIが一次レプリカの最後に既知のGIと同一であることを確認し、二次レプリカがレベル上げの要求を確認する場合、新しい二次がインスタンス化され、完全に新しい一次と同期されるまで、ステートはP_ONLYステート608に変移でき、同期された段階でステートはIN_SYNC604に戻ることができる。
しかし、モニタリング構成要素が二次レプリカを新しい一次レプリカへレベルに上げることを決定したが、二次レプリカがレベル上げ要求を拒絶する場合、ステートはDisasterまたは類似のステート610へ変移しうる。二次は、二次レプリカの現在のGIが一次レプリカの最後に既知のGIと異なるので、要求を拒絶するかもしれない。他の場合では、二次レプリカから応答がそれ以外の理由で受信されないかもしれない。これは、大きな非可用性がある、または、GIまたはメンバーシップ情報が壊れるなど非常に可能性が低いイベントのときに起こりうる。
ステートがIN_SYNC604である他の場合では、モニタリング構成要素は、二次レプリカと通信する能力を失うかもしれず、一次レプリカも、一次レプリカがSTALLEDステートにあるように、二次レプリカと通信する能力を失うかもしれない。この場合、ステートモニタリング構成要素は、一次レプリカがDEGRADEDステートに移るよう要求でき、モニタリング構成要素から見るようなステートは、P_ONLYまたは類似のステート608へ変移しうる。モニタリング構成要素および一次レプリカが二次レプリカと通信できず、一次レプリカがDE−GRADEDモード中である状態で、新しい二次レプリカをインスタンス化して一次レプリカと完全に同期することが可能で、それによってMから見るようなステートは、IN_SYNC604に戻りうる。
ステート変移ダイアグラムに見られるように、少なくとも1つの実施形態のモニタリング構成要素により実施されるフェイルオーバアルゴリズムは、モニタリング構成要素に、特定の状況におけるインスタンスについて、二次レプリカを新しい一次レプリカにレベルを上げることをさせる。理解すべきように、この例は単に図6のステートダイアグラムを通して1つのパスを示すのみである。図7は、1つの実施形態により使用可能な二次レプリカにフェイルオーバする例示的なプロセス700を示す。この例で、一次および二次レプリカはプロビジョンされ、接続され、および同期される(702)。世代識別子(GI)が、複製されたデータの現在の世代を識別するため、それぞれのレプリカに生成される(704)。モニタリング構成要素がレプリカに割り当てられ、周期的にレプリカにpingする(706)。レプリカペアに割り当て中のモニタリング構成要素は、そのペアの、しばらくすると無効となる可能性がある「リース」を取得するか、提供されることが可能である。リースは、通常は一次レプリカのホストマネジャから受信され、イベントプロセッサリーススキームが一次レプリカのクラッシュを切り抜けられるよう、イベントプロセッサ識別子およびリース時間を両方のレプリカに格納できる。このように、モニタリング構成要素は、周期的にレプリカから解放されることができ、よってロード配分またはパーティショニングの目的で他のペアへ移るか、またはそうでなければ多数の他のそのような理由のために操作されることが可能である。リース期間の終了またはその間際に、モニタリング構成要素はリースを更新しようと試みることができ、本明細書の他の箇所で述べるように、リースを更新しないなどの判断ができる。モニタリング構成要素が一次レプリカとのコンタクトを失う場合(708)、モニタリング構成要素はある一定の期間リトライを試みることができる(710)。モニタリング構成要素が一次といつでもコンタクトを取り戻す場合、モニタリングプロセスは継続できる。モニタリング構成要素がT_failover秒のような時間の間一次レプリカとコンタクトがない場合、二次レプリカが一次レプリカと通信可能かどうか(712)、または二次レプリカがDISCONNECTEDステートにあるかどうかについて判断がなされる。コンタクトが失われたときの一次レプリカのステートが、二次レプリカにIN_SYNCであると知られているかどうかについての判断も可能である(714)。種々の実施形態で、判断は別個に、または実質的に同時にすることができる。二次レプリカが一次レプリカと通信できない場合、およびレプリカが同期されていた(例えば同一のGI値を持った)場合、モニタリング構成要素は二次レプリカを新しい一次レプリカへレベルを上げるコマンドを発行する(716)。Pの最後のステートが判断できない場合、フェイルオーバは起こらない。プロセスまたはマシンがリブートした場合、または新しいモニタリング構成要素が引き継いだ場合は、モニタリング構成要素はPのステートを知らないかもしれない。そのような場合では、ステートをDEGRADEDとして扱うことが可能である。
二次レプリカを新しい一次レプリカへレベルを上げるとき、モニタリング構成要素は、二次レプリカのホストマネジャへ、promoteToPrimary(oldGI)のようなコマンドを発行できる。この例で、「oldGI」は、一次レプリカのホストマネジャの最後に既知のGIである。この要求を受信すると、二次レプリカは一次レプリカと最後にもう一度通信を試みることができる。レプリカが通信不可能の場合、二次レプリカはその現在のGIが(一次レプリカの)oldGIと同一であることを確認する(718)。二次レプリカはリース情報も確認可能で、それによって要求を発行またはステータス要求を送信するモニタリング構成要素は、そのレプリカの有効なモニタリング構成要素であるか、レプリカの現在の「リースホルダ」である。その場合、二次レプリカは自身のレベルを上げることが可能であることを確認し、適切なBLRMコマンドの発行により新しい一次となる(720)。二次レプリカは、promoteToPrimary()要求への応答として、新しいGIをモニタリング構成要素へ返す。その後、新しい(レベルを上げられた)一次レプリカのホストマネジャがファイルシステムをマウントし、データベース(例えばMySQL)を開始する(722)。モニタリング構成要素が正常に二次レプリカのレベルを上げたとき、モニタリング構成要素または制御プレーンの他の構成要素により実行され得るように、DNS_primary cnameを、新しい一次レプリカに向けることができる(724)。その後、インスタンスステートを、二次リカバリの必要ありとマークを付けることができる(726)。
しかし、二次レプリカの現在のGIがoldGIと同一でない場合、二次レプリカを新しい一次レプリカになるようレベルを上げることは、安全ではないかもしれない。この場合、レベル上げのプロセスを異常終了させることができ、操作者の介入(または他の適切な修復作業)のため警報が生成される。操作者がこの問題を解決できない場合、データベースを最後の既知のポイントへリストアすることにより、ポイントインタイムリカバリを実行できる。
ダイアグラムを見て、多数の異なる障害の場合を判断できる。例えば、第1の障害の場合は、一次および二次レプリカが実行中であり、モニタリング構成要素との通信中である。モニタリング構成要素の観点からは、構成要素がそれぞれのインスタンスと最大T_monitoring component秒内のように周期的に通信可能である限り、全ては期待通り実行中である。この場合の一次のステートは、「IN_SYNC/OBSERVED」であろう。
モニタリング構成要素および二次レプリカの間のネットワークリンクがパーティションされた障害の場合では、しかし、一次は二次およびモニタリング構成要素と通信可能であろうが、モニタリング構成要素は二次レプリカと通信不可能であろう。一次の観点からは、二次リカバリが開始されないよう、一次がなおIN_SYNC/OBSERVEDステートにあるように、全ての書き込みはなお成功である。モニタリング構成要素の観点からは、構成要素は二次障害を検出するが、一次はなお二次と同期され、それでモニタリング構成要素は実行および動作の必要がなく、単にレプリカとの通信の試みを続けることができる。
代わりに、ネットワークパーティションに応答する際のように、モニタリング構成要素が一次構成要素と通信不可能な場合、二次レプリカは一次レプリカおよびモニタリング構成要素と通信可能になるが、一次レプリカはモニタリング構成要素からアクセス不可能になる。一次の観点からは、n*T_heartbeat秒後、一次は、一次レプリカはモニタリング構成要素とコンタクトがなかったので、NOT_OBSERVEDステートに移る。いくつかの実施形態では、nの値はn≧2に設定できる。一次のステートは、よってIN_SYNC/NOT_OBSERVEDであり得る。モニタリング構成要素の観点からは、二次レプリカのみがアクセス可能であるが、モニタリング構成要素がフェイルオーバを開始しないように、二次レプリカはなお一次レプリカとコンタクトがある。
1つの例示的な障害のケースでは、ノード障害またはネットワークパーティショニングのような要因により、二次レプリカがダウンしているかもしれない。図8は、少なくとも1つの実施形態により使用可能な二次リカバリを実行する、プロセス800の例を示す。この例は、レプリカがすでにプロビジョンされ、通信中で、同期されており、レプリカはモニタリング構成要素によりモニタされている(802)と仮定する。モニタリング構成要素が二次レプリカとのコンタクトを失う場合(804)、モニタリング構成要素は、有る一定期間リトライを試みることができる(806)。モニタリング構成要素がいつでも二次レプリカとコンタクトを取り戻す場合、プロセスは継続可能である。モニタリング構成要素が二次レプリカと一定の期間コンタクトがない場合、一次レプリカが二次レプリカと通信可能かどうかについて判断がなされる(808)。一次レプリカが二次レプリカと通信不可能である場合、一次はT_sync秒後にSTALLEDステートになることが可能である(810)。STALLEDステートに入った後、一次レプリカはモニタリング構成要素からの通信を受けるため、n*T_heartbeat秒間待機できる。一次レプリカがこの時間単位(すなわち一次がMONITOREDステートにある)内にモニタリング構成要素から通信を受ける場合、一次はDEGRADEDステートになり、次のハンドシェイクでモニタリング構成要素に通知する(812)。モニタリング構成要素の観点からは、ステートはP_ONLYになり、そこではモニタリング構成要素は二次レプリカがアクセス不可能であることを知る。これを決定すると、モニタリング構成要素は、NEED_SECONDARY_RECOVERYのようなステートとしてデータベースインスタンスの状態にマークをつけ、本明細書の他の箇所で述べるような二次レプリカリカバリワークフローを開始する(814)。
他の障害のケースでは、全てのホストが起動して実行可能であるが、データゾーンパーティションまたは不良ラックのアップリンクによるかもしれないように、モニタリング構成要素および二次レプリカから一次レプリカがパーティションされることがあり得る。よって、モニタリング構成要素は二次レプリカと通信可能であるが、モニタリング構成要素と二次レプリカのどちらも一次レプリカにアクセス不可能である。一次レプリカの観点からは、T_sync時間単位の後、一次レプリカはSTALLEDステートに入る。STALLEDステートに入った後、一次レプリカは、n*T_heartbeat秒間モニタリング構成要素から通信を受けるため待機する。この場合、SUICIDALステートに移り二次レプリカとして戻るときそのインスタンスをリブートすることにより自身を「kill」するよう、一次レプリカはモニタリング構成要素から通信を受けず、二次レプリカから切断される。モニタリング構成要素の観点からは、モニタリング構成要素はS_ONLYのステートに到達し、そこで一次レプリカがアクセス不可能であることを知る。モニタリング構成要素は、次のハンドシェイクに二次レプリカをチェックし、二次レプリカが一次レプリカと通信可能かどうか判断する。この場合、二次レプリカはDISCONNECTEDステートにあることを宣言する。モニタリング構成要素は、T_failover秒間待機し、それから一次レプリカがなお利用不可であることを確認する。そうであれば、前のデータベースのステートがIN_SYNCで、二次レプリカの現在のGIが一次レプリカの最後の既知のGIと同一である場合、モニタリング構成要素は二次レプリカが新しい一次レプリカへレベルを上げるようにさせる。T_failoverの時間値は、n*T_heartbeat+T_bufferに設定が可能で、ここでnは先の場合で前述したものと同一のパラメータであり、n≧2に設定される。T_bufferは、一次レプリカが自身を「kill」するのに予想される最悪の場合の時間である。
一次がダウンして他に問題がない類似のケースでは、フェイルオーバもあり得る。この場合、しかし、一次レプリカがダウンして、SUICIDALまたは他のそのようなステートにならないので、一次が変移ステートを有さない。
他の障害の場合では、一次および二次レプリカは予想通りネットワークの問題なしに機能および通信できるが、モニタリング構成要素がダウンする可能性があるか、またはそうでなければ、利用不可となる。一次の観点からは、全てがなおIN_SYNCデータ同期ステートにあるが、一次レプリカはNOT_OBSERVEDステートにあることを示す。
述べたように、制御プレーンは、RDSインスタンスをモニタし、必要があるとき適切なリカバリアクションを発行するよう構成されたイベントプロセッサの分散されたセット、またはイベント処理フリートを有する。図9は、種々の実施形態により使用可能な、モニタリング構成要素をRDSインスタンスに割り振るプロセス900の例を示す。そのようなプロセスでは、イベントプロセッサ、またはモニタリング構成要素の数(902)ならびにモニタされるRDSインスタンスの数(904)を決定できる。これらの決定はどちらの順番でも、または平行しても可能で、ロード配分、再パーティショニング、などの目的で周期的に再決定が可能である。複製されたインスタンスを含むインスタンスの判断された数に関するモニタリングワークロードが、それから決定され、適切にパーティションされる(906)。いくつかの実施形態では、モニタリング構成要素は、データゾーン、地理的位置、または他のそのようなアスペクトによりグループ分けが可能である(908)。それぞれのモニタリング構成要素は、単純なハッシュベースパーティショニングアルゴリズムの採用によるような、RDSインスタンスのモニタリングワークロードの部分(またはパーティション)に割り当てが可能であり、そこではハッシングがInstanceIdentifierまたは類似の識別値に基いてなされる(910)。モニタリング構成要素がグループに割り当てられる場合、第1のデータゾーン内のグループを他のデータゾーン内のインスタンスなどをモニタするのに使用することができる。
それぞれのモニタリング構成要素を、そのモニタリング構成要素に割り当てられたそれぞれのインスタンス(複製または非複製)の正常性をモニタするよう構成できる(912)。モニタリング構成要素は、そのインスタンスに関連するそれぞれのレプリカにpingするか、またはそうでなければ通信することにより、種々の実施形態のRDSインスタンスの正常性を判断できる。インスタンスが複製されていない場合、モニタリング構成要素はインスタンスの1つのホストマネジャと通信するだけでよい。本明細書で後に述べるように、モニタリング構成要素は「リース」を取得して、一定の期間与えられたインスタンスをモニタすることができる。モニタリング構成要素が障害を起こす場合、本明細書の他の箇所で述べるように、モニタリング構成要素のワークロードを均一にまたはそうでなければ他のモニタリング構成要素に再分散が可能である(914)。
複製されたインスタンスがあるとき、イベント処理フリート間のインスタンスモニタリングワークロードのパーティショニングに対して特別な検討事項があり得る。いくつかの実施形態では、モニタリングシステムは、インスタンスの数が増加するにつれて、実質的に直線的に拡張するべきである。この拡張は、さらなるイベントプロセッサ(例えばホスト)を追加することにより種々のインスタンス内で達成することができる。イベントプロセッサがそのイベントプロセッサによりモニタ中のデータベースのそれぞれのレプリカと異なるデータゾーン内に位置することが望ましい可能性があるので、イベントプロセッサの配置上の制約もある可能性がある。異なるデータゾーン内にイベントプロセッサを置くことにより、データセンタの障害は、同時に起こり、データベースを潜在的に回復不能なステートにさせる、2つの同時の障害(例えばモニタリング構成要素およびレプリカのうち少なくとも1つの故障)の結果とならない。全てのレプリカを含むそれぞれのデータベースインスタンスが、継続的にモニタされることを確実にするのも望ましい場合がある。これは、データベースインスタンスのパーティショニング、およびイベントプロセッサのうちの1つへのそれぞれのパーティションのモニタリングオーナシップの割り当てにより種々の実施形態で達成することができる。イベントプロセッサがいくつかの理由で障害を起こす場合、障害を起こしたイベントプロセッサに所有されモニタされるパーティションは、均一に他の可能なイベントプロセッサに再分散すべきである。
モニタリングシステムの直線状拡張性を確実にし、それでもイベントプロセッサの配置上の制約をなお満たすため、少なくとも1つの実施形態のイベント処理フリートは、それぞれのフリートが存在するデータゾーンに基づいて、異なるグループに区分化される。それぞれのグループは、グループ内のイベントプロセッサがそのレプリカがそれぞれのイベントプロセッサと同一のデータゾーン内にないRDSインスタンスと関連付けられるよう、構成可能である。
1つの例として、4つのそれぞれのデータゾーン(DZ1,DZ2,DZ3,およびDZ4)内のインスタンスをカバーする4つのイベントプロセッサグループ(G1,G2,G3,およびG4)が存在しうる。それぞれのレプリカペアについて、レプリカペアと同一のデータゾーン内にないグループの間で、モニタリングワークロードを割り振ることが可能である。この例で、そのレプリカペアがDZ2およびDZ3にあるRDSインスタンスのモニタリングワークロードを、G1およびG4内のイベントプロセッサにわたり分割できる。DZ3およびDZ4内のレプリカペアについて、ワークロードはグループG1およびG2間で分割できる。
与えられたデータゾーン内に位置する全ての複製されたデータベースについて、それぞれのイベントプロセッサはデータゾーンペアを独立してカバーするイベントプロセッサのリストを計算可能である。その後、所与のデータゾーンペアについて、データゾーンペアをカバーするイベントプロセッサ識別子を辞書的にソートできる。データベース識別子もソートし、ゾーンペアにわたり均一に分割が可能である。例えば、ゾーンDZ2およびDZ3内にレプリカがあるデータベースが存在しうる。これらのデータベースは、G1およびG4グループ内で一緒にイベントプロセッサによりモニタが可能である。簡略化のため、このデータゾーンペア内のデータベースのデータベース識別子は、(DB1,...,DB1000)として設定でき、グループG1内に2つのイベントプロセッサ(EP1およびEP2)が、グループG4内に2つのイベントプロセッサ(EP3およびEP4)がそれぞれ存在する。この例で、EP1がブートストラップするとき、EP1はデータゾーンペア(DZ2,DZ3)内にモニタすべき1000のデータベース、およびそれらをカバーする4つのイベントプロセッサがあると判断できる。イベントプロセッサ識別子を辞書的にソートすることにより、EP1はDB1からDB250を引き受けることが可能と判断でき、EP2はDB251からDB500を引き受けることが可能で、EP3はDB501からDB750を引き受けることが可能で、EP4はDB751からDB1000を引き受けることが可能である。EP1は同一のステップを繰り返し、EP1がモニタするのに適格な全てのレプリカペアのモニタリングを担当しているデータベースを判断することができる。
イベントプロセッサの障害を検出するため、それぞれのイベントプロセッサを、HEARTBEATメッセージ(例えばHTTPで)を、全ての他のイベントプロセッサに、10秒毎のように周期的に送信するよう構成可能である。イベントプロセッサは、イベントプロセッサおよびそれらのステータス(例えばAVAILABLEまたはDEAD)のリストを、それぞれのイベントプロセッサのチェックイン時間とともに保持可能である。第1のイベントプロセッサが、通常はハートビート間隔の6倍のようなハートビート間隔の何倍かである、heartbeat_failure_timeより長い時間他のイベントプロセッサから通信を受けていないとき、第1のイベントプロセッサは無応答のイベントプロセッサがDEADまたは類似のステートにあると宣言でき、そのモニタリングワークロードを調整できる。無応答のイベントプロセッサホストが開始または復旧するとき、イベントプロセッサは、自身をheartbeat_failure_timeと同様の時間の間BOOTSTRAPまたは類似のモードで開始してそのピアイベントプロセッサからハートビートを受信でき、ハートビートエージェントを開始できる。この時間の後、イベントプロセッサは自身をOPERATIONALモードに移すことができ、そこでは、そのパーティションに割り当てられたイベントプロセッサのステートに基いて、モニタリングワークロードの現在のスライスを判断する。イベントプロセッサを一定の期間BOOTSTRAPモードにしておく1つの理由は、イベントプロセッサ集団を接合する新しいイベントプロセッサ、および残りのイベントプロセッサが、アクティブなイベントプロセッサの現在のステートに集中する十分な時間を有することを確実にするためである。
データゾーンの障害の場合、障害を起こしたデータゾーン内のイベントプロセッサにより、モニタ中のインスタンスが、残りのグループにより引き継がれることを確実にするのが望ましい。1つの例では、4つのイベントプロセッサグループ(G1,G2,G3,およびG4)が、4つのデータゾーン(DZ1,DZ2,DZ3,およびDZ4)内のイベントプロセッサをそれぞれカバーする。DZ1が停止する場合、DZ1内のイベントプロセッサによるインスタンスモニタリングを、他のデータゾーン内のイベントプロセッサによって自動的に引き継ぐことができる。
しかし、領域内に3つのデータゾーンと、データゾーンペア(DZ2,DZ3)、(DZ3,DZ1)、および(DZ1,DZ2)をモニタする3つのイベントプロセッサグループ(G1,G2,およびG3)しかないこともあり得る。DZ1がダウンする場合、一次レプリカを含むデータゾーンの障害に耐性を持つため、それぞれのグループが、二次レプリカが自身と同一のデータゾーン内にあるインスタンスをモニタするような方法で、G2およびG3を再配備する必要がある。種々の実施形態で、データゾーンが3−DZ領域内で故障しているときのみ、「secondary−dz−colocation−override」のようなフラグをオンにすることができる。このフラグがオフになる場合、グループは、イベントプロセッサがレプリカペアと同一のデータゾーン内に存在できないという制約下で、モニタリングワークロードをパーティションする。フラグがオンであれば、グループは制約を無視して、自身を再配置し、二次レプリカが自身と同一のデータゾーン内にあるRDSインスタンスを選択できる。このフラグは、制御プレーン内のモニタリングデータベースまたは類似のデータストア内で持続可能である。
特定のRDSインスタンスをモニタするイベントプロセッサが1つだけあることを確実にすることも望ましい場合がある。いくつかの実施形態で、フェイルオーバアルゴリズムは、いかなる時でも単一のモニタリング構成要素(すなわちイベントプロセッサ)が、レプリカペアをモニタすることを要求する。ネットワークパーティションのどちらかのサイドが2つのイベントプロセッサを有し、1つのイベントプロセッサ1がRDSインスタンスをフェイルオーバしようとし、他が一次がなお稼働中となり「頭脳分割」シナリオへ導くことは望ましくない可能性があるので、この制約を利用することができる。
1つのイベントプロセッサのみがRDSインスタンスをモニタするのを確実にするため、コントロール環境のイベントプロセッサまたは他のモニタリング構成要素は、いくつかの実施形態でRDSインスタンスの一次レプリカから「リース」を明確に取得することを要求される場合がある。他の実施形態では、モニタリング構成要素は、リースを管理しデータ環境内の種々の構成要素とやりとりするコントロール環境の他の構成要素から、リースを取得できる。例えば、RDSインスタンスの一次レプリカからリースを取得する場合のみ、イベントプロセッサは所与のRDSインスタンスのフェイルオーバを開始するのに適格であり、またT_leaseのようなリース期間中のみである。
図10は、種々の実施形態により使用可能な、そのようなリースを取得するプロセス1000の例を示す。前述のように、モニタリング構成要素を、複製されたインスタンスのようなインスタンスをモニタするために割り当てが可能である(1002)。モニタリング構成要素は、インスタンスにpingする、またはそうでなければそれと通信を試みるようにさせることができる(1004)。インスタンスが複製されたインスタンスであれば、モニタリング構成要素は少なくとも一次レプリカと通信を試みることが可能である。ホストから通信を受信するホストが複製されたインスタンスの一次ホストであれば、ホストは、レプリカが同期し、インスタンスに対し通常は異なるモニタリング構成要素へ有効なリースが存在するかどうか(1006)判断が可能である。少なくともいくつかの実施形態で全てのこれらの基準を満たさない場合、リースは取得されず(1008)、制御プレーンおよび/またはデータプレーンの構成要素は、レプリカが利用不可であるような、あらゆる可能性がある問題を解決しようと試みることが可能である(1010)。少なくとも1つの実施形態で基準を満たす場合、モニタリング構成要素はレプリカのping(例えばHTTPステータスping()の発行による)に応えて一次レプリカのホストからリース(または「リース」情報)を取得でき(1012)、それによってデータベースレプリカのホストマネジャが通常の応答に加えリースを分配する。例えば一次レプリカがリースをイベントプロセッサに分配するとき、一次レプリカはリース時間およびイベントプロセッサ識別子をBLRMドライブまたは一次の他のブロック記憶装置に書き込み可能である(1014)。同期のときBLRMディスクに書き込むことにより、一次レプリカは、二次レプリカに、モニタリング構成要素識別子(ID)およびリースの時間または期間を含んだリースを本来の性質としてで通知する(1016)。いくつかの実施形態では、一次レプリカは、リース時間およびイベントプロセッサ識別子が正常に書き込まれた(すなわち両方のレプリカ内に複製された)後でのみ新しいリースをイベントプロセッサに分配する。イベントプロセッサ識別子およびリース時間を両方のレプリカ内にリース分配前に書き込むことにより、イベントプロセッサリーススキームは一次レプリカのクラッシュ後に存続することが可能である。RDSインスタンスの二次レプリカは、少なくともいくつかの実施形態で、いつでもどんなリースも分配しない。二次レプリカは、要求が、識別子がそのBLRMドライブ内のものと同一のイベントプロセッサからのものである場合のみ、promoteToPrimary()または類似の要求を受け入れることができる。
イベントプロセッサがリブートする、または新しいホストが引き継ぐとき、イベントプロセッサは、RDSインスタンスのステート(前にモニタしていない)が、一次レプリカがDEGRADEDモードであるP_ONLYであると仮定する。イベントプロセッサは一次および二次レプリカにpingしてデータベースの現在のステートを判断し、従ってそのステートを変更する。前述のように、一次レプリカがDEGRADEDステートであると仮定される場合、イベントプロセッサはどんなフェイルオーバも開始しない。「悲観的」アプローチを取ることで、新しいイベントプロセッサが引き継ぐとき、誤りがより少なくなる。イベントプロセッサがリブートする、または新しいホストが引き継ぐとき、イベントプロセッサは所与のホストに関連したレプリカの両方にpingし、どのレプリカが現在のBLRM一次か判断する。一度この情報が収集されると、イベントプロセッサは適切なpDNS APIに問い合わせ、DNS_primary CNAMEが現在の一次レプリカを指すことを確実にすることができる。そうでなければ、イベントプロセッサはただちにフェイルオーバできる。このシナリオは、イベントプロセッサがフェイルオーバの途中で停止した場合に起こりうる。DNSキャッシングおよび他の影響によりDNS情報が正しくない可能性があるので、pDNS APIが信頼できるデータベースを読み出す故に、pDNS APIにDNS名を解決することなく問い合わることができる。しかし、一次および二次レプリカの両方が、自身が正当な一次レプリカであると考える、ありそうもない場合の際、操作者または責任がある技術者にメッセージを送るなどが可能である。
制御プレーン内のモニタリングデータベースは、モニタされる現在のアクティブなデータベースインスタンス、それぞれのインスタンスのタイプ(例えば複製された)、および異なる顧客に関するイベントについてイベントプロセッサが収集するあらゆるイベントのリストを格納できる。データベースの数が増加するにつれ、いくつかの実施形態では、単一のモニタリングデータベースを越えて拡張する必要がある。この目的を達成するために、モニタリングデータベース内の全てのテーブルをパーティションすることができる。モニタリングデータベースのパーティショニングを可能にするため、イベントプロセッサとともに「dbパーティションマップ」を採用することができる。イベントプロセッサがデータベースインスタンスに関連するイベントで持続しなければならないとき、イベントプロセッサは「dbパーティションマップ」を参照し、イベントの情報を書き込む適切なデータベースを判断することができる。
図11は、1つの実施形態による、バケットのイベントプロセッサの正常性のモニタリング、およびイベントプロセッサのうちの1つの障害の扱いの例示的なプロセス1100を示す。この例で、データプレーンについて、少なくとも1つのワークロードパーティションが判断される(1102)。モニタされるデータストア、インスタンス、ホストマネジャ、および他のそのような構成要素の数に少なくとも部分的に依存して、全体のワークロードを、任意の数の別個のパーティションにパーティションしてもよい。イベントプロセッサのセットをそれぞれのワークロードパーティションに割り当てることが可能で(1104)、セット内のそれぞれのイベントプロセッサは、割り当てられたパーティションの作業のそれぞれの部分に割り当てられる(1106)。適切な間隔で、それぞれのイベントプロセッサは、「ハートビート」メッセージ(例えばHTTPで)を、同一のワークロードパーティションをカバーする同一のセットまたはバケット内のイベントプロセッサへ送信する(1108)。ハートビートは、十秒ごとのような任意の適切な間隔で送信することができる。1つの実施形態の「ハートビート」は、他のイベントプロセッサにハートビートを送信中のイベントプロセッサのステータスを通知するため、バケット内のそれぞれのイベントプロセッサに送信される単純なマルチキャストメッセージを指す。イベントプロセッサは、イベントプロセッサおよびそれらのステータス(例えば「available」または「dead」)とともにそれぞれのイベントプロセッサの最後のチェックイン時間のリストを保持することが可能である。バケット内のそれぞれのイベントプロセッサからハートビートが受信されたと判断されれば(910)、プロセスは継続できる。
しかし、同一のバケット内のイベントプロセッサがハートビートに応答しなかったと判断される場合、規定されたハートビート失敗時間(例えばハートビート間隔の6倍)の時間に等しい間、またはより長くイベントプロセッサがハートビートの送信に失敗したかどうかについて判断がなされる(1112)。特定されたハートビート失敗時間に達しなかった場合、プロセスは継続できる。イベントプロセッサからのハートビートなしにハートビート失敗時間に少なくとも達した場合、バケット内のそれぞれのアクティブなイベントプロセッサは、アクティブでないイベントプロセッサが「dead」、または類似のステートにあると宣言することができ、責任範囲を再割り当てし、モニタリングワークロードの部分を引き継ぐことが可能である(1114)。バケット内の全てのアクティブイベントプロセッサが障害を起こしたイベントプロセッサからのハートビートメッセージの受信に失敗すると、イベントプロセッサは、割り当てられたワークロードをそれぞれ適切な量拡張して、「missing」のイベントプロセッサの作業を引き取ることができる。
図12の例1200に示されるように、モニタ中の4つのイベントプロセッサおよび60,000のインスタンスがある場合、それぞれのイベントプロセッサは15,000インスタンス(辞書順または識別子など他の適切な順番で順番付け可能)を扱う。イベントプロセッサのうちの1つが障害を起こす場合、それぞれのイベントプロセッサが今度は20,000のインスタンス(なお引き続いて識別子などにより順番付けられる)を扱うように、他の3つのイベントプロセッサが、それらの責任の範囲を再割り当てできる。よって、インスタンスは順番付けスキームを用いて順番付けられるので、イベントプロセッサはモニタされる順番付けスキームの範囲を調整可能で、マップを作る、またはそうでなければどの「新しい」インスタンスをモニタするか追跡する必要がない。モニタされる範囲は、例えばモニタリングデータストアに格納できる。ワークロードが(実質的に)均一にイベントプロセッサにわたり自動的に分散可能なので、そのようなアプローチは、インスタンスが追加されるまたは取り除かれる状況でも有益である。特定のバケット内のみのハートビートも、全体のハートビートメカニズムより効率的で保持しやすい可能性がある。
図13は、付加的な処理能力を追加した結果、または障害を起こしたイベントプロセッサが復旧し、再度ワークロードの部分を扱うことが可能になった結果である可能性のある、イベントプロセッサがバケットに追加されるときの、バケットにわたる作業範囲の再割り当てのプロセス1300の例を示す。イベントプロセッサは、イベントプロセッサホストのリスタートまたはリカバリ、またはホストが単にアクティブとされまたはバケットに追加されることによるなどして、アクティブになりうる(1302)。イベントプロセッサをバケットに追加することも可能である(1304)が、リカバリの場合、イベントプロセッサはすでにそのバケットに割り当てられているかもしれない。アクティブなイベントプロセッサがバケットに追加されると、イベントマネジャは、「bootstrap」モードのようなモードに(例えばハートビート失敗時間)一定の時間の間入り、バケット内のピアイベントプロセッサから受信して(1306)、バケット内でアクティブな他のイベントプロセッサについての情報を取得し、例えばハートビートを送信する時間を判断することができる。イベントプロセッサは、ハートビートエージェントに関与して、バケット内の他のイベントプロセッサへハートビートの送信を開始することもできる(1308)。この時間の後、ホストは自身を「operational」モードに移すことができ、そこでそれぞれのイベントプロセッサは作業範囲を再割り当てし、そのパーティションに割り当てられたイベントプロセッサのステートに基いてモニタリングワークロードのその現在のスライスを判断できる(1310)。イベントプロセッサを一定の期間「bootstrap」モードにしておく1つの理由は、イベントプロセッサ集団に接合する(または再接合する)新しいイベントプロセッサ、および残りのイベントプロセッサが、アクティブなイベントプロセッサの現在のステートに集中する十分な時間を有することを確実にするためである。
1つの実施形態によるアプローチは、それぞれのイベントプロセッサを能力の50〜60%で実行することによるように、イベントプロセッサをオーバーパーティションもする。そのようなアプローチは、少なくとも1つまたは2つのイベントプロセッサが、性能上で明らかな悪影響を有することなく、それぞれのバケット内で障害を起こすことを可能にする。障害を起こしたイベントプロセッサは、それぞれのホストがリブートする場合のように、最終的に再度可用になる。そのイベントプロセッサは、それから再度ハートビートの交換を開始でき、それによってバケット内の他のイベントプロセッサが、イベントプロセッサの存在を自動的に検出できる。割り当てられた作業は、前述のように、作業がバケット内で可能なイベントプロセッサの大きなセットにわたり比較的均一に分散されるように、自動的に再分散可能である。
前述の障害のケースに加え、種々の実施形態により対処可能な種々の他の障害モードがあり得る。例えば、一次のホストマネジャがオンラインに戻るとき、モニタリング構成要素が二次レプリカをすでにフェイルオーバしていなければ、一次レプリカは二次レプリカとして戻るので、それがBLRMステータスが「primary/secondary」から「secondary/secondary」へ変化したのを知るように、一次レプリカインスタンスは、リブートするかもしれない。2つのレプリカの間でどちらが一次であるかを判断し、適切なpromoteToPrimary()コールをするかは、イベントプロセッサ(例えばモニタリング構成要素)次第である可能性がある。二次レプリカインスタンスがリブートすれば、モニタリング構成要素は二次が動作していないことを通知し、リカバリのインスタンスにマークをつけることができる。しかし、その間に、二次レプリカがオンラインに(リブート後)戻る場合、二次リカバリワークフローはこれを認知し、二次レプリカのホストマネジャに再接続を試みることを要求できる。これは、単純なインスタンスリブートシナリオについて新しい二次レプリカを作成する手間を避けることを可能にする。非複製のインスタンスがリブートすれば、ホストマネジャは、モニタリング構成要素にインスタンスのレベルを上げるよう要求することなく、自動的にそのステータスを二次から一次レプリカへ変換できる。これにより、非複製のインスタンスのインスタンスリブートのリカバリ時間を減少させることができる。
一次レプリカが障害を起こしてオンラインに戻らないとき、モニタリング構成要素は一次障害を検出して、二次レプリカを新しい一次にレベルを上げることができる。その後、モニタリング構成要素は、Adminデータストア内のRDSインスタンスステートが、「PENDING/DEGRADED_NEED_SECONDARY_RECOVERY」のようなステートであるように、マークをつけることができる。このステートは、リカバリスイーパが適切なリカバリワークフローを開始させるようにさせ得る。リカバリワークフローは、両方のレプリカが動作中であるかどうか判断を試みることができる。モニタリング構成要素がレプリカを停止としてマークをつけるようにリブートが十分な量の時間がかかった場合のように、古い一次レプリカが二次レプリカとしてオンラインに戻ったならば、一度レプリカが完全に同期されると、ワークフローは古い一次レプリカを新しい一次と接続し、OKのデータベースステートのようなリカバリ完了のマークをつけることができる。しかし、古い一次が全く戻らなければ、ワークフローは古いインスタンスを終了して、複製されたインスタンスの作成に関して記載したのと同一のステップを用いて、二次レプリカを派生させることが可能である。二次レプリカが障害を起こす場合、モニタリング構成要素は障害を検出して、Adminデータストア内のインスタンスステートが、「PENDING/DEGRADED_NEED_SECONDARY_RECOVERY」または類似のステートの使用によるような、リカバリワークフローのキックインによるステートであるように、マークをつけることができる。データベースがなんらかの理由でクラッシュするとき、一次レプリカのホストマネジャはナニープロセスとしてはたらき、データベースを自動的にリスタートする。
述べたように、モニタリングワークロードのそれぞれのパーティションをイベントプロセッサのセットでカバーすることが可能である。イベントプロセッサのセットでのワークロードの単一のパーティションのカバーは、イベントプロセッサのうちの1つが障害またはさまざまな他のそのような問題を経験する場合、残りのイベントプロセッサにわたるモニタリングの負荷の再分散を可能にする。1つの実施形態では、イベントプロセッサのそれぞれのグループは、バケットまたは他のそのようなパーティション内に含まれる。バケット内のそれぞれのイベントプロセッサは、単一のデータプレーン内のインスタンスの範囲の扱い、またはそのプレーン内のインスタンスのグループ化に関与する。障害検出プロセスは、障害が起こる場合、そのバケット内の他のイベントプロセッサが、障害を起こしたイベントプロセッサにより扱われるインスタンスの責任を引き継ぐことを確実にするために使用可能である。少なくとも1つの実施形態のモニタリングデータストアは、バケット内のイベントプロセッサのセットによりモニタされる現在のアクティブなデータインスタンスのリスト、ならびにイベントプロセッサが種々の顧客に関するイベントについて収集する情報を保持する。モニタされるインスタンスの数が増加するにつれ、単一のモニタリングデータストアを越えて拡張する必要がある可能性がある。よって、モニタリングデータストア内のそれぞれのテーブルを、db_poll_listを含んでパーティションすることができる。
1つの実施形態では、イベントプロセッサは以下の例示的な形式のパーティションテーブルで配備される。
パーティション Id ハッシュ範囲
P0 0−10000
P1 10000−20000
このパーティション構成は、構成ファイルとしてイベントプロセッサホストに配備することができる。
所与のワークロードパーティションが一定の責任があるイベントプロセッサのセットをキャッチアップモード(すなわち特定の時間内に割り当てられた正常性チェックを終了不可)とさせる多数のイベントを生成する場合、データストアを再パーティションする必要なく、そのワークロードパーティションの責任があるセットにさらなるイベントプロセッサを追加可能である。そのような技術を用いて、実行拡張性はデータ拡張性の問題から区別することができる。例えば、多くのイベントを生成するのでイベントプロセッサがキャッチアップできない1つのパーティションを、多くのイベントを生成するので、1つのデータストアが十分な記憶スペースを提供しない1つのパーティションの状況から区別することができる。
イベントプロセッサが割り当てられるイベントプロセッサおよびパーティションのメンバーシップは、イベントプロセッサメンバーシップ構成ファイルのような場所に格納可能である。メンバーシップ構成情報は、(同一のパーティションまたはバケット内のような)グループ内のイベントプロセッサへ配備することができ、以下の例示的なフォーマットを有することができる。
<EP識別子> <EPホスト名> <endpoint_port> <パーティションId>
1つのパーティションが複数イベントプロセッサにカバーされるとき、それぞれのイベントプロセッサは、辞書的またはハッシュベースのソートルーチンを用いることによるようなイベントプロセッサ識別子のソート、およびバケット範囲を均一に分けることにより、バケット範囲を分割する。それぞれのイベントプロセッサは、モニタされる適切な範囲を独立して判断することができる。
そのようなシステムで、モニタされるデータストアおよび/またはインスタンスのリストまたはセットが、自動的に投入され、時間とともに更新されることを確実にすることも、重要であり得る。1つのアプローチは、例えば、必要に応じ伝達可能なインスタンスのスナップショットレプリカであるデータベースリストテーブルの作成であろう。しかし、そのようなアプローチは、維持ならびにそれぞれの適切な構成要素が最新のコピーを有することを確実にすることが困難である可能性がある。他のアプローチは、イベントプロセッサにデータプレーン構成要素へ問い合わせをさせ、それから制御プレーン内に情報をローカルに格納することであろう。そのようなアプローチは、多量のメッセージ通信量を生じ、維持および更新が困難である可能性がある。1つの実施形態によるアプローチは、代わりに、それぞれのイベントプロセッサが、「setStatus」または類似のAPIのようなインタフェースを外部に表すことを可能にする。例えば「create」または「delete」ワークフローの部分として、タスクを、適切なホストマネジャにインスタンスの管理を担当しているまたはしていたイベントプロセッサをコールするよう指示するワークフローの最後に追加することができる。ホストマネジャは、よって、ワークフロー(または他のそのようなアクション)の結果としてステータスに変化があるときはいつでも、イベントプロセッサの「setStatus」APIをコールし、ホストのステータスを設定することができる。イベントプロセッサが「setStatus」APIを通してコールを受信する毎に、そのパーティションのセットへの新しいホストの追加、ホストの削除などのため、情報をローカルデータストア内におくことができる。ホストについての情報も、モニタリングデータストアまたは他の適切な持続する場所に書き込むことができる。
1つの実施形態では、現在のアクティブデータインスタンスの信頼すべきリストが、Adminデータストア内に存在する。モニタされるデータインスタンスのアクティブリストが、「db_poll_list」テーブルのようなテーブル内のモニタリングデータストア内に存在する。モニタリングデータストア内のインスタンスのステータスを追加、削除、または更新するため、イベントプロセッサは、データストア識別子、パラメータに関するデータインスタンス(例えばインスタンス識別子およびDNSアドレス)、およびインスタンスステータス(例えば「add」,「remove」、または「update」)のようなパラメータを受け入れる「updateHost」APIを外部に表す。イベントプロセッサがこのコールを受信するとき、イベントプロセッサは、「db_poll_list」テーブルに適切な変更(例えばエントリを追加、削除、または更新)を加える。例えば、顧客がデータストアid「id1」でデータストアを作成する要求を提出する場合、データストア作成のワークフローは、必要なリソースをプロビジョンしデータストアを構成すると、Adminデータストア内で「available」(可用)としてid1のステートにマークをつける。データベース生成ワークフロータスクの最終ステップとして、イベントプロセッサのうちの1つで、内部の仮想IPを通しての到達による等でupdateHostAPIを起動し、データストア(およびそのインスタンス)をモニタリングワークフローに追加することができる。モニタリングステータスを更新することにより、プロビジョニングワークフロー内の最終(または少なくとも最終に近い)ステップ、RDSデータストアの生成、削除または修正が、モニタリングデータストアの可用性から切り離される。
一度ホストマネジャがモニタされるアクティブインスタンスのステータスを設定セットすると、責任があるイベントプロセッサは本明細書の他の箇所で述べるように、インスタンスのホストマネジャに周期的にping可能である。ホストマシンのクラッシュまたはリブートに起因しうるなどでインスタンスが利用不可の場合、イベントプロセッサはインスタンスの応答を得ず、Adminデータストアへ可能性がある問題についての情報を書き込む。スイーパが情報を検出し、適切なリカバリワークフローが生成および実行されるようにさせる。1つの実施形態では、リカバリワークフローはまず、インスタンスのI/Oエラーのヒストリを詳記する情報のような、データストアまたはデータインスタンスのメトリックのヒストリを調べる。ワークフローは、それから、接続エラーがある場合のように、インスタンスがダウンしているかどうか、またはそれは接続の問題ではないが、インスタンスを支持する特定のボリュームとの可能性がある問題を示すI/Oエラーの数が増えているかどうか、自動的に判断を試みる。ワークフローのタスクは、多数の異なる構成要素について起こりうる多数の異なる問題がある場合、自動的に問題を判断および/または切り離しを試みることが可能である。そのような判断ならびにそのような問題からの復旧は、ささいな問題ではない。
しかし、自動的に障害から復旧することが望ましくないことがあり得る状況があり得る。例えば、何千ものデータストアが利用不可になるデータストア全体の障害があり得る。全てのこれらのデータストアを実質的に同時に復旧するよう試みるのは、望ましくない場合がある。1つの実施形態では、スイーパ(または制御プレーンの他の構成要素)を、エラー、または特定のタイプのワークフローの同時実行の最大数と共に構成することが可能である。例えば、ワークフローの数が特定された数または閾値を超える場合、メッセージまたは他のそのような通知を送信、またはそうでなければ操作者またはDBAに対し生成することができ、それによって、経験があるユーザが、その状況を解決する最善のアプローチを判断できる。1つの実施形態では、スイーパはいかなる時点でも、10の同一のタイプの所与のタイプのワークフローのように、最大で特定された数のワークフローを実行するが、25のような第2の数の同一のタイプのワークフローが要求されるまでアラームを生成しない。1つの実施形態によるシステムは、DBAまたは他の権限を与えられた操作者がモニタリングプロセスのステートを評価でき、手動でリカバリアクションを実行することができる運用サービスダッシュボードを提供する。そのようなインタフェースを用いて、DBAは、本明細書で述べたように、特定のリカバリアクションを実行するワークフローをキックオフ可能にするオプションを選択することが可能である。インタフェースは、制御プレーンがデータプレーンのデータパス内にないが、制御プレーンとともに、複数の異なるデータベースエンジンおよびシステムと作業するために使用できる。制御プレーンは、例えばそれぞれのエンジンについてのエラーメッセージおよびログをモニタすることができる。そのようなアプローチは、それぞれのデータストアを全体としてモニタすることも可能にでき、同時にデータストアのあらゆるレプリカをモニタする。異なるリカバリが、レプリカのステートなどに基づいて、それから実行可能である。
データストアまたはデータインスタンスの非可用性または非信頼性といった結果になる可能性がある、さまざまなタイプの障害があり得ることを認識するべきである。例えば、ホスト装置は障害を起こしまたはリブートするかもしれず、またはインスタンスを管理するホストマネジャアプリケーションで問題があるかもしれない。データストアでも、コアダンプまたはセグメンテーション違反(SegV)例外のような問題があり得る。I/O動作または通信パスでも問題があり得、またはデータストアを提供するインスタンスの障害があり得る。論理ボリュームの障害、ネットワーク故障、またはデータゾーンの障害のような種々の他のタイプの障害もあり得る。異なる障害のタイプを判断および復旧する試みのために、異なるワークフローを使用できる。1つの例では、1つの実施形態のホストマネジャは、それぞれのデータインスタンスへのゲートウェイであり、このホストマネジャの障害は、そのインスタンス上に基本的に制御を許さない。Tomcatプロセスがメモリ不足となるような障害に対処するため、制御プレーンのモニタリング構成要素は、必要であればTomcatがリスタートされたことを確実にすることができる。モニタリングシステムは、不必要なエラーまたはエラー検出を避けるため、リスタートを調整できる。
さらに、述べたように、障害のサイズまたはスケールのような他の因子も検討しなければならないので、障害を単に検出および復旧するのでは不十分である。例えば、データストアを提供する単一のクラウドインスタンスの障害のリカバリアクションは、データゾーン全体の障害に対処するリカバリアクションと大幅に異なる可能性がある。より大きい問題について、同時に種々のインスタンスを個別に復旧しようとすることによりリカバリアクションが既存の問題と混ざらないように、複数の障害を関連付けて分析する必要があるかもしれない。一部の場合、データが失われず、その後のリカバリアクションにより後に修正される必要があるリカバリアクションが行われないように、並行プロセスの数を限定するだけでなく、プロセスの順序を制御できる、段階的リカバリの実行が望ましいかもしれない。一部の場合、可能なかぎりリカバリプロセスをローカル化することも望ましい可能性がある。少なくともいくつかの実施形態で、可能なときは安全な方法でローカルに障害に対処することが、有益であり得る。例えば、ホストマネジャまたはデータプロセスの障害のような単純な障害に対するローカルリカバリアクションは、RDSシステム全体のAdminスタックにより実行されるアクションが望ましい可能性がある。
データインスタンス、データストア、またはI/Oプロセスが障害を起こす種々の理由があり得、それぞれが異なるリカバリ動作を必要とするかもしれない。例えば、データストアのバグはデータストアの障害を引き起こす、または少なくともかなりの数の読み出し/書き込みエラーを生む可能性がある。データストアまたはインスタンスは、オーバーロード、不良ブロック、または他のそのような状況によっても障害を起こす可能性がある。データストアをクラッシュする結果となる不適切な問い合わせのような、ユーザが誘発するエラーもあり得る。他の場合、データストアログボリュームがあふれるまたは破損するかもしれない。これらおよび他のタイプの障害に対処するため、データプロセスをホストマネジャから常にモニタできる。述べたように、それぞれのホストマネジャは、getstatusコマンド(例えばMySQLに関してこれは/bin/mysq1_adminステータスの形をとりうる)の実行によるような、データストアまたはインスタンスのステータスをチェックするステータスモニタリング構成要素を有することができる。ステータスモニタリング構成要素は周期的にステータスをチェックでき、インスタンスが利用不可であれば、そのときインスタンスをリスタート、またはそうでなければ、対処することができる。インスタンスが繰り返し利用不可になる場合、または他のそのようなエラーを経験する場合は、ステータスモニタリング構成要素はエラーを修正する試みをやめ、情報の制御プレーン内のモニタリングまたはadminデータストアへの書き込みをさせることができる。
データストアエラーおよびI/Oクラッシュを検出するため、いくつかの実施形態では、データストアエラーログおよび/またはカーネルログをモニタすることができる。それぞれのホストマネジャは、これらの2つの(または他の)エラーログ内の特定のエラータイプについて継続的にスキャンし、関連するメトリックを生成する他のモジュールを実行できる。それぞれのエラータイプに対し、予め定義された閾値を設定することができ、それを越えると、分析および可能なリカバリのため、エラーが操作者に送信される。
1つの実施形態による障害検出メカニズムには、多数の制約が適用される。例えば、データインスタンスの数がイベントプロセッサのバケットがポーリングするよう設定されるホストの数を越えるとき、例えば、付加的なモニタリング構成要素を所望に応じて単純に追加できるように、モニタリング構成要素が直線的に拡張するよう構成が可能である。さらに、データインスタンスのパーティショニングおよびイベントプロセッサのうちの1つへのそれぞれのパーティションのモニタリング所有権の割り当てによるように、全てのデータインスタンスが常にモニタされるよう確立することができる。述べたように、イベントプロセッサがいずれかの理由で障害を起こす場合、障害を起こしたイベントプロセッサにより所有されモニタされるパーティションを、同一のバケット内のプロセッサのような他の可能なイベントプロセッサに均一に再分散できる。また、RDS顧客がデータストアおよび/またはインスタンスを作成および削除するので、タスクをワークフローに追加することにより、データベースインスタンスのリストを最新に保つことができる。
データストアパーティショニング
高度に拡張性がある分散システム内で公知のように、データストア内のパーティショニングは、データストアシステムが存在する物理的システムの限界までのみ拡張される。この限界により、システムが単一のデータ記憶システム内、ならびに多くのデータ記憶システムにわたる、両方で拡張できるような方法で、予めシステムを構造化することが望ましい可能性がある。異なるデータ記憶システムにわたるデータの水平パーティショニングは、イベント記憶でかなりの要求を扱うことが可能な、高度に拡張性があるシステムに寄与できる。
1つの実施形態によるシステムは、customer_idを、データベースインスタンスのリスト(db_poll_list)、関連するイベント(db_eventsテーブル)、およびセキュリティグループイベントテーブルを含むデータテーブルを、パーティションするパーティションキーとして利用する。いくつかのイベントは単一のデータストアに制限されず、特定のデータストアに関係しないかもしれないので、データストア識別子よりも顧客識別子を使用することが、好都合であり得る。例えば、セキュリティグループ内の変化は直接どんなデータストアにも適用されないが、顧客が視認可能なイベント(すなわちDescribeEvents APIを用いて取得可能)として格納する必要があるかもしれない。さらに、いくつかの実施形態で、イベントデータは14日間のような限定された期間の間のみ保持されるので、1つの顧客のイベントが単一のデータストアの記憶スペースを越えて大きくならなり得ない。
バケットパーティショニングの使用によるような、水平データストアパーティションにわたるデータセットのパーティショニングを扱う多数の方法がある。バケットパーティショニングは、パーティションされるデータとデータが格納されるパーティションの間に抽象層を提供する。この抽象層は、新しいパーティションの追加とデータの時間に伴う移動のような、パーティションのより容易な運用面の管理を可能にし、一方で、なおアプリケーションに対しパーティションされたデータの配置を判断するハッシングメカニズムの使用を可能にする。本明細書に記載されたバケットパーティションシステムの実施は、ある実施形態に特定の構成要素を含むが、明らかなように、全体の概念は多くの異なる使用ケースに適用可能である。
バケットパーティショニングの実行のため、アプリケーションが使用できるバケットの一定の数を決定することができる。バケットの数は、アプリケーションの有効期間にわたり一定を保つことができ、そのため、ある実施形態では十分大きい数の選択が重要であり得る。バケットの数は、より小さい数の物理パーティションに個々に割り当て可能な、全てのバケットにわたり負荷を均一に配分する能力に影響し得る。同一のバケットに個々の多すぎるインスタンスが割り当てられている場合、1つのパーティション内に複数のバケットを効率的に格納することが問題になりうる。一定の数のバケットは、パーティションされるデータとパーティション自身の間の中間層としてはたらくことができる。層化の第1のステップは、異なる個々のデータを種々のバケットにマッピングする方法を見つけることである。前述のように、データのパーティションキーは、顧客識別子であり得る。効率的および一貫したハッシュアルゴリズムを使用して個々のバケットに直接割り当て可能な値を提供することができる。顧客識別子がバケットに割り当てられた値をハッシュするときはいつも、その識別子はデータの有効期間中そのバケット内で存続することができる。
この例で、バケットは個々のワークロードパーティションに割り当てられる。常にパーティションより多いバケットがある可能性があり、それで、個々のパーティションに多くの異なるバケットを割り当てるために、マッピングを使用することができる。割り当て構成を簡潔にするため、バケット番号の範囲を使用してバケットを個々のパーティションに割り当てることができる。以下は、どのようにパーティショニング割り当てが機能できるかを示す例示的な表である。
パーティション1={1−25000}
パーティション2={25001−50000}
この例で、バケット番号1から25,000は、「パーティション1」に割り当てられ、一方でバケット番号25,001から50,000は、「パーティション2」に割り当てられる 例えば、データをシステムに追加する必要があり、顧客識別子のハッシュがワークフローインスタンスをバケット100にマッピングするときはいつでも、その顧客に関連するいかなるデータ(データストアおよびセキュリティグループを含む)も、物理的に「パーティション1」内に存続するテーブル内に挿入できる そのようなアプローチは、識別子がバケット100にハッシュする与えられた顧客についてのイベントの要求が「パーティション1」から読み出される、顧客のデータベースまたはセキュリティグループに関するいかなる情報の読み出しにも使用可能である。
前述の例は、パーティションへのバケットの最初の割り当てが変更されない比較的単純な場合を扱う。しかし、ときどき、他のパーティションの負荷を軽減するため、新しいパーティションをシステムに追加する必要がある。上述のこの例を用いて、新しいパーティション「パーティション3」を追加し、他の2つのパーティションの負荷を取り去ることができる。
パーティション1={1−16666}
パーティション2={33333−50000}
パーティション3={16667−33333}
ここで見られるように、8334のバケット(番号16667から25000)が、「パーティション1」から取り除かれて、「パーティション3」に再割り当てされている。また、8333の付加されたバケット(番号25001から33333)が、「パーティション2」から取り除かれて、「パーティション3」に再割り当てされている。この再割り当ては、最も多くアクセスされ、最も満杯であったバケットに基づいて行うことができ得たが、この例では、パーティションにわたる比較的均一なバケットの再分散があった。
バケット割り当てが変化するので、物理パーティション内に存在するデータが影響を受ける可能性がある。前記の例で、バケット100は、識別子が100にハッシュされた顧客の情報を格納するために使用された。この再パーティショニングシナリオでは、バケット100が「パーティション1」に留まるので、データは影響されないだろう しかし、バケット11000内にデータがあったかもしれず、再パーティショニング前に書き込まれたデータが「パーティション1」内に存在するが、再パーティショニング後に書き込まれたデータは「パーティション3」内に存在する。前のデータが1つのパーティション内に存在し現在のデータが他のパーティション内に存在する問題を解決するため、システムは2つ以上のパーティションをバケットに割り当てることを可能にできる。所与のバケットは、少なくとも、現在のパーティションおよび前のパーティションの2つのパーティションを有する。この例では、再パーティショニングは、「パーティション3」が現在のパーティションとして、「パーティション1」が前のパーティションとして、割り当てられた2つのパーティションを有するバケット10001から15000の結果になるだろう。述べたように、バケット11000のいかなる新しいデータも現在のパーティションにあり、一方で再パーティショニング前に書き込まれたデータは前のパーティションにある。イベントのクエリまたはいずれかの情報がバケット11000へマッピングするとき、そのデータの現在のパーティションのチェック、ならびに、記録が同じように存在する可能性があるので、前のパーティションのチェックが重要になりうる。バケット内の複数のパーティション検索へのそのような対応は、与えられたバケットの前のパーティション内に最終的に存在することとなるインスタンスに対するミスの損失を生じる可能性がある。しかしながら、新しく作成されるイベントは現在のパーティションに書き込み中であるので、ミスの損失は、再パーティショニングが起こるかまたは閉じたワークフローに関するとき、実行中のワークフローインスタンスに対してのみ起こる。好都合な新しく作成されるイベントを優先することは性能を向上し、一方でなお再パーティショニングを効率的にする柔軟性を可能にする。
前述のように、種々の実施形態が多岐にわたる運用環境内で実行可能であり、一部の場合では、1つまたは複数のユーザコンピュータ、計算装置、または、多数のアプリケーションのいずれも作動するため使用可能な処理装置を有することができる。ユーザまたはクライアント装置は、標準オペレーティングシステムを実行する任意の数のデスクトップまたはラップトップコンピュータのような汎用パーソナルコンピュータ、ならびにモバイルソフトウェアを実行し、多数のネットワーキングおよびメッセージングプロトコルを補助可能なセルラー、無線、およびハンドヘルド装置を含むことが可能である。そのようなシステムは、開発およびデータベース管理のような目的のための、さまざまな市販されているオペレーティングシステムおよび他の公知のアプリケーションを実行する多数のワークステーションも含むことが可能である。これらの装置は、ダミー端末、シンクライアント、ゲームシステム、およびネットワークを介して通信可能な他の装置のような、他の電子装置も含むことが可能である。
種々の態様は、サービス指向アーキテクチャの部分であるかもしれないような、少なくとも1つのサービスまたはWebサービスの部分としても実行可能である。Webサービスのようなサービスは、拡張可能なマークアップ言語(XML)フォーマットの、SOAP(「シンプルオブジェクトアクセスプロトコル」から由来)のような適切なプロトコルを用いて変換されたメッセージの使用によるような、あらゆる適切なタイプのメッセージングを用いて通信可能である。そのようなサービスにより提供されまたは実行されるプロセスは、ウェブサービス記述言語(WSDL)のようなあらゆる適切な言語で記述することができる。WSDLのような言語の使用は、種々のSOAPフレームワーク内のクライアントサイドコードの自動生成のような機能を可能にする。
大半の実施形態は、TCP/IP、OSI、FTP、UPnP、NFS、CIFS、およびAppleTalkのような、あらゆるさまざまな市販されているプロトコルを用いて通信を補助する当業者が精通する少なくとも1つのネットワークを使用する。ネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、およびそのあらゆる組み合わせであり得る。
Webサーバを利用する実施形態において、Webサーバは、HTTPサーバ、FTPサーバ、CGIサーバ、データサーバ、Javaサーバ、およびビジネスアプリケーションサーバを含むさまざまなサーバまたは中間層アプリケーションを実行可能である。サーバはまた、ユーザ装置からの要求に応答して、Java(登録商標)、C、C#またはC++のようなあらゆるプログラミング言語、またはPerl、Python、またはTCのようなあらゆる記述言語ならびにそれらの組み合わせで記述された、1つまたは複数のスクリプトまたはプログラムとして実行してもよい1つまたは複数のWebアプリケーションの実行によるように、プログラムまたはスクリプトを実行可能であり得る。サーバは、Oracle(登録商標)、Microsoft(登録商標)、sybase(登録商標)、およびIBM(登録商標)からのデータベースサーバも含んでもよいが、これらに限定されない。
環境は、前述ように、さまざまなデータストアおよび他のメモリおよび記憶媒体を含むことが可能である。これらは、1つまたは複数のコンピュータにローカルな(および/または存在する)、またはネットワークを越えていくつかまたは全てのコンピュータからリモートの記憶媒体のようなさまざまな場所に存在することができる。実施形態の特定のセットにおいて、情報を、当業者が精通するストレージエリアネットワーク(「SAN」)内に存在させてもよい。同様に、コンピュータ、サーバ、または他のネットワーク装置に帰する機能を実行するためのあらゆる必要なファイルを、ローカルでおよび/またはリモートで適切に格納してもよい。システムがコンピュータ装置を有する場合、それぞれのそのような装置は、バスを介して接続してもよいハードウェア構成要素を含んでもよく、構成要素は、例えば、少なくとも1つの中央処理ユニット(CPU)、少なくとも1つの入力装置(例えばマウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド)、および少なくとも1つの出力装置(例えばディスプレイ装置、プリンタ、またはスピーカ)を含む。そのようなシステムは、ディスクドライブ、光記憶装置、およびランダムアクセスメモリ(「RAM」)または読み出し専用メモリ(「ROM」)のような固体記憶装置、ならびに着脱可能な媒体装置、メモリカード、フラッシュカードなどのような、1つまたは複数の記憶装置も含んでもよい。
そのような装置は、前述のように、コンピュータ可読な記憶媒体リーダ、通信装置(例えばモデム、ネットワークカード(無線または有線)、赤外線通信装置、など)、および作業メモリも含むことができる。コンピュータ可読な記憶媒体リーダは、リモート、ローカル、固定、および着脱可能な記憶装置を表すコンピュータ可読な記憶媒体、ならびにコンピュータ可読な情報を一時的におよび/またはより永続的に含有、格納、伝達および検索する記憶媒体と接続可能、または受信するよう構成可能である。システムおよび種々の装置は、通常、クライアントアプリケーションまたはWebブラウザのようなオペレーティングシステムおよびアプリケーションプログラムを含む、多数のソフトウェアアプリケーション、モジュール、サービス、または少なくとも1つのワーキングメモリ装置内に位置する他の構成要素を有する。代替の実施形態は、前述から多数の変形を有してもよいことを理解すべきである。例えば、カスタマイズされたハードウェアも使用してよく、および/または特定の構成要素を、ハードウェア、ソフトウェア(アプレットのような持ち運び可能なソフトウェアを含む)、または両方で実行してもよい。さらに、ネットワーク入/出力装置のような他の計算装置への接続装置を採用してもよい。
コードまたはコードの部分のための記憶媒体およびコンピュータ可読な媒体は、コンピュータ可読な命令、データ構造、プログラムモジュール、または他のデータのような情報のあらゆる記憶および/または伝達方法または技術で実行される揮発性および不揮発性、着脱可能および着脱不可媒体のような、けれどもそれらに限定されない、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または所望の情報を格納するのに使用可能でシステム装置によりアクセス可能なあらゆる他の媒体を含む記憶媒体および通信媒体を含む、当業界で公知または使用されるあらゆる適切な媒体を含むことが可能である。本明細書で提供される開示および教示に基づき、当業者は種々の実施形態を実行する他の仕方および/または方法を理解するだろう。
明細書および図は、従って、限定的な意味よりむしろ例示とみなされる。しかし、これらへの種々の改良および変更を、請求項に記載したより広い本発明の趣旨および範囲から逸脱することなく、してもよいことは明らかである。
付記項1
実行可能な命令で構成される1つまたは複数のコンピュータシステムの制御下で、
データベース環境内の複数の複製されたデータベースインスタンスのそれぞれを複数のワークロードパーティションのうちの1つに割り当てることと、
コントロール環境内の複数のモニタリング構成要素のうちの1つを前記複数のワークロードパーティションのそれぞれに割り当てることと、
パーティション内の複製されたインスタンスのそれぞれに関して、
割り当てられた前記モニタリング構成要素に、前記複製されたインスタンスの一次インスタンスレプリカのホストマネジャへの通信の送信をさせることと、
前記一次インスタンスレプリカのデータが、前記複製されたインスタンスの
二次インスタンスレプリカと同期されている場合、前記割り当てられたモニタリング構成要素に前記複製されたインスタンスのリースを受けとり、前記リースは、前記割り当てられたモニタリング構成要素が前記複製されたインスタンスをモニタできるリース期間を少なくとも特定することと、
前記割り当てられたモニタリング構成要素への前記リースの前記受けとりに応答して、
前記複製されたインスタンスの少なくともステータスを、前記リース期間中前記割り当てられたモニタリング構成要素を用いてモニタするステップと、を含む、
コンピュータにより実行される、コントロール環境からリレーショナルデータベースインスタンスに関する複製されたインスタンスをモニタする方法。
付記項2
現在の前記リースが前記複製されたインスタンスに関して存在するときのみ、
前記割り当てられたモニタリング構成要素がさらにプロビジョンされ複製された前記インスタンスの前記リースを受けとることができる、
付記項1に記載のコンピュータにより実行される方法。
付記項3
前記割り当てられたモニタリング構成要素の識別子および前記リース期間の情報を、
前記一次インスタンスレプリカのブロック記憶メカニズムに格納することをさらに含み、前記ブロック記憶メカニズムは、前記識別子および前記リース期間の前記情報が前記二次インスタンスレプリカの前記ブロック記憶メカニズムに同期的に格納されるようにする、付記項1に記載のコンピュータにより実行される方法。
付記項4
前記モニタリング構成要素、および、前記一次インスタンスレプリカおよび前記二次インスタンスレプリカのうち少なくとも1つが、異なるデータゾーンまたは異なる地理的位置内に位置する、付記項1に記載のコンピュータにより実行される方法。
付記項5
実行可能な命令で構成される1つまたは複数のコンピュータシステムの制御下で、
コントロール環境内のモニタリング構成要素を、データベース環境内の異なるデータゾーンまたは異なる地理的位置のうち少なくとも1つの中のデータベースインスタンスへ割り当て、前記データベースインスタンスは、少なくとも一次インスタンスレプリカおよび二次インスタンスレプリカを有する複製されたインスタンスであることが可能であり、前記割り当てられたモニタリング構成要素は、前記データベースインスタンスが前記複製されたインスタンスであるとき、前記一次インスタンスレプリカおよび前記二次インスタンスレプリカのうち少なくとも1つと異なる前記データゾーンおよび異なる前記地理的位置のうち少なくとも1つにあることと、
前記モニタリング構成要素が前記データベースインスタンスへ通信を送信する状況を起こし、前記通信は、前記データベースインスタンスが前記複製されたインスタンスである場合、少なくとも前記一次インスタンスレプリカに送信されることと、
前記データベースインスタンスからのリース情報の受信に応答し、リースのリース期間の間、前記モニタリング構成要素を使用する前記データベースインスタンスの少なくともステータスをモニタすることと、を含む、
コンピュータにより実行される、コントロール環境からデータベース環境内のデータベースインスタンスをモニタする方法。
付記項6
前記複製されたインスタンスに関して、前記一次インスタンスレプリカと前記二次インスタンスレプリカの間でデータが同期されるときのみ、前記リース情報が、前記複製されたインスタンスの前記一次インスタンスレプリカから受信される、付記項5に記載のコンピュータにより実行される方法。
付記項7
現在の前記リースがプロビジョンされ複製された前記インスタンスに関して存在するときのみ、前記リース情報が、前記プロビジョンされ複製されたインスタンスの前記一次インスタンスレプリカから受信される、付記項5に記載のコンピュータにより実行される方法。
付記項8
前記コントロール環境が複数の前記モニタリング構成要素を有し、前記データベース環境が複数の前記データベースインスタンスを有し、
複数の前記モニタリング構成要素にわたり実質的に均一にワークロードを分散するため、前記コントロール環境内の複数の前記モニタリング構成要素のそれぞれを、前記データベース環境内の前記データベースインスタンスの部分へ割り当てることをさらに含む、
付記項5に記載のコンピュータにより実行される方法。
付記項9
前記データベース環境内の前記データベースインスタンスのそれぞれを複数のワークロードパーティションの1つへ割り当てることをさらに含み、
前記コントロール環境内の複数の前記モニタリング構成要素のそれぞれの前記データベースインスタンスの部分への前記割り当てが、それぞれの前記モニタリング構成要素の前記複数のワークロードパーティションのうちの1つへの割り当てを含む、
付記項8に記載のコンピュータにより実行される方法。
付記項10
前記モニタリング構成要素が前記割り当てられたワークロードパーティションをモニタすることが不可能なとき、前記データベースインスタンスの再パーティショニング、および再パーティショニングの後の前記モニタリング構成要素の残りのグループのパーティションへの再割り当てを行うことをさらに含む、付記項9に記載のコンピュータにより実行される方法。
付記項11
前記モニタリング構成要素が前記割り当てられたワークロードパーティションをモニタすることが不可能なときに判断するため、ハートビートメッセージが前記モニタリング構成要素の間で周期的に送信されるようにさせる、
付記項9に記載のコンピュータにより実行される方法。
付記項12
割り当てられた前記モニタリング構成要素が前記複製されたインスタンスに対して前記一次インスタンスレプリカが利用不可と判断するとき、前記二次インスタンスレプリカが、前記複製されたインスタンスの新しい前記一次インスタンスレプリカにフェイルオーバするようにさせることをさらに含む、
付記項5に記載のコンピュータにより実行される方法。
付記項13
前記割り当てられたモニタリング構成要素の識別子およびリース期間の情報を、前記複製されたインスタンスの前記一次インスタンスレプリカのブロック記憶メカニズムに格納することをさらに含み、前記ブロック記憶メカニズムは、前記識別子および前記リース期間の前記情報が前記二次インスタンスレプリカの前記ブロック記憶メカニズムに同期的に格納されるようにさせる、
付記項5に記載のコンピュータにより実行される方法。
付記項14
前記識別子が無作為の長い識別子である、付記項13に記載のコンピュータにより実行される方法。
付記項15
前記複製されたインスタンスの第1および第2のインスタンスレプリカが、単一の前記データゾーン内、別個の前記地理的位置の別個の前記データゾーン内、複数の地理的位置にわたる単一の前記データゾーン内、または単一の地理的地域内の複数の前記データゾーンにわたりプロビジョンされ、
前記モニタリング構成要素が、第3の前記データゾーンまたは前記地理的位置内、または、前記データゾーンまたは前記地理的位置と前記第1および第2のインスタンスレプリカのうちの1つの中に位置する、
付記項5に記載のコンピュータにより実行される方法。
付記項16
前記複製されたインスタンスの第1および第2のインスタンスレプリカのステート情報およびデータ世代識別子、モニタリング構成要素識別子、およびリース期間情報を、
前記コントロール環境内の前記モニタリング構成要素のメモリ内に格納することをさらに含む、
付記項5に記載のコンピュータにより実行される方法。
付記項17
プロセッサと、
前記プロセッサにより実行されるとき、前記プロセッサに、
コントロール環境内のモニタリング構成要素を、データベース環境内の異なるデータゾーンまたは異なる地理的位置のうち少なくとも1つの中のデータベースインスタンスへ割り当て、前記データベースインスタンスは、少なくとも一次インスタンスレプリカおよび二次インスタンスレプリカを有する複製されたインスタンスであることが可能であり、前記割り当てられたモニタリング構成要素は、前記データベースインスタンスが前記複製されたインスタンスであるとき、前記一次インスタンスレプリカおよび前記二次インスタンスレプリカのうち少なくとも1つと異なる前記データゾーンおよび異なる前記地理的位置のうち少なくとも1つにある割り当ることと、
前記モニタリング構成要素が前記データベースインスタンスの通信の送信をさせるようにし、前記通信は、前記データベースインスタンスが前記複製されたインスタンスである場合、少なくとも前記一次インスタンスレプリカに送信されることと、
前記データベースインスタンスからのリース情報の受信に応答し、リースのリース期間の間、前記モニタリング構成要素を使用する前記データベースインスタンスの少なくとも1つのステータスをモニタすることをさせる、
命令を有するメモリ装置と、を備える、
コントロール環境からデータベース環境内のデータベースインスタンスをモニタするシステム。
付記項18
前記複製されたインスタンスに関して、前記一次インスタンスレプリカと前記二次インスタンスレプリカの間でデータが同期され、現在の前記リースがプロビジョンされ複製された前記インスタンスに関して存在するときのみ、前記リース情報が、前記複製されたインスタンスの前記一次インスタンスレプリカから受信される、付記項17に記載のシステム。
付記項19
前記コントロール環境が複数の前記モニタリング構成要素を有し、前記データベース環境が複数の前記データベースインスタンスを有し、前記命令が、実行されるとき、さらに前記プロセッサに、
前記複数のモニタリング構成要素にわたり実質的に均一にワークロードを分散するため、
前記コントロール環境内の前記複数のモニタリング構成要素をそれぞれ、前記データベース環境内の前記データベースインスタンスの部分へ割り当てをさせる、
付記項17に記載のシステム。
付記項20
前記命令が、実行されるとき、さらに前記プロセッサに、
前記データベース環境内の前記データベースインスタンスのそれぞれを複数のワークロードパーティションの1つへ割り当てさせ、
前記コントロール環境内の前記複数のモニタリング構成要素のそれぞれの前記データベースインスタンスの部分への割り当てが、それぞれの前記モニタリング構成要素を前記複数のワークロードパーティションのうちの1つへ割り当てることを含む、
付記項19に記載のシステム。
付記項21
前記命令が、実行されるとき、さらに前記プロセッサに、
前記モニタリング構成要素が前記割り当てられたワークロードパーティションをモニタすることが不可能なとき、前記データベースインスタンスの再パーティションを行い、再パーティショニングの後、前記モニタリング構成要素の残りのグループをパーティションへ再割り当てることをさせる、
付記項20に記載のシステム。
付記項22
前記命令が、実行されるとき、さらに前記プロセッサに、
前記割り当てられたモニタリング構成要素の識別子およびリース期間の情報を、前記複製されたインスタンスの前記一次インスタンスレプリカのブロック記憶メカニズムへ格納させ、前記ブロック記憶メカニズムは、前記識別子および前記リース期間の前記情報が前記二次インスタンスレプリカの前記ブロック記憶メカニズムに同期的に格納されるようにする、
付記項17に記載のシステム。
付記項23
前記複製されたインスタンスの第1および第2のインスタンスレプリカが、単一の前記データゾーン内、別個の地理的位置の別個の前記データゾーン内、複数の前記地理的位置にわたる単一の前記データゾーン内、または単一の地理的地域内の複数の前記データゾーンにわたりプロビジョンされ、
前記モニタリング構成要素が、第3の前記データゾーンまたは前記地理的位置内、または、第1または第2のうちの1つの前記データゾーンまたは前記地理的位置内に位置する、
付記項17に記載のシステム。
付記項24
命令が、プロセッサにより実行されるとき、前記プロセッサに、
コントロール環境内のモニタリング構成要素を、データベース環境内の異なるデータゾーンまたは異なる地理的位置のうち少なくとも1つの中のデータベースインスタンスへ割り当て、前記データベースインスタンスは、少なくとも一次インスタンスレプリカおよび二次インスタンスレプリカを有する複製されたインスタンスであることが可能であり、前記割り当てられたモニタリング構成要素は、前記データベースインスタンスが前記複製されたインスタンスであるとき、前記一次インスタンスレプリカおよび前記二次インスタンスレプリカのうち少なくとも1つと異なる前記データゾーンおよび異なる前記地理的位置のうち少なくとも1つにあるようにさせることと、
前記モニタリング構成要素が前記データベースインスタンスへ通信を送信するようにし、前記通信は、前記データベースインスタンスが前記複製されたインスタンスである場合、少なくとも前記一次インスタンスレプリカに送信されることと、
前記データベースインスタンスからのリース情報の受信に応答し、リースのリース期間の間、前記モニタリング構成要素を使用して前記データベースインスタンスの少なくとも1つのステータスをモニタするようにさせる、
コントロール環境からデータベース環境内のモニタリングデータベースインスタンスに関する命令を格納する、コンピュータ可読な記憶媒体。
付記項25
前記複製されたインスタンスに関して、前記一次インスタンスレプリカと前記二次インスタンスレプリカの間でデータが同期され、現在の前記リースがプロビジョンされ複製された前記インスタンスに関して存在するときのみ、前記リース情報が、前記複製されたインスタンスの前記一次インスタンスレプリカから受信される、付記項24に記載のコンピュータ可読な記憶媒体。
付記項26
前記コントロール環境が複数のモニタリング構成要素を有し、前記データベース環境が複数のデータベースインスタンスを有し、前記命令が、実行されるとき、さらに前記プロセッサに、
前記複数のモニタリング構成要素にわたり実質的に均一にワークロードを分散するため、前記コントロール環境内の前記複数のモニタリング構成要素を、それぞれ、前記データベース環境内の前記データベースインスタンスの部分へ割り当てることをさせる、
付記項24に記載のコンピュータ可読な記憶媒体。
付記項27
前記命令が、実行されるとき、さらに前記プロセッサに、
前記データベース環境内の前記データベースインスタンスを、それぞれ、複数のワークロードパーティションのうちの1つへ割り当てることをさせ、
前記コントロール環境内の前記複数のモニタリング構成要素のそれぞれの前記データベースインスタンスの部分への割り当てが、それぞれの前記モニタリング構成要素の前記複数のワークロードパーティションのうちの1つへの割り当てを含む、
付記項26に記載のコンピュータ可読な記憶媒体。

Claims (15)

  1. 実行可能な命令で構成される1つまたは複数のコンピュータシステムの制御下で、
    コントロール環境内のモニタリング構成要素を、データベース環境内の異なるデータゾーンまたは異なる地理的位置のうち少なくとも1つの中のデータベースインスタンスに割り当て、前記データベースインスタンスは、少なくとも一次インスタンスレプリカおよび二次インスタンスレプリカを有する複製されたインスタンスであることが可能であり、割り当てられた前記モニタリング構成要素は、前記データベースインスタンスが複製されたインスタンスであるとき、前記一次インスタンスレプリカおよび前記二次インスタンスレプリカのうち少なくとも1つと異なる前記データゾーンおよび異なる前記地理的位置のうち少なくとも1つにあることと、
    前記モニタリング構成要素が前記データベースインスタンスに通信を送信するようにさせ、前記通信は、前記データベースインスタンスが複製されたインスタンスである場合、
    少なくとも前記一次インスタンスレプリカに送信されることと、
    前記データベースインスタンスからのリース情報の受信に応答し、リースのリース期間の間、前記モニタリング構成要素を使用して前記データベースインスタンスの少なくともステータスをモニタすることと、を含む、
    コンピュータにより実行される、コントロール環境からデータベース環境内のデータベースインスタンスをモニタする方法。
  2. 前記複製されたインスタンスに関して、前記一次インスタンスレプリカと前記二次インスタンスレプリカの間でデータが同期されたときのみ、前記リース情報が、前記複製されたインスタンスの前記一次インスタンスレプリカから受信される、請求項1に記載のコンピュータにより実行される方法。
  3. 現在の前記リースがプロビジョンされ複製された前記インスタンスに関して存在するときのみ、前記リース情報が、前記プロビジョンされ複製されたインスタンスの前記一次インスタンスレプリカから受信される、請求項1に記載のコンピュータにより実行される方法。
  4. 前記コントロール環境が複数の前記モニタリング構成要素を有し、前記データベース環境が複数の前記データベースインスタンスを有し、さらに、
    複数の前記モニタリング構成要素にわたり実質的に均一にワークロードを分散するため、前記コントロール環境内の前記複数のモニタリング構成要素のそれぞれを、前記データベース環境内の前記データベースインスタンスの部分に割り当てることを含む、
    請求項1に記載のコンピュータにより実行される方法。
  5. 前記データベース環境内の前記データベースインスタンスのそれぞれを複数のワークロードパーティションのうちの1つに割り当てることをさらに含み、
    前記コントロール環境内の前記複数のモニタリング構成要素のそれぞれを前記データベースインスタンスの部分に割り当てることは、それぞれの前記モニタリング構成要素を複数の前記ワークロードパーティションのうちの1つへの割り当ることを含む、
    請求項4に記載のコンピュータにより実行される方法。
  6. 前記モニタリング構成要素が前記割り当てられたワークロードパーティションをモニタすることが不可能なとき、前記データベースインスタンスの再パーティショニング、および再パーティショニングの後、前記モニタリング構成要素の残りのグループのパーティションへの再割り当てを行うことをさらに含む、
    請求項5に記載のコンピュータにより実行される方法。
  7. 割り当てられた前記モニタリング構成要素が前記複製されたインスタンスに関して前記一次インスタンスレプリカが利用不可と判断するとき、前記二次インスタンスレプリカが、前記複製されたインスタンスの新しい前記一次インスタンスレプリカにフェイルオーバするようにさせることをさらに含む、
    請求項1に記載のコンピュータにより実行される方法。
  8. 前記割り当てられたモニタリング構成要素の識別子および前記リース期間の情報を、前記複製されたインスタンスの前記一次インスタンスレプリカのブロック記憶メカニズムに格納することをさらに含み、前記ブロック記憶メカニズムは、前記識別子および前記リース期間の前記情報が前記二次インスタンスレプリカの前記ブロック記憶メカニズムに同期的に格納されるようにさせる、
    請求項1に記載のコンピュータにより実行される方法。
  9. 前記一次インスタンスレプリカおよび前記二次インスタンスレプリカが、単一のデータゾーン内、別個の地理的位置の別個の前記データゾーン内、複数の地理的位置にわたる単一の前記データゾーン内、または単一の地理的地域内の複数の前記データゾーンにわたりプロビジョンされ、
    前記モニタリング構成要素が、第3の前記データゾーンまたは前記地理的位置内、または、前記一次インスタンスレプリカおよび前記二次インスタンスレプリカのうちの1つの前記データゾーンまたは前記地理的位置内に位置する、
    請求項1に記載のコンピュータにより実行される方法。
  10. プロセッサと、
    前記プロセッサにより実行されるとき、前記プロセッサに、
    コントロール環境内のモニタリング構成要素を、データベース環境内の異なるデータゾーンまたは異なる地理的位置のうち少なくとも1つの中のデータベースインスタンスへ割り当て、前記データベースインスタンスは、少なくとも一次インスタンスレプリカおよび二次インスタンスレプリカを有する複製されたインスタンスであることが可能であり、前記割り当てられたモニタリング構成要素は、前記データベースインスタンスが前記複製されたインスタンスであるとき、前記一次インスタンスレプリカおよび前記二次インスタンスレプリカのうち少なくとも1つと異なる前記データゾーンおよび異なる前記地理的位置のうち少なくとも1つにあるようにさせることと、
    前記モニタリング構成要素が前記データベースインスタンスへ通信を送信するようにさせ、前記通信は、前記データベースインスタンスが前記複製されたインスタンスである場合、少なくとも前記一次インスタンスレプリカに送信されるようにさせ、
    前記データベースインスタンスからのリース情報の受信に応答し、リースのリース期間の間、前記モニタリング構成要素を使用して、前記データベースインスタンスを少なくとも1つのステータスのモニタすることをさせる、
    命令を有するメモリ装置と、を備える、
    コントロール環境からデータベース環境内のデータベースインスタンスをモニタするシステム。
  11. 前記複製されたインスタンスに関して、前記一次インスタンスレプリカと前記二次インスタンスレプリカの間でデータが同期され、現在の前記リースがプロビジョンされ複製された前記インスタンスに関して存在するときのみ、前記リース情報が前記複製されたインスタンスの前記一次インスタンスレプリカから受信される、請求項10に記載のシステム。
  12. 前記コントロール環境が複数の前記モニタリング構成要素を有し、前記データベース環境が複数の前記データベースインスタンスを有し、前記命令が、実行されるとき、さらに前記プロセッサに、
    前記複数のモニタリング構成要素にわたり実質的に均一にワークロードを分散するため、
    前記コントロール環境内の前記複数のモニタリング構成要素を、それぞれ、前記データベース環境内の前記データベースインスタンスの部分へ割り当てることをさせる、
    請求項10に記載のシステム。
  13. 前記命令が、実行されるとき、さらに前記プロセッサに、
    前記データベース環境内の前記データベースインスタンスを、それぞれ、複数のワークロードパーティションのうちの1つへ割り当ることをさせ、
    前記コントロール環境内の前記複数のモニタリング構成要素のそれぞれの前記データベースインスタンスの部分への割り当てが、それぞれの前記モニタリング構成要素の前記複数のワークロードパーティションのうちの1つへの割り当てを含む、
    請求項12に記載のシステム。
  14. 前記命令が、実行されるとき、さらに前記プロセッサに、
    前記割り当てられたモニタリング構成要素の識別子およびリース期間の情報を、前記複製されたインスタンスの前記一次インスタンスレプリカのブロック記憶メカニズムへ格納することをさせ、前記ブロック記憶メカニズムは、前記識別子および前記リース期間の前記情報が前記二次インスタンスレプリカの前記ブロック記憶メカニズムに同期的に格納されるようにさせる、
    請求項10に記載のシステム。
  15. 前記一次インスタンスレプリカおよび前記二次インスタンスレプリカが、単一の前記データゾーン内、別個の前記地理的位置の別個の前記データゾーン内、複数の前記地理的位置にわたる単一の前記データゾーン内、または単一の地理的地域内の複数の前記データゾーンにわたりプロビジョンされ、
    前記モニタリング構成要素が、第3の前記データゾーンまたは前記地理的位置内、または、前記一次インスタンスレプリカおよび前記二次インスタンスレプリカのうちの1つの前記データゾーンまたは前記地理的位置内に位置する、
    請求項10に記載のシステム。
JP2012536966A 2009-10-26 2010-10-26 複製されたデータインスタンスのモニタリング Active JP5443614B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/606,106 2009-10-26
US12/606,106 US8676753B2 (en) 2009-10-26 2009-10-26 Monitoring of replicated data instances
PCT/US2010/054141 WO2011053595A1 (en) 2009-10-26 2010-10-26 Monitoring of replicated data instances

Publications (2)

Publication Number Publication Date
JP2013508884A JP2013508884A (ja) 2013-03-07
JP5443614B2 true JP5443614B2 (ja) 2014-03-19

Family

ID=43899239

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012536966A Active JP5443614B2 (ja) 2009-10-26 2010-10-26 複製されたデータインスタンスのモニタリング

Country Status (6)

Country Link
US (3) US8676753B2 (ja)
EP (2) EP2494439B1 (ja)
JP (1) JP5443614B2 (ja)
CN (1) CN102640108B (ja)
CA (1) CA2778723C (ja)
WO (1) WO2011053595A1 (ja)

Families Citing this family (165)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060167838A1 (en) * 2005-01-21 2006-07-27 Z-Force Communications, Inc. File-based hybrid file storage scheme supporting multiple file switches
US9268608B2 (en) 2009-02-26 2016-02-23 Oracle International Corporation Automatic administration of UNIX commands
US9705888B2 (en) 2009-03-31 2017-07-11 Amazon Technologies, Inc. Managing security groups for data instances
US8307003B1 (en) 2009-03-31 2012-11-06 Amazon Technologies, Inc. Self-service control environment
US8060792B2 (en) 2009-03-31 2011-11-15 Amazon Technologies, Inc. Monitoring and automated recovery of data instances
US9207984B2 (en) 2009-03-31 2015-12-08 Amazon Technologies, Inc. Monitoring and automatic scaling of data volumes
US8332365B2 (en) 2009-03-31 2012-12-11 Amazon Technologies, Inc. Cloning and recovery of data volumes
US8713060B2 (en) 2009-03-31 2014-04-29 Amazon Technologies, Inc. Control service for relational data management
US9135283B2 (en) 2009-10-07 2015-09-15 Amazon Technologies, Inc. Self-service configuration for data environment
US8676753B2 (en) 2009-10-26 2014-03-18 Amazon Technologies, Inc. Monitoring of replicated data instances
US8074107B2 (en) 2009-10-26 2011-12-06 Amazon Technologies, Inc. Failover and recovery for replicated data instances
US8335765B2 (en) 2009-10-26 2012-12-18 Amazon Technologies, Inc. Provisioning and managing replicated data instances
EP2516631B1 (en) 2009-12-23 2018-02-14 Bayer Intellectual Property GmbH Plants tolerant to hppd inhibitor herbicides
UY33139A (es) 2009-12-23 2011-07-29 Bayer Cropscience Ag Plantas tolerantes a herbicidas inhibidores de las hppd
ES2659085T3 (es) 2009-12-23 2018-03-13 Bayer Intellectual Property Gmbh Plantas tolerantes a herbicidas inhibidores de HPPD
AR079883A1 (es) 2009-12-23 2012-02-29 Bayer Cropscience Ag Plantas tolerantes a herbicidas inhibidores de las hppd
ES2659086T3 (es) 2009-12-23 2018-03-13 Bayer Intellectual Property Gmbh Plantas tolerantes a herbicidas inhibidores de HPPD
US20110179057A1 (en) * 2010-01-18 2011-07-21 Microsoft Corporation Database engine throttling
US9195500B1 (en) 2010-02-09 2015-11-24 F5 Networks, Inc. Methods for seamless storage importing and devices thereof
US8671074B2 (en) * 2010-04-12 2014-03-11 Microsoft Corporation Logical replication in clustered database system with adaptive cloning
US8769131B2 (en) * 2010-04-16 2014-07-01 Oracle America, Inc. Cloud connector key
US8818962B2 (en) * 2010-05-26 2014-08-26 International Business Machines Corporation Proactive detection of data inconsistencies in a storage system point-in-time copy of data
WO2011159842A2 (en) 2010-06-15 2011-12-22 Nimbula, Inc. Virtual computing infrastructure
US10715457B2 (en) 2010-06-15 2020-07-14 Oracle International Corporation Coordination of processes in cloud computing environments
US9286298B1 (en) * 2010-10-14 2016-03-15 F5 Networks, Inc. Methods for enhancing management of backup data sets and devices thereof
ES2588802T3 (es) 2010-11-10 2016-11-04 Bayer Cropscience Ag Variantes de HPPD y procedimientos de uso
US8412674B2 (en) * 2010-12-08 2013-04-02 Sybase, Inc. Replication resynchronization
US9710344B1 (en) 2010-12-13 2017-07-18 Amazon Technologies, Inc. Locality based quorum eligibility
US8473775B1 (en) 2010-12-14 2013-06-25 Amazon Technologies, Inc. Locality based quorums
EP2688406B1 (en) 2011-03-25 2015-04-22 Bayer Intellectual Property GmbH Use of n-(tetrazol-4-yl)- or n-(triazol-3-yl)arylcarboxamides or their salts for controlling unwanted plants in areas of transgenic crop plants being tolerant to hppd inhibitor herbicides
WO2012130684A1 (en) 2011-03-25 2012-10-04 Bayer Cropscience Ag Use of n-(1,2,5-oxadiazol-3-yl)benzamides for controlling unwanted plants in areas of transgenic crop plants being tolerant to hppd inhibitor herbicides
US9047126B2 (en) 2011-04-06 2015-06-02 International Business Machines Corporation Continuous availability between sites at unlimited distances
ES2425627B1 (es) * 2011-05-12 2014-05-05 Telefónica, S.A. Método y rastreador para distribución de contenido a través de una red de distribución de contenido
US9658935B1 (en) * 2011-06-15 2017-05-23 Amazon Technologies, Inc. Processing file modifications in a networked storage system
US9058304B2 (en) 2011-06-30 2015-06-16 International Business Machines Corporation Continuous workload availability between sites at unlimited distances
US9275369B2 (en) * 2011-08-24 2016-03-01 Oracle International Corporation Demystifying obfuscated information transfer for performing automated system administration
US9215153B2 (en) 2011-10-04 2015-12-15 International Business Machines Corporation Providing status information for virtual resource computing environment
JP6460798B2 (ja) 2012-02-10 2019-01-30 オラクル・インターナショナル・コーポレイション クラウドコンピューティングサービスフレームワーク
US9020912B1 (en) 2012-02-20 2015-04-28 F5 Networks, Inc. Methods for accessing data in a compressed file system and devices thereof
US9992155B2 (en) * 2012-03-29 2018-06-05 Hitachi Vantara Corporation DNS alias synchronization in replication topology
US20130304707A1 (en) * 2012-05-08 2013-11-14 Sap Ag Data Archiving Approach Leveraging Database Layer Functionality
US9641449B2 (en) * 2012-05-22 2017-05-02 International Business Machines Corporation Variable configurations for workload distribution across multiple sites
US8924792B2 (en) * 2012-05-29 2014-12-30 International Business Machines Corporation Resource planning for data protection validation
US10630566B1 (en) * 2012-06-20 2020-04-21 Amazon Technologies, Inc. Tightly-coupled external cluster monitoring
US20140059012A1 (en) * 2012-08-21 2014-02-27 Bank Of America Management of Database Deployment
US10664354B2 (en) * 2012-08-31 2020-05-26 Hewlett Packard Enterprise Development Lp Selecting a resource to be used in a data backup or restore operation
WO2014043435A1 (en) 2012-09-14 2014-03-20 Bayer Cropscience Lp Hppd variants and methods of use
US9189503B2 (en) 2012-12-06 2015-11-17 Microsoft Technology Licensing, Llc Database scale-out
US20140173330A1 (en) * 2012-12-14 2014-06-19 Lsi Corporation Split Brain Detection and Recovery System
CN103019875B (zh) * 2012-12-19 2015-12-09 北京世纪家天下科技发展有限公司 一种实现数据库双主改造的方法及装置
CN103049355B (zh) * 2012-12-25 2015-06-17 华为技术有限公司 一种数据库系统恢复方法及设备
US20140189127A1 (en) * 2012-12-27 2014-07-03 Anjaneya Reddy Chagam Reservation and execution image writing of native computing devices
US9483334B2 (en) 2013-01-28 2016-11-01 Rackspace Us, Inc. Methods and systems of predictive monitoring of objects in a distributed network system
US9397902B2 (en) 2013-01-28 2016-07-19 Rackspace Us, Inc. Methods and systems of tracking and verifying records of system change events in a distributed network system
US9813307B2 (en) * 2013-01-28 2017-11-07 Rackspace Us, Inc. Methods and systems of monitoring failures in a distributed network system
US9002982B2 (en) 2013-03-11 2015-04-07 Amazon Technologies, Inc. Automated desktop placement
US10313345B2 (en) 2013-03-11 2019-06-04 Amazon Technologies, Inc. Application marketplace for virtual desktops
US11151164B2 (en) * 2013-03-13 2021-10-19 International Business Machines Corporation Replication group partitioning
US10244080B2 (en) * 2013-03-15 2019-03-26 VCE IP Holding Company LLC Accessing multiple converged IT infrastructures
SG11201508409UA (en) * 2013-04-15 2015-11-27 Ashok Anand P Workflow execution system and method for cloud environment
US9489443B1 (en) 2013-05-24 2016-11-08 Amazon Technologies, Inc. Scheduling of splits and moves of database partitions
US9584379B2 (en) * 2013-06-20 2017-02-28 Microsoft Technology Licensing, Llc Sorted event monitoring by context partition
US10623243B2 (en) * 2013-06-26 2020-04-14 Amazon Technologies, Inc. Management of computing sessions
US9619545B2 (en) 2013-06-28 2017-04-11 Oracle International Corporation Naïve, client-side sharding with online addition of shards
JP5914761B2 (ja) * 2013-06-29 2016-05-11 華為技術有限公司Huawei Technologies Co.,Ltd. パーティション・バランシング・サブタスクを発行するための方法、装置およびシステム
US9465855B2 (en) 2013-10-22 2016-10-11 International Business Machines Corporation Maintaining two-site configuration for workload availability between sites at unlimited distances for products and services
US9882980B2 (en) 2013-10-22 2018-01-30 International Business Machines Corporation Managing continuous priority workload availability and general workload availability between sites at unlimited distances for products and services
CN104601350A (zh) * 2013-10-30 2015-05-06 中兴通讯股份有限公司 一种自动容灾切换方法及装置
US9569517B1 (en) * 2013-11-27 2017-02-14 Google Inc. Fault tolerant distributed key-value storage
CN104754001A (zh) * 2013-12-30 2015-07-01 方正宽带网络服务股份有限公司 云存储系统和数据存储方法
US9465698B2 (en) * 2014-03-06 2016-10-11 Software Ag Systems and/or methods for data recovery in distributed, scalable multi-tenant environments
US9495293B1 (en) * 2014-05-05 2016-11-15 EMC IP Holding Company, LLC Zone consistency
CN104021049B (zh) * 2014-05-16 2017-11-03 华为技术有限公司 分布式存储系统中数据统一的方法和以太接口硬盘
US20150339200A1 (en) * 2014-05-20 2015-11-26 Cohesity, Inc. Intelligent disaster recovery
US9348562B2 (en) 2014-08-25 2016-05-24 International Business Machines Corporation Correcting non-compliant source code in an integrated development environment
US10303795B2 (en) * 2014-09-10 2019-05-28 Amazon Technologies, Inc. Read descriptors at heterogeneous storage systems
US11386115B1 (en) * 2014-09-12 2022-07-12 Amazon Technologies, Inc. Selectable storage endpoints for a transactional data storage engine
GB2531546B (en) 2014-10-21 2016-10-12 Ibm Collaborative maintenance of software programs
US9875263B2 (en) * 2014-10-21 2018-01-23 Microsoft Technology Licensing, Llc Composite partition functions
CN104462612A (zh) * 2015-01-05 2015-03-25 浪潮(北京)电子信息产业有限公司 一种监控数据库信息的方法和设备
US10474694B2 (en) * 2015-02-25 2019-11-12 International Business Machines Corporation Zero-data loss recovery for active-active sites configurations
CN104657185B (zh) * 2015-03-12 2017-08-11 东港股份有限公司 一种Java卡的Java代码补丁方法
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US10191828B2 (en) * 2015-05-07 2019-01-29 Vmware, Inc. Methods and apparatus to control a monitoring agent in a computing environment
US11561863B2 (en) 2015-08-20 2023-01-24 International Business Machines Corporation PDSE member generation clustering and recovery
US10597674B2 (en) 2015-09-11 2020-03-24 Basf Agricultural Solutions Seed, Us Llc HPPD variants and methods of use
CN105183874A (zh) * 2015-09-19 2015-12-23 北京暴风科技股份有限公司 一种自维护的分布式数据库代理方法
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US10290050B2 (en) * 2016-02-02 2019-05-14 International Business Machines Corporation Lease-based management for atomic commit protocols
US10445169B2 (en) 2016-04-08 2019-10-15 Nxp Usa, Inc. Temporal relationship extension of state machine observer
WO2017184727A1 (en) 2016-04-21 2017-10-26 Bayer Cropscience Lp Tal-effector mediated herbicide tolerance
US11496588B2 (en) 2016-06-21 2022-11-08 Micro Focus Llc Clustering layers in multi-node clusters
US11442935B2 (en) 2016-09-26 2022-09-13 Splunk Inc. Determining a record generation estimate of a processing task
US11599541B2 (en) 2016-09-26 2023-03-07 Splunk Inc. Determining records generated by a processing task of a query
US10956415B2 (en) 2016-09-26 2021-03-23 Splunk Inc. Generating a subquery for an external data system using a configuration file
US11593377B2 (en) 2016-09-26 2023-02-28 Splunk Inc. Assigning processing tasks in a data intake and query system
US11860940B1 (en) 2016-09-26 2024-01-02 Splunk Inc. Identifying buckets for query execution using a catalog of buckets
US11615104B2 (en) 2016-09-26 2023-03-28 Splunk Inc. Subquery generation based on a data ingest estimate of an external data system
US11562023B1 (en) 2016-09-26 2023-01-24 Splunk Inc. Merging buckets in a data intake and query system
US11321321B2 (en) 2016-09-26 2022-05-03 Splunk Inc. Record expansion and reduction based on a processing task in a data intake and query system
US11550847B1 (en) 2016-09-26 2023-01-10 Splunk Inc. Hashing bucket identifiers to identify search nodes for efficient query execution
US11663227B2 (en) 2016-09-26 2023-05-30 Splunk Inc. Generating a subquery for a distinct data intake and query system
US11106734B1 (en) * 2016-09-26 2021-08-31 Splunk Inc. Query execution using containerized state-free search nodes in a containerized scalable environment
US11232100B2 (en) 2016-09-26 2022-01-25 Splunk Inc. Resource allocation for multiple datasets
US11126632B2 (en) 2016-09-26 2021-09-21 Splunk Inc. Subquery generation based on search configuration data from an external data system
US20180089324A1 (en) 2016-09-26 2018-03-29 Splunk Inc. Dynamic resource allocation for real-time search
US10353965B2 (en) 2016-09-26 2019-07-16 Splunk Inc. Data fabric service system architecture
US11294941B1 (en) 2016-09-26 2022-04-05 Splunk Inc. Message-based data ingestion to a data intake and query system
US11620336B1 (en) 2016-09-26 2023-04-04 Splunk Inc. Managing and storing buckets to a remote shared storage system based on a collective bucket size
US11580107B2 (en) 2016-09-26 2023-02-14 Splunk Inc. Bucket data distribution for exporting data to worker nodes
US11604795B2 (en) 2016-09-26 2023-03-14 Splunk Inc. Distributing partial results from an external data system between worker nodes
US11586627B2 (en) 2016-09-26 2023-02-21 Splunk Inc. Partitioning and reducing records at ingest of a worker node
US11874691B1 (en) 2016-09-26 2024-01-16 Splunk Inc. Managing efficient query execution including mapping of buckets to search nodes
US11281706B2 (en) 2016-09-26 2022-03-22 Splunk Inc. Multi-layer partition allocation for query execution
US11567993B1 (en) 2016-09-26 2023-01-31 Splunk Inc. Copying buckets from a remote shared storage system to memory associated with a search node for query execution
US11269939B1 (en) 2016-09-26 2022-03-08 Splunk Inc. Iterative message-based data processing including streaming analytics
US11461334B2 (en) 2016-09-26 2022-10-04 Splunk Inc. Data conditioning for dataset destination
US11243963B2 (en) 2016-09-26 2022-02-08 Splunk Inc. Distributing partial results to worker nodes from an external data system
US11250056B1 (en) 2016-09-26 2022-02-15 Splunk Inc. Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system
US11091772B2 (en) 2016-11-23 2021-08-17 BASF Agricultural Solutions Seed US LLC AXMI669 and AXMI991 toxin genes and methods for their use
KR20190095411A (ko) 2016-12-22 2019-08-14 바스프 아그리컬쳐럴 솔루션즈 시드 유에스 엘엘씨 선충 해충의 방제를 위한 cry14의 용도
UY37571A (es) 2017-01-18 2018-08-31 Bayer Cropscience Lp Gen de toxina bp005 y procedimientos para su uso
US11286498B2 (en) 2017-01-18 2022-03-29 BASF Agricultural Solutions Seed US LLC Use of BP005 for the control of plant pathogens
WO2018165091A1 (en) 2017-03-07 2018-09-13 Bayer Cropscience Lp Hppd variants and methods of use
US11184271B2 (en) * 2017-04-06 2021-11-23 At&T Intellectual Property I, L.P. Network service assurance system
GB2564395B (en) 2017-07-06 2020-04-29 Metaswitch Networks Ltd Media gateway
CN107547306A (zh) * 2017-07-21 2018-01-05 新华三技术有限公司 一种数据同步恢复方法、装置及服务器
US11477280B1 (en) * 2017-07-26 2022-10-18 Pure Storage, Inc. Integrating cloud storage services
JP6972735B2 (ja) * 2017-07-26 2021-11-24 富士通株式会社 表示制御プログラム、表示制御方法及び表示制御装置
US11921672B2 (en) 2017-07-31 2024-03-05 Splunk Inc. Query execution at a remote heterogeneous data store of a data fabric service
US10896182B2 (en) 2017-09-25 2021-01-19 Splunk Inc. Multi-partitioning determination for combination operations
WO2019083808A1 (en) 2017-10-24 2019-05-02 Basf Se IMPROVING HERBICIDE TOLERANCE AGAINST HPPD INHIBITORS BY REGULATION OF PUTATIVE REDUCED 4-HYDROXYPHENYLPYRUVATE REDUCES IN SOYBEANS
WO2019083810A1 (en) 2017-10-24 2019-05-02 Basf Se IMPROVING HERBICIDE TOLERANCE FOR 4-HYDROXYPHENYLPYRUVATE DIOXYGENASE (HPPD) INHIBITORS BY NEGATIVE REGULATION OF HPPD EXPRESSION IN SOYBEANS
CN107609202B (zh) * 2017-10-25 2020-08-04 武汉斗鱼网络科技有限公司 一种部署数据库实例的方法、装置及计算机设备
KR102043538B1 (ko) * 2018-01-18 2019-11-11 주식회사 알티스트 파티셔닝을 적용하여 프로세스를 모니터링하는 컴퓨팅 시스템
US10585746B2 (en) * 2018-02-02 2020-03-10 EMC IP Holding Company LLC Tracking status and restarting distributed replication
US11334543B1 (en) 2018-04-30 2022-05-17 Splunk Inc. Scalable bucket merging for a data intake and query system
US10884820B1 (en) * 2018-08-31 2021-01-05 Veritas Technologies Llc Intelligent and automatic replication load score based load balancing and resiliency of replication appliances
US10732967B1 (en) 2019-02-22 2020-08-04 Amazon Technologies, Inc. Safe deployment of configurations to server fleets
US11151162B2 (en) * 2019-03-19 2021-10-19 Netapp Inc. Timestamp consistency for synchronous replication
CN112910684B (zh) * 2019-04-03 2022-07-26 福建天泉教育科技有限公司 一种通过实时流式平台监控重点数据的方法及终端
WO2020220216A1 (en) 2019-04-29 2020-11-05 Splunk Inc. Search time estimate in data intake and query system
US11715051B1 (en) 2019-04-30 2023-08-01 Splunk Inc. Service provider instance recommendations using machine-learned classifications and reconciliation
JP2020201637A (ja) * 2019-06-07 2020-12-17 京セラドキュメントソリューションズ株式会社 情報処理システム
US11431553B2 (en) * 2019-06-24 2022-08-30 Amazon Technologies, Inc. Remote control planes with automated failover
US11349718B2 (en) * 2019-06-24 2022-05-31 Amazon Technologies, Inc. Capacity bursting using a remote control plane
WO2020263611A1 (en) * 2019-06-24 2020-12-30 Amazon Technologies, Inc. Remote control planes with automated failover
CN110971480B (zh) * 2019-10-18 2022-08-19 平安科技(深圳)有限公司 计算机网络状况监控方法、装置、计算机设备及存储介质
US11494380B2 (en) 2019-10-18 2022-11-08 Splunk Inc. Management of distributed computing framework components in a data fabric service system
CN110879811B (zh) * 2019-11-18 2023-05-23 浪潮通用软件有限公司 一种在运行时进行数据与程序一致性自检的实现方法
US11385975B2 (en) 2019-11-27 2022-07-12 Amazon Technologies, Inc. Systems and methods for enabling a highly available managed failover service
US11087525B2 (en) 2020-01-08 2021-08-10 International Business Machines Corporation Unsupervised learning of three dimensional visual alphabet
US11544290B2 (en) 2020-01-13 2023-01-03 International Business Machines Corporation Intelligent data distribution and replication using observed data access patterns
US11922222B1 (en) 2020-01-30 2024-03-05 Splunk Inc. Generating a modified component for a data intake and query system using an isolated execution environment image
US11411808B2 (en) 2020-03-27 2022-08-09 Amazon Technologies, Inc. Managing failover region availability for implementing a failover service
EP4127936A1 (en) * 2020-03-27 2023-02-08 Amazon Technologies Inc. Managing failover region availability for implementing a failover service
US11397651B2 (en) 2020-03-27 2022-07-26 Amazon Technologies, Inc. Managing failover region availability for implementing a failover service
US11397652B2 (en) 2020-03-27 2022-07-26 Amazon Technologies, Inc. Managing primary region availability for implementing a failover from another primary region
US11169914B1 (en) 2020-07-01 2021-11-09 Bank Of America Corporation System for synchronization and provisioning of electronic testing data across applications
WO2022051253A1 (en) * 2020-09-02 2022-03-10 Google Llc Hybrid lease for primary election
US11704313B1 (en) 2020-10-19 2023-07-18 Splunk Inc. Parallel branch operation using intermediary nodes
US11327795B1 (en) * 2020-11-06 2022-05-10 Oracle International Corporation Efficient worker utilization
CA3205303A1 (en) * 2021-01-18 2022-07-21 Fredrik Haard Methods and systems for secure and reliable integration of healthcare practice operations, management, administrative and financial software systems
US11709741B1 (en) 2021-03-29 2023-07-25 Amazon Technologies, Inc. Systems and methods for enabling a failover service for block-storage volumes
CN114138208B (zh) * 2022-02-07 2022-04-29 苏州浪潮智能科技有限公司 一种防止drbd裂脑的处理方法及相关组件

Family Cites Families (190)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5263165A (en) 1990-02-15 1993-11-16 International Business Machines Corporation System for providing user access control within a distributed data processing system having multiple resource managers
US5555404A (en) 1992-03-17 1996-09-10 Telenor As Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas
US5845067A (en) * 1996-09-09 1998-12-01 Porter; Jack Edward Method and apparatus for document management utilizing a messaging system
JPH10312327A (ja) * 1997-05-13 1998-11-24 Oki Electric Ind Co Ltd ミラーリング監視方式
US6018746A (en) * 1997-12-23 2000-01-25 Unisys Corporation System and method for managing recovery information in a transaction processing system
US6560639B1 (en) * 1998-02-13 2003-05-06 3565 Acquisition Corporation System for web content management based on server-side application
JP3850134B2 (ja) 1998-03-31 2006-11-29 川崎マイクロエレクトロニクス株式会社 データ検索装置
US6205465B1 (en) 1998-07-22 2001-03-20 Cisco Technology, Inc. Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information
US6295558B1 (en) 1998-08-21 2001-09-25 Hewlett-Packard Company Automatic status polling failover or devices in a distributed network management hierarchy
US6158010A (en) 1998-10-28 2000-12-05 Crosslogix, Inc. System and method for maintaining security in a distributed computer network
US6282570B1 (en) 1998-12-07 2001-08-28 International Business Machines Corporation Monitoring a large parallel database through dynamic grouping and sequential sampling
US20070162420A1 (en) * 2004-01-21 2007-07-12 Oracle International Corporation Techniques for automatically discovering a database device on a network
DE50003179D1 (de) 1999-02-18 2003-09-11 Siemens Ag Elektrisches verbindungsverfahren und verbindungsstelle
US7315826B1 (en) 1999-05-27 2008-01-01 Accenture, Llp Comparatively analyzing vendors of components required for a web-based architecture
US6611867B1 (en) 1999-08-31 2003-08-26 Accenture Llp System, method and article of manufacture for implementing a hybrid network
US6442707B1 (en) * 1999-10-29 2002-08-27 Advanced Micro Devices, Inc. Alternate fault handler
US6671821B1 (en) 1999-11-22 2003-12-30 Massachusetts Institute Of Technology Byzantine fault tolerance
US6694362B1 (en) 2000-01-03 2004-02-17 Micromuse Inc. Method and system for network event impact analysis and correlation with network administrators, management policies and procedures
US6542907B1 (en) * 2000-03-31 2003-04-01 International Business Machines Corporation Method and apparatus for decentralized, invertible generation of bounded-length globally unique replica identifiers
US6842769B1 (en) 2000-05-05 2005-01-11 Interland, Inc. Automatically configured network server
US6718481B1 (en) 2000-05-26 2004-04-06 Emc Corporation Multiple hierarichal/peer domain file server with domain based, cross domain cooperative fault handling mechanisms
US6950871B1 (en) 2000-06-29 2005-09-27 Hitachi, Ltd. Computer system having a storage area network and method of handling data in the computer system
US20020019844A1 (en) * 2000-07-06 2002-02-14 Kurowski Scott J. Method and system for network-distributed computing
US7536686B2 (en) 2000-09-08 2009-05-19 Oracle International Corporation Techniques for automatically installing and configuring database applications
US7124289B1 (en) * 2000-10-31 2006-10-17 Opsware Inc. Automated provisioning framework for internet site servers
US7299274B2 (en) * 2000-12-11 2007-11-20 Microsoft Corporation Method and system for management of multiple network resources
US6985955B2 (en) 2001-01-29 2006-01-10 International Business Machines Corporation System and method for provisioning resources to users based on roles, organizational information, attributes and third-party information or authorizations
US7197561B1 (en) 2001-03-28 2007-03-27 Shoregroup, Inc. Method and apparatus for maintaining the status of objects in computer networks using virtual state machines
US20020143798A1 (en) 2001-04-02 2002-10-03 Akamai Technologies, Inc. Highly available distributed storage system for internet content with storage site redirection
US20030005091A1 (en) 2001-06-29 2003-01-02 International Business Machines Corporation Method and apparatus for improved monitoring in a distributed computing system
US7024517B1 (en) 2001-09-27 2006-04-04 Emc Corporation System and method for configuring data storage in accordance with workload requirements
JP3879471B2 (ja) 2001-10-10 2007-02-14 株式会社日立製作所 計算機資源割当方法
US7133907B2 (en) * 2001-10-18 2006-11-07 Sun Microsystems, Inc. Method, system, and program for configuring system resources
US7877783B1 (en) * 2001-11-15 2011-01-25 Bmc Software, Inc. System and method for secure communications with a remote software program
US7418484B2 (en) 2001-11-30 2008-08-26 Oracle International Corporation System and method for actively managing an enterprise of configurable components
AUPR965801A0 (en) 2001-12-20 2002-01-24 Canon Information Systems Research Australia Pty Ltd A user interface for accessing files in a smart card file system
US7284067B2 (en) * 2002-02-20 2007-10-16 Hewlett-Packard Development Company, L.P. Method for integrated load balancing among peer servers
US7360121B2 (en) 2002-02-22 2008-04-15 Bea Systems, Inc. System for monitoring a subsystem health
US6947981B2 (en) 2002-03-26 2005-09-20 Hewlett-Packard Development Company, L.P. Flexible data replication mechanism
US7103884B2 (en) 2002-03-27 2006-09-05 Lucent Technologies Inc. Method for maintaining consistency and performing recovery in a replicated data storage system
US6988139B1 (en) * 2002-04-26 2006-01-17 Microsoft Corporation Distributed computing of a job corresponding to a plurality of predefined tasks
US7373399B2 (en) 2002-05-09 2008-05-13 Hewlett-Packard Development Company, L.P. System and method for an enterprise-to-enterprise compare within a utility data center (UDC)
US20030212898A1 (en) 2002-05-09 2003-11-13 Doug Steele System and method for remotely monitoring and deploying virtual support services across multiple virtual lans (VLANS) within a data center
JP2003330781A (ja) 2002-05-17 2003-11-21 Hitachi Ltd データ多重保障方法
JP3558625B2 (ja) 2002-07-01 2004-08-25 沖電気工業株式会社 同期誤り検出回路
US6981135B1 (en) 2002-08-02 2005-12-27 Hewlett-Packard Development Company, L.P. System and method of configuring system components
CA2405673C (en) * 2002-09-30 2009-10-06 Ibm Canada Limited-Ibm Canada Limitee Provisioning web services
DE10393771T5 (de) 2002-11-20 2006-03-30 Filesx Ltd. Schnelle Datensicherungsspeicherung und schnelle Datenwiederherstellung (FBSRD)
US7299244B2 (en) 2002-12-10 2007-11-20 Hewlett-Packard Development Company, L.P. System and method for dynamic sequencing of a requirements-based workflow
JP4322511B2 (ja) 2003-01-27 2009-09-02 株式会社日立製作所 情報処理システムの制御方法、及び情報処理システム
US7502329B2 (en) 2003-01-27 2009-03-10 Alcatel-Lucent Usa Inc. Distributed network monitoring with bounded link utilization in IP networks
US20040163008A1 (en) 2003-02-19 2004-08-19 Kim Roy Moon Remote system management and operation services in a computer network
US7583607B2 (en) 2003-03-06 2009-09-01 Hewlett-Packard Development Company, L.P. Method and apparatus for designating and implementing support level agreements
JP4452494B2 (ja) 2003-03-11 2010-04-21 株式会社日立製作所 複数リモートストレージでのリモートコピー停止後のデータ同期化方式
US7111194B1 (en) 2003-03-21 2006-09-19 Network Appliance, Inc. Mirror split brain avoidance
US7415484B1 (en) 2003-05-09 2008-08-19 Vignette Corporation Method and system for modeling of system content for businesses
US20040225659A1 (en) 2003-05-09 2004-11-11 O'brien John Storage foundry
US7120824B2 (en) 2003-05-09 2006-10-10 International Business Machines Corporation Method, apparatus and program storage device for maintaining data consistency and cache coherency during communications failures between nodes in a remote mirror pair
US7912820B2 (en) 2003-06-06 2011-03-22 Microsoft Corporation Automatic task generator method and system
US8332864B2 (en) 2003-06-12 2012-12-11 Reuters America Inc. Business process automation
US8095511B2 (en) 2003-06-30 2012-01-10 Microsoft Corporation Database data recovery system and method
US7389333B2 (en) * 2003-07-02 2008-06-17 Fujitsu Limited Provisioning a network element using custom defaults
US7701858B2 (en) * 2003-07-17 2010-04-20 Sensicast Systems Method and apparatus for wireless communication in a mesh network
US7873684B2 (en) * 2003-08-14 2011-01-18 Oracle International Corporation Automatic and dynamic provisioning of databases
JP4415610B2 (ja) * 2003-08-26 2010-02-17 株式会社日立製作所 系切替方法、レプリカ作成方法、及びディスク装置
US20100005531A1 (en) 2004-12-23 2010-01-07 Kenneth Largman Isolated multiplexed multi-dimensional processing in a virtual processing space having virus, spyware, and hacker protection features
US7383463B2 (en) 2004-02-04 2008-06-03 Emc Corporation Internet protocol based disaster recovery of a server
US7631076B2 (en) 2004-03-16 2009-12-08 International Business Machines Corporation Apparatus, system, and method for adaptive polling of monitored systems
JP2005267056A (ja) * 2004-03-17 2005-09-29 Nec Corp ソフトウェアミラーリングディスク障害監視・復旧システム、その障害監視・復旧方法及びプログラム
FR2870020B1 (fr) 2004-05-07 2007-02-02 Synerway Sas Soc Par Actions S Procede de sauvegarde et restauration de donnees pour reprise d'activite rapide et systeme mettant en oeuvre le procede
US7383291B2 (en) * 2004-05-24 2008-06-03 Apple Inc. Method for sharing groups of objects
JP4489500B2 (ja) 2004-05-26 2010-06-23 株式会社日立製作所 バックアップ方法、バックアップシステム、ディスク制御装置、及びバックアッププログラム
US7478263B1 (en) * 2004-06-01 2009-01-13 Network Appliance, Inc. System and method for establishing bi-directional failover in a two node cluster
US7624133B1 (en) 2004-06-09 2009-11-24 Symantec Operating Corporation Automatic detection of backup recovery sets
US7313721B2 (en) * 2004-06-21 2007-12-25 Dot Hill Systems Corporation Apparatus and method for performing a preemptive reconstruct of a fault-tolerant RAID array
JP4488807B2 (ja) 2004-06-25 2010-06-23 株式会社日立製作所 ボリューム提供システム及び方法
JP2006032199A (ja) 2004-07-20 2006-02-02 Yazaki Corp 栓および栓付き防水コネクタ
US7058731B2 (en) 2004-08-03 2006-06-06 Hitachi, Ltd. Failover and data migration using data replication
US7526686B2 (en) 2004-08-04 2009-04-28 International Business Machines Corporation Apparatus, system, and method for active data verification in a storage system
US8046440B2 (en) * 2004-08-19 2011-10-25 International Business Machines Corporation Managing resources through user-facing web services aggregated in portals
US7650356B2 (en) 2004-08-24 2010-01-19 Microsoft Corporation Generating an optimized restore plan
GB0419599D0 (en) 2004-09-03 2004-10-06 Ibm Controlling preemptive work balancing in data storage
US7567974B2 (en) * 2004-09-09 2009-07-28 Microsoft Corporation Method, system, and apparatus for configuring a data protection system
US8010337B2 (en) 2004-09-22 2011-08-30 Microsoft Corporation Predicting database system performance
JP4507249B2 (ja) 2004-10-19 2010-07-21 株式会社日立製作所 記憶デバイスの更新を制御するシステム及び方法
US7945469B2 (en) * 2004-11-16 2011-05-17 Amazon Technologies, Inc. Providing an electronic marketplace to facilitate human performance of programmatically submitted tasks
US20060106774A1 (en) * 2004-11-16 2006-05-18 Cohen Peter D Using qualifications of users to facilitate user performance of tasks
US7933247B2 (en) 2004-11-18 2011-04-26 Sanjay M. Gidwani Real-time scalable wireless switching network
US7680771B2 (en) * 2004-12-20 2010-03-16 International Business Machines Corporation Apparatus, system, and method for database provisioning
US7979862B2 (en) * 2004-12-21 2011-07-12 Hewlett-Packard Development Company, L.P. System and method for replacing an inoperable master workload management process
US7676753B2 (en) 2005-01-07 2010-03-09 At&T Intellectual Property I, L.P. Methods, systems, devices and computer program products for collecting and sharing selected personal data
US8200700B2 (en) 2005-02-01 2012-06-12 Newsilike Media Group, Inc Systems and methods for use of structured and unstructured distributed data
US8347088B2 (en) 2005-02-01 2013-01-01 Newsilike Media Group, Inc Security systems and methods for use with structured and unstructured data
US7657780B2 (en) * 2005-02-07 2010-02-02 Mimosa Systems, Inc. Enterprise service availability through identity preservation
US7685292B1 (en) * 2005-04-07 2010-03-23 Dell Marketing Usa L.P. Techniques for establishment and use of a point-to-point tunnel between source and target devices
US7937547B2 (en) 2005-06-24 2011-05-03 Syncsort Incorporated System and method for high performance enterprise data protection
US8195976B2 (en) * 2005-06-29 2012-06-05 International Business Machines Corporation Fault-tolerance and fault-containment models for zoning clustered application silos into continuous availability and high availability zones in clustered systems during recovery and maintenance
US7599941B2 (en) * 2005-07-25 2009-10-06 Parascale, Inc. Transparent redirection and load-balancing in a storage network
CA2620131A1 (en) * 2005-08-23 2007-03-01 Mimosa Systems, Inc. Enterprise server version migration through identity preservation
US20070234028A1 (en) * 2005-09-15 2007-10-04 Rothman Michael A Method and apparatus for quickly changing the power state of a data processing system
US8863137B2 (en) 2005-09-23 2014-10-14 International Business Machines Corporation Systems and methods for automated provisioning of managed computing resources
US7801932B2 (en) * 2005-10-11 2010-09-21 Oracle International Corporation Undo hints to speed up segment extension and tuning of undo retention
US20070083586A1 (en) 2005-10-12 2007-04-12 Jianjun Luo System and method for optimized reciprocal operations
JP4668763B2 (ja) 2005-10-20 2011-04-13 株式会社日立製作所 ストレージ装置のリストア方法及びストレージ装置
US7882079B2 (en) * 2005-11-30 2011-02-01 Oracle International Corporation Database system configured for automatic failover with user-limited data loss
US7716180B2 (en) * 2005-12-29 2010-05-11 Amazon Technologies, Inc. Distributed storage system with web services client interface
US20070156872A1 (en) * 2005-12-30 2007-07-05 Stoyanova Dimitrina G Method and system for Web services deployment
US20070174429A1 (en) 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
JP4839091B2 (ja) * 2006-01-27 2011-12-14 株式会社日立製作所 データベース回復方法及び計算機システム
WO2007113533A1 (en) 2006-03-31 2007-10-11 British Telecommunications Public Limited Company Xml-based transfer and a local storage of java objects
JP2007279890A (ja) * 2006-04-04 2007-10-25 Hitachi Ltd バックアップシステム及びバックアップ方法
US20070244996A1 (en) 2006-04-14 2007-10-18 Sonasoft Corp., A California Corporation Web enabled exchange server standby solution using mailbox level replication
JP4939102B2 (ja) * 2006-04-21 2012-05-23 株式会社日立製作所 ネットワークブート計算機システムの高信頼化方法
US7613742B2 (en) * 2006-05-02 2009-11-03 Mypoints.Com Inc. System and method for providing three-way failover for a transactional database
US20070260693A1 (en) * 2006-05-05 2007-11-08 International Business Machines Corporation Method and apparatus for utilizing portable e-mail addresses
US20070271275A1 (en) * 2006-05-05 2007-11-22 Fassette Anthony M Database management function provider systems
US9384103B2 (en) * 2006-05-16 2016-07-05 Oracle International Corporation EJB cluster timer
US8381306B2 (en) * 2006-05-30 2013-02-19 Microsoft Corporation Translating role-based access control policy to resource authorization policy
US20070299828A1 (en) 2006-06-05 2007-12-27 Digital Mountain, Inc. Method and Apparatus for Processing Heterogeneous Data
US20070288526A1 (en) 2006-06-08 2007-12-13 Emc Corporation Method and apparatus for processing a database replica
JP4894362B2 (ja) * 2006-06-09 2012-03-14 富士通株式会社 稼働状況監視プログラム
WO2007146951A2 (en) 2006-06-12 2007-12-21 Zalag Corporation Methods and apparatus for searching content
WO2007148300A2 (en) 2006-06-20 2007-12-27 Gal Zuckerman Methods and systems for push-to-storage
US7636868B2 (en) * 2006-06-27 2009-12-22 Microsoft Corporation Data replication in a distributed system
JP5103807B2 (ja) 2006-06-30 2012-12-19 富士通株式会社 制御プログラム、制御方法、情報処理装置及び情報処理システム
JP2008009889A (ja) 2006-06-30 2008-01-17 Oki Data Corp 共有文書印刷装置及び共有文書印刷制御方法
US7725764B2 (en) 2006-08-04 2010-05-25 Tsx Inc. Failover system and method
US7822594B2 (en) 2006-08-07 2010-10-26 Voltaire Ltd. Service-oriented infrastructure management
US7761538B2 (en) 2006-08-30 2010-07-20 Microsoft Corporation Dynamically configuring, allocating and deploying computing systems
US8156082B2 (en) * 2006-10-06 2012-04-10 Sybase, Inc. System and methods for temporary data management in shared disk cluster
US8949826B2 (en) 2006-10-17 2015-02-03 Managelq, Inc. Control and management of virtual systems
US9015703B2 (en) 2006-10-17 2015-04-21 Manageiq, Inc. Enforcement of compliance policies in managed virtual systems
JP5244332B2 (ja) 2006-10-30 2013-07-24 株式会社日立製作所 情報システム、データ転送方法及びデータ保護方法
DE112007002682T5 (de) * 2006-11-06 2009-10-15 Dell Marketing USA L.P., Round Rock Ein System und Verfahren zum Verwalten von Daten über mehrere Umgebungen
US7917469B2 (en) * 2006-11-08 2011-03-29 Hitachi Data Systems Corporation Fast primary cluster recovery
US7949847B2 (en) 2006-11-29 2011-05-24 Hitachi, Ltd. Storage extent allocation method for thin provisioning storage
JP4314267B2 (ja) 2006-11-30 2009-08-12 キヤノン株式会社 アクセス制御装置およびアクセス制御方法及び印刷システム
US7844851B2 (en) 2006-12-13 2010-11-30 Oracle International Corporation System and method for protecting against failure through geo-redundancy in a SIP server
US8312323B2 (en) 2006-12-22 2012-11-13 Commvault Systems, Inc. Systems and methods for remote monitoring in a computer network and reporting a failed migration operation without accessing the data being moved
US8880480B2 (en) * 2007-01-03 2014-11-04 Oracle International Corporation Method and apparatus for data rollback
US20080189769A1 (en) 2007-02-01 2008-08-07 Martin Casado Secure network switching infrastructure
JP4338739B2 (ja) 2007-02-06 2009-10-07 シャープ株式会社 排紙トレイ装置
US20080195622A1 (en) * 2007-02-12 2008-08-14 Personeta Ltd. Service provisioning system
US8150904B2 (en) * 2007-02-28 2012-04-03 Sap Ag Distribution of data and task instances in grid environments
US8171485B2 (en) * 2007-03-26 2012-05-01 Credit Suisse Securities (Europe) Limited Method and system for managing virtual and real machines
US8219848B2 (en) * 2007-04-10 2012-07-10 International Business Machines Corporation Mechanism for recovery from site failure in a stream processing system
US20080263388A1 (en) * 2007-04-18 2008-10-23 James Robert Allen Method and apparatus for managing customer topologies
US8099727B2 (en) 2007-06-01 2012-01-17 Netapp, Inc. System and method for providing uninterrupted operation of a replication system during a software upgrade
US20090019535A1 (en) * 2007-07-10 2009-01-15 Ragingwire Enterprise Solutions, Inc. Method and remote system for creating a customized server infrastructure in real time
US20090025004A1 (en) 2007-07-16 2009-01-22 Microsoft Corporation Scheduling by Growing and Shrinking Resource Allocation
US7822892B2 (en) 2007-07-19 2010-10-26 International Business Machines Corporation Managing the copying of writes from primary storages to secondary storages across different networks
DE102007035584B4 (de) * 2007-07-30 2009-12-17 Texas Instruments Deutschland Gmbh Watchdog-Vorrichtung zur Überwachung eines elektronischen Systems
US7739243B2 (en) 2007-08-01 2010-06-15 International Business Machines Corporation System and method for dynamically configuring a multiplatform computing environment
US20090063807A1 (en) * 2007-08-29 2009-03-05 International Business Machines Corporation Data redistribution in shared nothing architecture
US8892719B2 (en) * 2007-08-30 2014-11-18 Alpha Technical Corporation Method and apparatus for monitoring network servers
US8549144B2 (en) * 2007-08-31 2013-10-01 International Business Machines Corporation Common configuration framework for applications to configure database objects and resources
US10997531B2 (en) 2007-09-11 2021-05-04 Ciambella Ltd. System, method and graphical user interface for workflow generation, deployment and/or execution
JP2009070143A (ja) * 2007-09-13 2009-04-02 Hitachi Ltd Nas装置の差分リモートバックアップにおけるデータ復旧方法及び計算機システム
EP2582092A3 (en) 2007-09-26 2013-06-12 Nicira, Inc. Network operating system for managing and securing networks
US20090089417A1 (en) 2007-09-28 2009-04-02 David Lee Giffin Dialogue analyzer configured to identify predatory behavior
US8423739B2 (en) 2008-02-06 2013-04-16 International Business Machines Corporation Apparatus, system, and method for relocating logical array hot spots
US8175863B1 (en) 2008-02-13 2012-05-08 Quest Software, Inc. Systems and methods for analyzing performance of virtual environments
US20090240880A1 (en) * 2008-03-21 2009-09-24 Hitachi, Ltd. High availability and low capacity thin provisioning
JP5075727B2 (ja) 2008-04-25 2012-11-21 株式会社日立製作所 ストリーム配信システム及び障害検知方法
US8041679B1 (en) * 2008-06-04 2011-10-18 Symantec Operating Corporation Synthetic differential backups creation for a database using binary log conversion
US8121981B2 (en) * 2008-06-19 2012-02-21 Microsoft Corporation Database snapshot management
US8904003B2 (en) 2008-06-30 2014-12-02 Oracle America, Inc. Method and system for delegated job control across a network
US8019732B2 (en) * 2008-08-08 2011-09-13 Amazon Technologies, Inc. Managing access of multiple executing programs to non-local block data storage
US8020037B1 (en) * 2008-09-23 2011-09-13 Netapp, Inc. Creation of a test bed for testing failover and failback operations
US8656018B1 (en) 2008-09-23 2014-02-18 Gogrid, LLC System and method for automated allocation of hosting resources controlled by different hypervisors
CN102246489B (zh) 2008-10-08 2014-05-28 思杰系统有限公司 对通过http的异步消息通信进行连接管理的系统和方法
US8392915B2 (en) 2008-11-19 2013-03-05 Oracle International Corporation Efficient volume manager hot swapping
US7941697B2 (en) 2008-12-30 2011-05-10 Symantec Operating Corporation Failure handling using overlay objects on a file system using object based storage devices
US8170997B2 (en) 2009-01-29 2012-05-01 Microsoft Corporation Unbundled storage transaction services
US9344401B2 (en) 2009-02-04 2016-05-17 Citrix Systems, Inc. Methods and systems for providing translations of data retrieved from a storage system in a cloud computing environment
US9208188B2 (en) 2009-02-17 2015-12-08 Microsoft Technology Licensing, Llc Tenant management of a hosted multi-tenant application
US8307003B1 (en) 2009-03-31 2012-11-06 Amazon Technologies, Inc. Self-service control environment
US8060792B2 (en) 2009-03-31 2011-11-15 Amazon Technologies, Inc. Monitoring and automated recovery of data instances
US8332365B2 (en) 2009-03-31 2012-12-11 Amazon Technologies, Inc. Cloning and recovery of data volumes
US9705888B2 (en) 2009-03-31 2017-07-11 Amazon Technologies, Inc. Managing security groups for data instances
US9207984B2 (en) 2009-03-31 2015-12-08 Amazon Technologies, Inc. Monitoring and automatic scaling of data volumes
US8713060B2 (en) 2009-03-31 2014-04-29 Amazon Technologies, Inc. Control service for relational data management
US8001425B2 (en) 2009-04-08 2011-08-16 Hewlett-Packard Development Company, L.P, Preserving state information of a storage subsystem in response to communication loss to the storage subsystem
US8601534B2 (en) 2009-07-02 2013-12-03 Samsung Electronics Co., Ltd. Securely using service providers in elastic computing systems and environments
US9135283B2 (en) 2009-10-07 2015-09-15 Amazon Technologies, Inc. Self-service configuration for data environment
US8150808B2 (en) * 2009-10-21 2012-04-03 Delphix Corp. Virtual database system
US8335765B2 (en) 2009-10-26 2012-12-18 Amazon Technologies, Inc. Provisioning and managing replicated data instances
US8074107B2 (en) 2009-10-26 2011-12-06 Amazon Technologies, Inc. Failover and recovery for replicated data instances
US8676753B2 (en) 2009-10-26 2014-03-18 Amazon Technologies, Inc. Monitoring of replicated data instances
US8788459B2 (en) 2012-05-15 2014-07-22 Splunk Inc. Clustering for high availability and disaster recovery

Also Published As

Publication number Publication date
EP2494439A4 (en) 2015-11-18
US20180026867A1 (en) 2018-01-25
US20140201363A1 (en) 2014-07-17
CA2778723C (en) 2016-03-29
CN102640108A (zh) 2012-08-15
US11477105B2 (en) 2022-10-18
JP2013508884A (ja) 2013-03-07
EP3287903A1 (en) 2018-02-28
WO2011053595A1 (en) 2011-05-05
EP2494439B1 (en) 2017-10-18
EP3287903B1 (en) 2019-07-17
US8676753B2 (en) 2014-03-18
CA2778723A1 (en) 2011-05-05
US9806978B2 (en) 2017-10-31
US20110099146A1 (en) 2011-04-28
CN102640108B (zh) 2016-02-24
EP2494439A1 (en) 2012-09-05

Similar Documents

Publication Publication Date Title
US11714726B2 (en) Failover and recovery for replicated data instances
JP5443614B2 (ja) 複製されたデータインスタンスのモニタリング
US8631283B1 (en) Monitoring and automated recovery of data instances
US8335765B2 (en) Provisioning and managing replicated data instances

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130716

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130723

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131022

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131119

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131219

R150 Certificate of patent or registration of utility model

Ref document number: 5443614

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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