(57)【特許請求の範囲】
【請求項１】
冗長システムにおいて、
第１のノードと、
第１のシステム内転送路を介して前記第１のノードにおけるデータ更新に応じて生成される第１のデータ更新情報を取得する第２のノードと、
を含む正系システムと、
前記第１のノードとの間で第１のシステム間転送路が設定され、該第１のシステム間転送路を介して前記第１のノードにおけるデータ更新に応じて生成される第２のデータ更新情報を定期的に取得する第３のノードと、
前記第２のノードとの間で第２のシステム間転送路が設定され、前記第２のノードが取得した前記第１のデータ更新情報を該第２のシステム間転送路を介して定期的に取得可能であるとともに、前記第３のノードが取得した前記第２のデータ更新情報を第２のシステム内転送路を介して取得可能であり、前記第１のデータ更新情報と前記第２のデータ更新情報とを保持する第４のノードと、
を含む副系システムと、
を備え、
前記副系システムを前記正系システムの代替として動作させる際に、前記第４のノードは、前記第２のシステム間転送路と前記第２のシステム内転送路とのうちいずれか一方から取得したデータ更新情報に基づいて前記正系システムを引き継ぐ第１の引き継ぎ処理と、前記第２のシステム間転送路から取得したデータ更新情報と前記第２のシステム内転送路から取得したデータ更新情報との双方に基づいて前記正系システムを引き継ぐ第２の引き継ぎ処理とのいずれの処理も実行可能であり、
前記第２の引き継ぎ処理は、前記第２のシステム間転送路から取得した前記第１のデータ更新情報と前記第２のシステム内転送路から取得した前記第２のデータ更新情報とを比較し、前記第１のデータ更新情報が最新である場合、前記第３のノードが前記正系システムのミラーノードに降格し、前記第４のノードが前記正系システムのマスタノードに昇格し、前記第２のデータ更新情報が最新である場合、前記第３のノードが前記正系システムのマスタノードに昇格し、前記第４のノードが前記正系システムのミラーノードに昇格する引き継ぎ処理を実行する、
ことを特徴とする冗長システム。
【請求項２】
前記第１の引き継ぎ処理は、前記第３のノードと前記第４のノードとの間での主従の切替えは行わない一方、前記第２の引き継ぎ処理は、前記第３のノードと前記第４のノードとの間での主従の切替えを実行することを特徴とする請求項１記載の冗長システム。
【請求項３】
前記第１の引き継ぎ処理は前記正系システムの保守に伴う引き継ぎ処理であり、前記第２の引き継ぎ処理は前記正系システムの異常停止に伴う引き継ぎ処理であることを特徴とする請求項１記載の冗長システム。
【請求項４】
前記第２の引き継ぎ処理は、取り込まれた前記データ更新情報の前記第４のノードの記憶データへの反映完了に応じて、前記副系システムを正系システムに昇格させることを含むことを特徴とする請求項１記載の冗長システム。
【請求項５】
冗長システムにおいて、
第１のノードと、
第１のシステム内転送路を介して前記第１のノードにおけるデータ更新に応じて生成される第１のデータ更新情報を取得する第２のノードと、
を含む正系システムと、
前記第１のノードとの間で第１のシステム間転送路が設定され、該第１のシステム間転送路を介して前記第１のノードにおけるデータ更新に応じて生成される第２のデータ更新情報を定期的に取得する第３のノードと、
前記第２のノードとの間で第２のシステム間転送路が設定され、前記第２のノードが取得した前記第１のデータ更新情報を該第２のシステム間転送路を介して定期的に取得可能であるとともに、前記第３のノードが取得した前記第２のデータ更新情報を第２のシステム内転送路を介して取得可能であり、前記第１のデータ更新情報と前記第２のデータ更新情報とを保持する第４のノードと、
を含む副系システムと、
を備え、
前記副系システムを前記正系システムの代替として動作させる際に、前記第４のノードが、前記第２のシステム間転送路と前記第２のシステム内転送路とのうちいずれか一方から取得したデータ更新情報に基づいて前記正系システムを引き継ぐ第１の引き継ぎ処理と、前記第２のシステム間転送路から取得したデータ更新情報と前記第２のシステム内転送路から取得したデータ更新情報との双方に基づいて前記正系システムを引き継ぐ第２の引き継ぎ処理とのいずれの処理も含み、
前記第２の引き継ぎ処理は、前記第２のシステム間転送路から取得した前記第１のデータ更新情報と前記第２のシステム内転送路から取得した前記第２のデータ更新情報とを比較し、前記第１のデータ更新情報が最新である場合、前記第３のノードが前記正系システムのミラーノードに降格し、前記第４のノードが前記正系システムのマスタノードに昇格し、前記第２のデータ更新情報が最新である場合、前記第３のノードが前記正系システムのマスタノードに昇格し、前記第４のノードが前記正系システムのミラーノードに昇格する引き継ぎ処理を実行する、
ことを特徴とする冗長化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、冗長システムおよび冗長化方法に関する。
【背景技術】
【０００２】
データセンタには、Ｗｅｂサーバ、アプリケーションサーバ、ＤＢ（DataBase）サーバなどの各種ノードが設置され、各ノードは、災害や障害に備えて冗長化されることが一般的である。
【０００３】
例えば、データセンタ内のノードについて正系のノードと副系のノードとを用意し、正系のノードが故障した場合、故障した正系のノードに代わり副系のノードが、故障した正系のノードの処理を引き継ぎ、処理を継続する冗長化技術が知られている。
【０００４】
また、正系のデータセンタのバックアップ用の副系のデータセンタを設け、正系のデータセンタが被災した場合に、バックアップ用の副系のデータセンタが処理を引き継ぎ、正系のデータセンタで実行される処理を継続する技術が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１３４９８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
正系のデータセンタの代替として副系のデータセンタが処理を引き継ぐ場合、データセンタの切替えに伴うデータロスを抑止する必要がある。副系のデータセンタへの切替えが必要となる事由はその時々に応じて異なり、切替えの事由によらず一律の切替え制御が実行される態様では、より多くのデータロスが発生するおそれがある。
【０００７】
１つの側面では、データロスの発生を抑制した切替を実行することができる冗長システムおよび冗長化方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
第１の案では、冗長システムは、第１のノードと、第１のシステム内転送路を介して前記第１のノードにおけるデータ更新に応じて生成されるデータ更新情報を取得する第２のノードと、を含む正系システムを備える。冗長システムは、前記第１のノードとの間で第１のシステム間転送路が設定され、該第１のシステム間転送路を介して前記第１のノードにおけるデータ更新に応じて生成されるデータ更新情報を取得する第３のノードと、前記第２のノードとの間で第２のシステム間転送路が設定され、前記第２のノードが取得した前記データ更新情報を該第２のシステム間転送路を介して取得可能であるとともに、前記第３のノードが取得した前記データ更新情報を第２のシステム内転送路を介して取得可能な第４のノードと、含む副系システムを備える。前記副系システムを前記正系システムの代替として動作させる際に、前記第４のノードは、前記第２のシステム間転送路と前記第２のシステム内転送路とのうちいずれか一方から取得したデータ更新情報に基づいて前記正系システムを引き継ぐ第１の引き継ぎ処理と、前記第２のシステム間転送路から取得したデータ更新情報と前記第２のシステム内転送路から取得したデータ更新情報との双方に基づいて前記正系システムを引き継ぐ第２の引き継ぎ処理とのいずれの処理も実行可能である。
【発明の効果】
【０００９】
１つの側面では、データロスの発生を抑制した切替を実行することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例１に係る冗長化システムの全体構成例を示す図である。
【図２】図２は、正センタの各ノードの機能構成を示す機能ブロック図である。
【図３】図３は、ユーザログ例を示す図である。
【図４】図４は、制御ログ例を示す図である。
【図５】図５は、リカバリポイントログ例を示す図である。
【図６】図６は、システム間通信で送信される更新ファイルの例を示す図である。
【図７】図７は、副センタの各ノードの機能構成を示す機能ブロック図である。
【図８】図８は、正マスタノードから正ミラーノードへの通知処理の流れを示すフローチャートである。
【図９】図９は、正マスタノードから副マスタノードへの通知処理の流れを示すフローチャートである。
【図１０】図１０は、正ミラーノードが実行する更新処理の流れを示すフローチャートである。
【図１１】図１１は、正ミラーノードが実行する通知処理の流れを示すフローチャートである。
【図１２】図１２は、副マスタノードが実行する更新および通知処理の流れを示すフローチャートである。
【図１３】図１３は、副ミラーノードが実行する更新処理の流れを示すフローチャートである。
【図１４】図１４は、冗長化システムの系切替例１を説明する図である。
【図１５】図１５は、冗長化システムの系切替例２を説明する図である。
【図１６】図１６は、副ミラーノードが実行する系切替処理の流れを示すフローチャートである。
【図１７】図１７は、ハードウェア構成例を説明する図である。
【発明を実施するための形態】
【００１１】
以下に、本願の開示する冗長システムおよび冗長化方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１２】
［全体構成例］
図１は、実施例１に係る冗長化システムの全体構成例を示す図である。図１に示すように、このシステムは、ＤＢ４重化機能を実行してデータセンタがミラーリングされた冗長化システムであり、データセンタである正センタ１および副センタ５を有する。
【００１３】
正センタ１は、正マスタノード１０と正ミラーノード２０とを有するデータセンタであり、ＤＢのミラーリングを実行する冗長化構成を有する。同様に、副センタ５は、副マスタノード５０と副ミラーノード６０とを有するデータセンタであり、ＤＢのミラーリングを実行する冗長化構成を有する。この副センタ５は、正センタ１のバックアップとして機能する。なお、各ノードは、ＤＢサーバやストレージシステムなどの一例である。
【００１４】
正マスタノード１０は、業務による更新が行われる現用ＤＢ１２を有する第１のノードの一例であり、通常運用時は正系ノードとして起動する。正マスタノード１０は、業務アプリケーション等によって現用ＤＢ１２を更新すると、更新前後の差分などを示す更新情報を抽出する。例えば、正マスタノード１０は、更新された内容を示す更新ログを、現用ＤＢ１２の更新に同期して正ミラーノード２０に送信する。また、正マスタノード１０は、複数の更新ログで構成される更新ファイルを生成して、所定の間隔で副マスタノード５０に送信する。
【００１５】
正ミラーノード２０は、現用ＤＢ１２と同期して更新される待機ＤＢ２２を有する第２のノードの一例であり、通常運用時は正マスタノード１０のバックアップとして機能する。正ミラーノード２０は、第１のシステム内転送路を介して正マスタノード１０におけるデータ更新に応じて生成される更新情報である更新ログを受信する。そして、正ミラーノード２０は、受信した更新ログを用いて待機ＤＢ２２を更新する。その後、正ミラーノード２０は、正マスタノード１０から受信した更新ログで構成される更新ファイルを生成して、所定の間隔で副ミラーノード６０に送信する。
【００１６】
副マスタノード５０は、現用ＤＢ１２と同等の情報を記憶する待機ＤＢ５２を有する第３のノードの一例であり、通常運用時は、正センタ１の災害等の対策として、副系システムのマスタノードとして機能する。副マスタノード５０は、正マスタノード１０との間で第１のシステム間転送路が設定され、第１のシステム間転送路を介して正マスタノード１０におけるデータ更新に応じて生成される更新情報を取得する。
【００１７】
例えば、副マスタノード５０は、正マスタノード１０から更新情報として更新ファイルを受信すると、受信した更新ファイルから更新ログを抽出し、抽出した各更新ログを用いて待機ＤＢ５２を更新する。その後、副マスタノード５０は、正マスタノード１０から受信した複数の更新ログで構成される更新ファイルを生成して、所定の間隔で副ミラーノード６０に送信する。
【００１８】
副ミラーノード６０は、現用ＤＢ１２と同等の情報を記憶する待機ＤＢ６２を有する第４のノードの一例であり、通常運用時は、正センタ１の災害等の対策として、副系システムのミラーノードとして機能する。副ミラーノード６０は、正ミラーノード２０との間で第２のシステム間転送路が設定され、正ミラーノード２０が取得したデータの更新情報を第２のシステム間転送路を介して取得する。また、副ミラーノード６０は、副マスタノード５０が取得したデータの更新情報を第２のシステム内転送路を介して取得する。
【００１９】
例えば、副ミラーノード６０は、正ミラーノード２０から更新情報として更新ファイルを受信するとともに、副マスタノード５０から更新ログを受信する。そして、副ミラーノード６０は、受信したいずれかの更新情報を用いて、待機ＤＢ６２を更新する。
【００２０】
このような状態において、副センタ５を正センタ１の代替として動作させる際に、副ミラーノード６０は、第２のシステム間転送路と第２のシステム内転送路とのうちいずれか一方から取得したデータ更新情報に基づいて正センタ１を引き継ぐ第１の引き継ぎ処理と、第２のシステム間転送路から取得したデータ更新情報と第２のシステム内転送路から取得したデータ更新情報との双方に基づいて正センタ１を引き継ぐ第２の引き継ぎ処理とのいずれの処理も実行可能である。
【００２１】
つまり、ＤＢ４重化システムにおける副ミラーノード６０は、正マスタノード１０からの現用ＤＢ１２の更新情報を、正ミラーノード２０からと副マスタノード５０からの２系統から受信する。そして、副ミラーノード６０は、正系システムが保守時の時は、２系統で受信した更新情報のうち、任意の更新情報を用いて待機ＤＢ６２を更新した後、系切替を実行する。一方、副ミラーノード６０は、正系システムがシステムダウンした時は、２系統で受信した更新情報のうち、最新の更新情報を用いて待機ＤＢ６２を更新した後、系切替を実行する。
【００２２】
この結果、系切替が発生した場合でも、データロスの発生を抑制した切替を実行することができる。
【００２３】
［各ノードの機能構成］
次に、図１に示した各ノードの機能構成について説明する。ここでは、一例として、図１の状態における機能構成について説明するが、これに限定されるものではなく、各ノードが同じ機能構成を有することもできる。
【００２４】
［正センタの機能構成］
図２は、正センタの各ノードの機能構成を示す機能ブロック図である。ここでは、正センタ１が有する正マスタノード１０と正ミラーノード２０とについて説明する。
【００２５】
（正マスタノードの機能構成）
図２に示すように、正マスタノード１０は、通信制御部１１、ＤＢ１２、制御部１３を有する。
【００２６】
通信制御部１１は、正ミラーノード２０および副マスタノード５０との間の通信を制御する処理部であり、例えばネットワークインタフェースなどである。例えば、通信制御部１１は、正ミラーノード２０と第１のシステム内転送路を構築し、副マスタノード５０と第１のシステム間転送路を構築する。
【００２７】
ＤＢ１２は、業務情報などを記憶するデータベースであり、図１に示した現用ＤＢ１２に該当する。このＤＢ１２は、業務による更新が行われる。このＤＢ１２は、例えばハードディスクなどの記憶装置に設けられる。
【００２８】
制御部１３は、正マスタノード１０全体の処理を司る処理部であり、例えばプロセッサなどの一例である。この制御部１３は、正マスタノード１０と正ミラーノード２０とのＤＢ冗長化システムを実現する機能を実行し、正マスタノード１０と副マスタノード５０とのＤＢ冗長化システムを実現する機能を実行する。
【００２９】
すなわち、制御部１３は、正センタ１内のＤＢ２重化機能を実現するアプリケーションと、センタ間を跨ったＤＢ４重化を実現するアプリケーションを実行する。また、制御部１３は、ノードの保守が行われる際、ＤＢ１２における更新済みの更新情報を正ミラーノード２０と副マスタノード５０のそれぞれにすべて送信してから、保守モード等へ移行する。なお、制御部１３は、保守モードへ移行した通知を、更新情報と同じ経路で各ノードに通知することもできる。
【００３０】
この制御部１３は、ＤＢ更新部１４、センタ内通知部１５、挿入部１６、センタ間通知部１７を有する。これらの処理部は、プロセッサが有する電子回路やプロセッサが実行するプロセスの一例である。
【００３１】
ＤＢ更新部１４は、ＤＢ１２を更新する処理部である。例えば、ＤＢ更新部１４は、アプリケーションの実行等に伴って、ＤＢ１２の記憶データを更新する。
【００３２】
センタ内通知部１５は、ＤＢ１２の更新に同期させて、ＤＢ１２の更新情報を同一システム内の正ミラーノード２０に送信する処理部である。具体的には、センタ内通知部１５は、ＤＢ１２が更新されると、更新前後の情報から差分を抽出する。そして、センタ内通知部１５は、第１のシステム内転送路を用いて、更新情報として差分情報を示す更新ログを正ミラーノード２０に送信する。
【００３３】
ここで、更新ログの例について説明する。図３は、ユーザログ例を説明する図であり、図４は、制御ログ例を示す図である。図３に示すように、更新ログの一例であるユーザログは、ＤＢの更新情報を示すログであり、「ヘッダ、ユーザログ表示、可変長部、可変長部２、ＢＣキー情報」から構成される。
【００３４】
「ヘッダ」には、更新ログを示す情報や生成日時等が設定され、「ユーザログ表示」には、ユーザログであることを示す情報が設定される。「可変長部」および「可変長部２」には、ＤＢの更新内容を示す情報であり、例えば具体的なレコード位置、更新前後のデータ、差分情報などである。「ＢＣキー情報」は、正マスタノード１０と正ミラーノード２０とのＤＢ２重化に関する情報が設定され、例えばチェックサムの情報やログの通番などが設定される。
【００３５】
図４に示すように、更新ログの一例である制御ログは、例えばロールバック処理などのＤＢへの制御処理を示すログであり、「ヘッダ、制御ログ表示、ＣＯＭＭＩＴ指定」から構成される。「ヘッダ」には、更新ログを示す情報や生成日時等が設定され、「制御ログ表示」には、制御ログであることを示す情報が設定される。「ＣＯＭＭＩＴ指定」は、具体的な制御処理を示す情報であり、例えばトランザクションの情報などが設定される。
【００３６】
上述したように、センタ内通知部１５は、ＤＢ１２が更新されると、更新された情報によって上記ユーザログまたは制御ログなどの更新ログを生成する。そして、センタ内通知部１５は、生成した更新ログを正ミラーノード２０に送信する。また、センタ内通知部１５は、生成した更新ログをセンタ間通知部１７に通知する。すなわち、センタ内通知部１５は、同一センタ内では、ＤＢ１２の更新と同期させてＤＢの更新情報を通知する。
【００３７】
挿入部１６は、正マスタノード１０におけるＤＢのデータ更新に応じて生成される更新情報を正ミラーノード２０と、副マスタノード５０とに送信する際に、１又は複数の更新処理単位の境界を示す区切り情報を双方の送信データに挿入する処理部である。
【００３８】
具体的には、挿入部１６は、更新ログの到達状況を判断する、各ノードで共通の判断情報であるチェックポイントを定期的に生成する。そして、挿入部１６は、定期的に生成したチェックポイントを正ミラーノード２０に送信し、センタ間通知部１７に通知する。なお、ここでのチェックポイントには、更新ログの一例であるリカバリポイントログが使用される。また、定期的の一例としては、例えば５秒などと設定することができるが、チェックポイント生成の時間間隔は適宜変更してよい。
【００３９】
図５は、リカバリポイントログ例を示す図である。図５に示すように、リカバリポイントログは、更新ログの到達状況を判断するチェックポイントを示すログであり、「ヘッダ、制御ログ表示、ＲＰ情報」から構成される。「ヘッダ」は、更新ログを示す情報や生成日時等が設定され、「制御ログ表示」には、リカバリポイントログであることを示す情報が設定される。「ＲＰ情報」は、リカバリポイントを特定する情報であり、「識別子」と「通番」とを含む。「識別子」は、ＤＢ４重化機能のチェックポイント情報であることを特定する情報であり、「通番」は、２３バイトの固定の正数であり、ＤＢ４重化システム内で一意の通番となり、例えば数字が大きい方がより新しいログであることを示す。
【００４０】
センタ間通知部１７は、ＤＢ１２の更新情報をまとめて、異なるシステムの副マスタノード５０に定期的に送信する処理部である。具体的には、センタ間通知部１７は、例えば１０秒間隔で、センタ内通知部１５から取得した更新ログと挿入部１６から取得したリカバリポイントログとを時系列の順でまとめた更新ファイルを生成する。そして、センタ間通知部１７は、第１のシステム間転送路を用いて、更新ファイルを副マスタノード５０に送信する。すなわち、センタ間通知部１７は、異なるセンタ間では、ＤＢの更新情報およびチェックポイントを定期的にまとめた更新情報を生成し、ＤＢ１２の更新と非同期で通知する。
【００４１】
図６は、システム間通信で送信される更新ファイルの例を示す図である。図６に示すように、更新ファイルは、更新ログやリカバリポイントログから構成される。図６の例では、更新ログ１、更新ログ２、リカバリポイントログ１などが含まれており、この順にログが生成されたことを示す。なお、更新ログ１や更新ログ２は、上述したユーザログや制御ログに該当し、リカバリポイントログ１は、上述したリカバリポイントログに該当する。
【００４２】
（正ミラーノードの機能構成）
図２に示すように、正ミラーノード２０は、通信制御部２１、ＤＢ２２、制御部２３を有する。
【００４３】
通信制御部２１は、正マスタノード１０および副ミラーノード６０との間の通信を制御する処理部であり、例えばネットワークインタフェースなどである。例えば、通信制御部２１は、正マスタノード１０と第１のシステム内転送路を構築し、副ミラーノード６０と第２のシステム間転送路を構築する。
【００４４】
ＤＢ２２は、正マスタノード１０のＤＢ１２と同様の業務情報などを記憶するデータベースであり、図１に示した待機ＤＢ２２に該当する。このＤＢ２２は、ＤＢ１２と同期して更新される。なお、ＤＢ２２は、例えばハードディスクなどの記憶装置に設けられる。
【００４５】
制御部２３は、正ミラーノード２０全体の処理を司る処理部であり、例えばプロセッサなどの一例である。この制御部２３は、正マスタノード１０と正ミラーノード２０とのＤＢ冗長化システムを実現する機能を実行し、正ミラーノード２０と副ミラーノード６０とのＤＢ冗長化システムを実現する機能を実行する。すなわち、制御部２３は、正センタ１内のＤＢ２重化機能を実現するアプリケーションと、センタ間を跨ったＤＢ４重化を実現するアプリケーションを実行する。
【００４６】
なお、制御部２３は、ノードの保守が行われる際、正マスタノード１０から受信した更新情報を副ミラーノード６０にすべて送信してから、保守モード等へ移行する。なお、制御部２３は、保守モードへ移行した通知を、更新情報を同じ経路で各ノードに通知することもできる。
【００４７】
この制御部２３は、受信部２４、ＤＢ更新部２５、センタ間通知部２６を有する。これらの処理部は、プロセッサが有する電子回路やプロセッサが実行するプロセスの一例である。
【００４８】
受信部２４は、正マスタノード１０からＤＢ１２の更新情報を受信する処理部である。具体的には、受信部２４は、第１のシステム内転送路を用いて、正マスタノード１０のＤＢ１２の更新と同期した更新ログを受信し、ＤＢ更新部２５およびセンタ間通知部２６に通知する。また、受信部２４は、リカバリポイントログを受信すると、センタ間通知部２６に通知する。
【００４９】
ＤＢ更新部２５は、正マスタノード１０から通知されるデータの更新情報を用いて、ＤＢ２２を更新する処理部である。例えば、ＤＢ更新部２５は、受信された更新ログの可変長部等から更新対象のレコードや更新後のデータなどを抽出し、抽出した情報にしたがってＤＢ２２を更新する。ＤＢ更新部２５は、更新ログが受信されるたびにＤＢ２２を更新する。この結果、ＤＢ２２は、正マスタノード１０のＤＢ１２と同期することができ、ミラーリングＤＢとして機能する。
【００５０】
センタ間通知部２６は、ＤＢ２２の更新情報をまとめて、異なるシステムの副ミラーノード６０に定期的に送信する処理部である。具体的には、センタ間通知部２６は、例えば１０秒間隔で、正マスタノード１０から受信した更新ログやリカバリポイントログを時系列の順でまとめた更新ファイルを生成する。そして、センタ間通知部２６は、第２のシステム間転送路を用いて、更新ファイルを副ミラーノード６０に送信する。例えば、センタ間通知部２６は、図６に示した更新ファイルを生成し、副ミラーノード６０に送信する。
【００５１】
［副センタの機能構成］
図７は、副センタの各ノードの機能構成を示す機能ブロック図である。ここでは、副センタ５が有する副マスタノード５０と副ミラーノード６０とについて説明する。
【００５２】
（副マスタノードの機能構成）
図７に示すように、副マスタノード５０は、通信制御部５１、ＤＢ５２、制御部５３を有する。
【００５３】
通信制御部５１は、正マスタノード１０および副ミラーノード６０との間の通信を制御する処理部であり、例えばネットワークインタフェースなどである。例えば、通信制御部５１は、正マスタノード１０と第１のシステム間転送路を構築し、副ミラーノード６０と第２のシステム内転送路を構築する。
【００５４】
ＤＢ５２は、業務情報などを記憶するデータベースであり、図１に示した待機ＤＢ５２に該当する。このＤＢ５２は、ＤＢ１２の更新とは非同期で、正マスタノード１０から通知される更新情報によって更新される。なお、ＤＢ５２は、例えばハードディスクなどの記憶装置に設けられる。
【００５５】
制御部５３は、副マスタノード５０全体の処理を司る処理部であり、例えばプロセッサなどの一例である。この制御部５３は、図１に示したセンタ間を跨ったＤＢ４重化システム全体を実現するアプリケーションを実行し、副センタ５内のＤＢ２重化機能を実現するアプリケーションを実行する。
【００５６】
この制御部５３は、受信部５４、ＤＢ更新部５５、センタ内通知部５６、切替制御部５７を有する。これらの処理部は、プロセッサが有する電子回路やプロセッサが実行するプロセスの一例である。
【００５７】
受信部５４は、正マスタノード１０からＤＢ１２の更新情報を受信する処理部である。具体的には、受信部５４は、第１のシステム間転送路を用いて、更新ログから構成される更新ファイルを所定の間隔で受信する。そして、受信部５４は、受信した更新ファイルをＤＢ更新部５５に出力する。
【００５８】
ＤＢ更新部５５は、正マスタノード１０から通知されるデータの更新情報にしたがって、ＤＢ５２を更新する処理部である。例えば、ＤＢ更新部５５は、受信部５４が受信した更新ファイルから、更新ファイルを構成する各種ログを抽出する。
【００５９】
そして、ＤＢ更新部５５は、抽出したログのうち、ユーザログおよび制御ログを特定する。その後、ＤＢ更新部５５は、ログが生成された時系列順で、ユーザログまたは制御ログによって特定されるデータ更新をＤＢ５２に反映する。また、ＤＢ更新部５５は、更新ファイルから各種ログを抽出すると、時系列の順で、抽出した各ログをセンタ内通知部５６に出力する。
【００６０】
例えば、図６の更新ファイルを受信したとすると、ＤＢ更新部５５は、更新ファイルから更新ログ１、更新ログ２、リカバリポイントログ１を抽出する。そして、ＤＢ更新部５５は、まず更新ログ１で特定されるデータ更新をＤＢ５２に反映した後、次に更新ログ２で特定されるデータ更新をＤＢ５２に反映させる。一方で、ＤＢ更新部５５は、抽出した更新ログ１、更新ログ２、リカバリポイントログ１をセンタ内通知部５６に出力する。
【００６１】
センタ内通知部５６は、ＤＢ５２へ反映させたデータの更新情報を副ミラーノード６０に送信する処理部である。具体的には、センタ内通知部５６は、正マスタノード１０から受信した更新ログおよびリカバリポイントログを、各ログが生成された時系列で、第２のシステム内転送路を用いて副ミラーノード６０に送信する。
【００６２】
上述した例で説明すると、センタ内通知部５６は、ＤＢ更新部５５から、更新ログ１、更新ログ２、リカバリポイントログ１を順に受信する。すると、センタ内通知部５６は、まず更新ログ１を副ミラーノード６０に送信し、次に更新ログ２を副ミラーノード６０に送信し、最後にリカバリポイントログ１を副ミラーノード６０に送信する。
【００６３】
切替制御部５７は、図示しない管理者端末や他ノードから受信したノードの停止情報にしたがって、系切替などを実行する処理部である。例えば、切替制御部５７は、正センタ１が保守によって停止する場合、正マスタノード１０からの更新情報を全て受信してＤＢ５２反映させた後、正系のマスタノードに昇格する。すなわち、切替制御部５７は、ＤＢ更新部５５にマスタノードへの昇格を通知し、ＤＢ更新部５５は、業務アプリケーションなどを実行して、ＤＢ５２を更新する。
【００６４】
また、切替制御部５７は、正センタ１のシステムダウンに伴って、副ミラーノード６０からミラーへの降格指示を受信した場合、正系のミラーノードに降格する。すなわち、切替制御部５７は、センタ内通知部５６に、第２のシステム内転送路による送信処理を停止するとともに、ＤＢ更新部５５に、副ミラーノードとして更新処理の開始を指示する。この結果、ＤＢ更新部５５は、副ミラーノード６０から更新情報を受信してＤＢ５２を更新する。
【００６５】
（副ミラーノードの機能構成）
図７に示すように、副ミラーノード６０は、通信制御部６１、ＤＢ６２、バッファ６３、制御部６４を有する。
【００６６】
通信制御部６１は、正ミラーノード２０および副マスタノード５０との間の通信を制御する処理部であり、例えばネットワークインタフェースなどである。例えば、通信制御部６１は、正ミラーノード２０と第２のシステム間転送路を構築し、副マスタノード５０と第２のシステム内転送路を構築する。
【００６７】
ＤＢ６２は、業務情報などを記憶するデータベースであり、図１に示した待機ＤＢ６２に該当する。このＤＢ６２は、正マスタノード１０のＤＢ１２の更新とは非同期で、正マスタノード１０から通知される更新情報によって更新される。一方で、ＤＢ６２は、副マスタノード５０のＤＢ５２の更新とは同期して更新される。なお、ＤＢ６２は、例えばハードディスクなどの記憶装置に設けられる。
【００６８】
バッファ６３は、第２のシステム間転送を用いて正ミラーノード２０から受信された更新情報や第２のシステム内転送路を用いて副マスタノード５０から受信された更新情報を一時的に記憶する記憶領域である。なお、バッファ６３は、例えばハードディスクやメモリなどの記憶装置に設けられる。
【００６９】
制御部６４は、副ミラーノード６０全体の処理を司る処理部であり、例えばプロセッサなどの一例である。この制御部６４は、図１に示したセンタ間を跨ったＤＢ４重化システム全体を実現するアプリケーションを実行し、副センタ５内のＤＢ２重化機能を実現するアプリケーションを実行する。
【００７０】
この制御部６４は、センタ内受信部６５、センタ間受信部６６、ＤＢ更新部６７、切替制御部６８を有する。これらの処理部は、プロセッサが有する電子回路やプロセッサが実行するプロセスの一例である。
【００７１】
センタ内受信部６５は、副マスタノード５０からデータの更新情報を受信する処理部である。具体的には、センタ内受信部６５は、第２のシステム内転送路を用いて、副マスタノード５０から更新ログやリカバリポイントログを受信し、ログの生成日時の時系列順でバッファ６３に格納する。上記例で説明すると、センタ内受信部６５は、副マスタノード５０から、更新ログ１、更新ログ２、リカバリポイントログ１を順に受信し、受信した順番でバッファ６３に格納する。
【００７２】
センタ間受信部６６は、正ミラーノード２０からデータの更新情報を受信する処理部である。具体的には、センタ間受信部６６は、第２のシステム間転送路を用いて、正ミラーノード２０から、更新ログやリカバリポイントログで構成される更新ファイルを受信する。そして、センタ間受信部６６は、更新ファイルから各種ログを抽出し、生成日時の順にバッファ６３に格納する。
【００７３】
ＤＢ更新部６７は、受信された更新情報を用いて、ＤＢ６２を更新する処理部である。具体的には、ＤＢ更新部６７は、センタ内受信部６５によって受信された更新ログを、更新ログの生成順でバッファ６３から読み出し、読み出した更新ログにしたがって、ＤＢ６２を順次更新する。
【００７４】
また、ＤＢ更新部６７は、後述する切替制御部６８からの指示によって、系切替におけるＤＢ更新処理を選択して実行する。例えば、ＤＢ更新部６７は、切替制御部６８から正センタ１の保守開始が通知された場合、センタ内受信部６５によって受信された更新情報またはセンタ間受信部６６によって受信された更新情報のうちいずれかの更新情報を用いて、ＤＢ６２を更新する。その後、ＤＢ更新部６７は、正系システムのミラーノードとして動作する系切替を実行する。すなわち、ＤＢ更新部６７は、系切替開始後はセンタ内受信部６５によって受信された更新情報を用いて、ＤＢ６２を更新する。
【００７５】
一方、ＤＢ更新部６７は、切替制御部６８から正センタ１のシステムダウンが通知された場合、センタ内受信部６５によって受信された更新情報またはセンタ間受信部６６によって受信された更新情報のうち、最新の更新情報を選択してＤＢ６２に反映する。例えば、ＤＢ更新部６７は、リカバリポイントログ内の通番等によって、いずれの更新情報が最新かを判定する。
【００７６】
その後、ＤＢ更新部６７は、センタ内受信部６５によって受信された更新情報が新しいと判定した場合、正系システムのミラーノードとして動作する系切替を実行する。すなわち、ＤＢ更新部６７は、系切替開始後はセンタ内受信部６５によって受信された更新情報を用いて、ＤＢ６２を更新する。
【００７７】
一方、ＤＢ更新部６７は、センタ間受信部６６によって受信された更新情報が新しいと判定した場合、正系システムのマスタノードとして動作する系切替を実行する。すなわち、ＤＢ更新部６７は、副マスタノード５０へ正系システムへのミラーノードとして動作する降格指示を送信する。さらに、ＤＢ更新部６７は、業務アプリケーションなどを実行してＤＢ６２を更新し、第２のシステム内転送路を用いて、ＤＢ６２の更新情報を副マスタノード５０へ送信する。
【００７８】
切替制御部６８は、図示しない管理者端末や他ノードから受信したノードの停止情報にしたがって、系切替などを実行する処理部である。例えば、切替制御部６８は、正センタ１が保守によって停止する場合、ＤＢ更新部６７に正センタ１の保守開始を通知する。また、切替制御部６８は、正センタ１がシステムダウンした場合、ＤＢ更新部６７に正センタ１のシステムダウンを通知する。
【００７９】
［ＤＢ更新に関する処理の流れ］
次に、各ノードが実行するＤＢ更新処理および更新情報の通知処理について説明する。なお、ここでは一例として、ＤＢ更新後にチェックポイント（リカバリポイントログ）を生成する例を説明するが、これに限定されるものではない。例えば、ＤＢ更新の処理とチェックポイントの生成処理とは、並行して実行することができ、別々のフローチャートで実行することもできる。
【００８０】
（正マスタノード１０から正ミラーノード２０への通知処理）
図８は、正マスタノードから正ミラーノードへの通知処理の流れを示すフローチャートである。
【００８１】
図８に示すように、正マスタノード１０のＤＢ更新部１４は、ＤＢ１２の更新が発生すると（Ｓ１０１：Ｙｅｓ）、ＤＢ１２を更新する（Ｓ１０２）。続いて、センタ内通知部１５は、更新されたＤＢ１２の更新前後の差分を抽出して（Ｓ１０３）、更新ログを生成して正ミラーノード２０に送信する（Ｓ１０４）。
【００８２】
一方で、挿入部１６は、チェックポイントの生成タイミングである場合（Ｓ１０５：Ｙｅｓ）、チェックポイントの通番を含むリカバリポイントログを生成し（Ｓ１０６）、正ミラーノード２０に送信する（Ｓ１０７）。なお、チェックポイントの生成タイミングでない場合（Ｓ１０５：Ｎｏ）、Ｓ１０１に戻って、Ｓ１０１以降の処理が実行される。
【００８３】
（正マスタノード１０から副マスタノード５０への通知処理）
図９は、正マスタノードから副マスタノードへの通知処理の流れを示すフローチャートである。
【００８４】
図９に示すように、正マスタノード１０のＤＢ更新部１４は、ＤＢ１２の更新が発生すると（Ｓ２０１：Ｙｅｓ）、ＤＢ１２を更新する（Ｓ２０２）。その後、センタ間通知部１７は、更新されたＤＢ１２の更新前後の差分を抽出して蓄積する（Ｓ２０３）。
【００８５】
一方で、挿入部１６は、チェックポイントの生成タイミングである場合（Ｓ２０４：Ｙｅｓ）、チェックポイントの通番を含むリカバリポイントログを生成して蓄積する（Ｓ２０５）。なお、チェックポイントの生成タイミングではない場合（Ｓ２０４：Ｎｏ）、Ｓ２０５が実行されず、Ｓ２０６が実行される。
【００８６】
その後、センタ間通知部１７は、副マスタノード５０への通知タイミングに到達すると（Ｓ２０６：Ｙｅｓ）、蓄積しておいた更新ログやリカバリポイントログを生成順で記述した更新ファイルを生成する（Ｓ２０７）。そして、センタ間通知部１７は、生成した更新ファイルを副マスタノード５０へ送信する（Ｓ２０８）。なお、チェックポイントの生成タイミングでない場合（Ｓ２０６：Ｎｏ）、Ｓ２０１に戻って、Ｓ２０１以降の処理が実行される。
【００８７】
（正ミラーノード２０の更新処理）
図１０は、正ミラーノードが実行する更新処理の流れを示すフローチャートである。図１０に示すように、正ミラーノード２０の受信部２４は、正マスタノード１０から情報を受信すると（Ｓ３０１：Ｙｅｓ）、受信した情報が更新ログであるか否かを判定する（Ｓ３０２）。
【００８８】
続いて、ＤＢ更新部２５は、受信された情報が更新ログである場合（Ｓ３０２：Ｙｅｓ）、受信された更新ログにしたがってＤＢ２２を更新し（Ｓ３０３）、更新に使用した更新ログを蓄積する（Ｓ３０４）。
【００８９】
一方、ＤＢ更新部２５は、受信された情報が更新ログではなく、リカバリポイントログである場合（Ｓ３０２：Ｎｏ）、受信されたリカバリポイントログを記憶部等に蓄積する（Ｓ３０５）。
【００９０】
（正ミラーノード２０の通知処理）
図１１は、正ミラーノードが実行する通知処理の流れを示すフローチャートである。図１１に示すように、正ミラーノード２０のセンタ間通知部２６は、通知タイミングに到達すると（Ｓ４０１：Ｙｅｓ）、蓄積した更新ログおよびリカバリポイントログを読出す（Ｓ４０２）。
【００９１】
その後、センタ間通知部２６は、読み出した各ログを生成順に並び替えて更新ファイルを生成し（Ｓ４０３）、第１のシステム間転送路を用いて、生成した更新ファイルを副センタ５の副ミラーノード６０に送信する（Ｓ４０４）。
【００９２】
（副マスタノード５０の処理）
図１２は、副マスタノードが実行する更新および通知処理の流れを示すフローチャートである。図１２に示すように、副マスタノード５０のＤＢ更新部５５は、更新ファイルが受信されると（Ｓ５０１：Ｙｅｓ）、更新ファイルに含まれる各ログを抽出する（Ｓ５０２）。
【００９３】
続いて、ＤＢ更新部５５は、得られた各ログのうち更新ログを生成時間の時系列順で、ＤＢ５２に順次反映し（Ｓ５０３）、抽出された全更新ログの反映が完了するまで（Ｓ５０４：Ｎｏ）、繰り返す。
【００９４】
そして、抽出された全更新ログの反映が完了すると（Ｓ５０４：Ｙｅｓ）、センタ内通知部５６は、更新ファイルから得られた更新ログおよびリカバリポイントログを、生成時間の時系列順で、副ミラーノード６０に順次送信する（Ｓ５０５）。その後、センタ内通知部５６は、更新ファイルから得られた全ログの送信が完了するまで処理を繰り返し（Ｓ５０６：Ｎｏ）、全ログの送信が完了すると（Ｓ５０６：Ｙｅｓ）、Ｓ５０１に戻って以降の処理を繰り返す。
【００９５】
（副ミラーノード６０の処理）
図１３は、副ミラーノードが実行する更新処理の流れを示すフローチャートである。図１３に示すように、副ミラーノード６０のＤＢ更新部６７は、センタ内受信部６５によって副マスタノード５０から情報が受信されると（Ｓ６０１：Ｙｅｓ）、受信した情報が更新ログか否かを判定する（Ｓ６０２）。
【００９６】
そして、ＤＢ更新部６７は、受信された情報が更新ログである場合（Ｓ６０２：Ｙｅｓ）、受信した更新ログをＤＢ６２に反映して、ＤＢ６２を更新する（Ｓ６０３）。一方、ＤＢ更新部６７は、受信された情報が更新ログではなく、リカバリポイントログである場合（Ｓ６０２：Ｎｏ）、リカバリポイントログをバッファ６３等に蓄積する（Ｓ６０４）。
【００９７】
また、Ｓ６０１において、センタ間受信部６６は、副マスタノード５０からではなく正ミラーノード２０から更新ファイルを受信した場合（Ｓ６０１：Ｎｏ、Ｓ６０５：Ｙｅｓ）、更新ファイルからログを抽出する（Ｓ６０６）。そして、センタ間受信部６６は、得られた更新ログおよびリカバリポイントログを、ログの生成時間の時系列順でバッファ６３に蓄積する（Ｓ６０７）。
【００９８】
その後、ＤＢ更新部６７は、定期的な間隔で、バッファ６３に格納されるリカバリポイントログを比較する（Ｓ６０８）。そして、ＤＢ更新部６７は、副マスタノード５０からのリカバリポイントログが最新の場合（Ｓ６０９：Ｙｅｓ）、Ｓ６１０を実行する。すなわち、ＤＢ更新部６７は、正ミラーノード２０から受信した更新ログおよびリカバリポイントログを、バッファ６３から削除する。
【００９９】
一方、ＤＢ更新部６７は、正ミラーノード２０からのリカバリポイントログが最新の場合（Ｓ６０９：Ｎｏ）、正ミラーノード２０から受信した更新ログおよびリカバリポイントログをバッファ６３に残したまま、Ｓ６０１以降を繰り返す。
【０１００】
［系切替パターンの例］
次に、図１に示した冗長化システムにおける系切替の具体例を説明する。図１４は、冗長化システムの系切替例１を説明する図であり、図１５は、冗長化システムの系切替例２を説明する図である。
【０１０１】
（系切替例１）
図１４に示す図は、正センタ１が保守を行うために、正マスタノード１０および正ミラーノード２０を意図的に停止させる場合の系切替例を説明する図である。図１４に示すように、正マスタノード１０は、保守開始の指示を管理者等から受信すると、現用ＤＢ１２の最新の更新情報までを、第１のシステム内転送路で正ミラーノード２０へ送信するとともに、第１のシステム間転送路で副マスタノード５０へ送信する。
【０１０２】
そして、正マスタノード１０は、現用ＤＢ１２の最新の更新情報の送信を完了してから、保守モードへ移行する。この結果、副ミラーノード６０が、正ミラーノード２０から第２のシステム間転送路で受信する更新情報と、副マスタノード５０から第２のシステム内転送路で受信する更新情報とは、いずれも最新の更新情報である。したがって、副ミラーノード６０は、２経路で受信した更新情報のうち、いずれかの更新情報を用いて待機ＤＢ６２を更新する。この場合、副マスタノード５０が正系のマスタノードに昇格し、副ミラーノード６０が正系のミラーノードに昇格する。
【０１０３】
（系切替例２）
図１５に示す図は、正センタ１にシステムダウンが発生し、正マスタノード１０および正ミラーノード２０を突然停止した場合の系切替例を説明する図である。図１５に示すように、正マスタノード１０は、突然停止する。このため、第１のシステム内転送路で正ミラーノード２０へ送信された更新情報は、どの時点までの更新情報か判断できず、同様に、第１のシステム間転送路で副マスタノード５０へ送信された更新情報も、どの時点までの更新情報か判断できない。
【０１０４】
この結果、副ミラーノード６０は、２経路で受信した更新情報のうち、いずれかの更新情報がより進んだ更新情報であるかを特定し、特定した更新情報を用いて待機ＤＢ６２を更新する。このとき、副マスタノード５０からの更新情報が最新である場合、副マスタノード５０が正系のマスタノードに昇格し、副ミラーノード６０が正系のミラーノードに昇格する。また、正ミラーノード２０からの更新情報が最新である場合、副マスタノード５０が正系のミラーノードに降格し、副ミラーノード６０が正系のマスタノードに昇格する。
【０１０５】
［系切替における副ミラーの流れ］
図１６は、副ミラーノードが実行する系切替処理の流れを示すフローチャートである。図１６に示すように、副ミラーノード６０の切替制御部６８は、正系システムである正センタ１の停止指示を検出すると（Ｓ７０１：Ｙｅｓ）、システム停止の理由が保守であるか否かを判定する（Ｓ７０２）。
【０１０６】
そして、ＤＢ更新部６７は、システム停止の理由が保守である場合（Ｓ７０２：Ｙｅｓ）、各ノードから更新情報を最後まで受信したか否かを判定する（Ｓ７０３）。例えば、切替制御部６８は、停止指示を受信した後、所定時間待機する。あるいは、切替制御部６８は、停止指示受信後、所定時間待機した結果、新たな更新情報を受信しなかった場合に、更新情報を最後まで受信したと判定する。
【０１０７】
続いて、ＤＢ更新部６７は、各ノードから更新情報を最後まで受信した場合（Ｓ７０３：Ｙｅｓ）、正ミラーノード２０からの更新情報または副マスタノード５０からの更新情報のうち、任意の更新情報を選択して（Ｓ７０４）、ＤＢ６２を更新する（Ｓ７０５）。
【０１０８】
その後、ＤＢ更新部６７は、正系システムのマスタノードに昇格した副マスタノード５０から更新情報を受信すると（Ｓ７０６：Ｙｅｓ）、受信した更新情報を用いてＤＢ６２を更新する（Ｓ７０７）。その後、Ｓ７０６以降が繰り返される。
【０１０９】
一方、ＤＢ更新部６７は、システム停止の理由が保守ではない場合（Ｓ７０２：Ｎｏ）、正ミラーノード２０からの更新情報または副マスタノード５０からの更新情報のうち、最新の更新情報を特定する（Ｓ７０８）。
【０１１０】
そして、ＤＢ更新部６７は、副マスタノード５０からの更新情報が最新である場合（Ｓ７０９：Ｙｅｓ）、正ミラーノード２０からの更新情報をバッファ６３から削除する（Ｓ７１０）。その後、ＤＢ更新部６７は、Ｓ７０６以降を実行する。
【０１１１】
一方、ＤＢ更新部６７は、正ミラーノード２０からの更新情報が最新である場合（Ｓ７０９：Ｎｏ）、正ミラーノード２０からの更新情報を用いてＤＢ６２を更新する（Ｓ７１１）。
【０１１２】
続いて、ＤＢ更新部６７は、正系システムのマスタノードへ昇格し（Ｓ７１２）、副マスタノード５０へ、正系システムのミラーノードへの降格指示を送信する（Ｓ７１３）。
【０１１３】
その後、ＤＢ更新部６７は、ＤＢ更新が発生すると（Ｓ７１４：Ｙｅｓ）、ＤＢ６２を更新する（Ｓ７１５）。そして、ＤＢ更新部６７は、更新されたＤＢ６２の更新前後の差分を抽出して、更新ログを生成して副マスタノード５０に送信する（Ｓ７１６）。その後、Ｓ７１４以降が繰り返される。
【０１１４】
上述したように、正系システムの保守時は、正マスタノード１０は、現用ＤＢ１２の更新情報をすべて送信してから保守に移行するので、副ミラーノード６０が２系統で受信するいずれの更新情報も最新の更新情報となる。一方で、正系システムのダウン時は、正マスタノード１０は、更新情報の送信完了を待たずに停止するので、副ミラーノード６０が２系統で受信する更新情報に、時間差が生じる可能性がある。
【０１１５】
この結果、系切替が発生した場合でも、保守時とシステムダウン時とで更新情報の選択手法を切替えることができるので、高速な切替を実現するとともに、データロスの発生を抑制した切替を実行することができる。
【０１１６】
また、系切替だけではなく、副ミラーノード６０における受信済みの更新情報の状態によっては、副ミラーノード６０と副マスタノード５０との主従関係を変更した上で、系切替を実行することができる。この結果、より最新の更新情報を用いて業務が継続できるように、ノードが連動して切替わることができる。また、ノードの停止に伴う業務停止の危険性を減少させることができるので、システムの信頼性が向上する。
【０１１７】
また、正マスタノード１０は、ＤＢ１２の更新情報を送信する際に、定期的にチェックポイントを送信する。副ミラーノード６０は、２系統で更新情報とチェックポイントを受信する。そして、副ミラーノード６０は、チェックポイントが新しい方の系統で受信した更新情報を用いて、ＤＢ６２を更新することができる。この結果、副ミラーノード６０、ＤＢ６２を更新する更新情報のデータロストを抑制することができる。
【０１１８】
また、正マスタノード１０は、ＤＢ１２を更新すると、更新ログを正ミラーノード２０に送信する。この結果、正ミラーノード２０は、ＤＢ２２の状態をＤＢ１２と同期させることができる。また、正マスタノード１０は、ＤＢ１２を更新したログをまとめた更新ファイルを副マスタノード５０に定期的に送信する。この結果、副マスタノード５０は、ＤＢ１２の更新時間とタイムラグを少なくして、ＤＢ５２の更新をすることができる。
【実施例２】
【０１１９】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
【０１２０】
［チェックポイント］
上記実施例では、チェックポイントとしてシステム内で一意な通番を含むリカバリポイントログを用いる例を説明したが、これに限定されるものではなく、例えば日時や時刻などを含むリカバリポイントログを用いることもできる。つまり、システム内で昇順あるいは降順などの一意な順番が指定できるものであれば、様々な情報を使用することができる。
【０１２１】
［システム停止］
上記実施例では、障害等によってノードが停止する例を説明したが、保守等の作業時も同様に処理することができる。また、上記実施例では、いずれのかのノードが停止する例を説明したが、システム停止はこれに限定されるものではない。例えば、定期監視や監視ツールによって、各ノード間の通信が停止したことが検出された場合であっても、同様の切替処理を実行することができる。
【０１２２】
例えば、冗長化システムは、正センタ１と副センタ５との通信断が発生した場合も、上記システムダウン時と同様の処理を実行することができる。
【０１２３】
また、上記例では、システムダウン時、副ミラーノード６０は、２系統で受信した更新情報のうち最新の更新情報を選択して、ＤＢ６２に反映させる例を説明したが、これに限定されるものではない。例えば、副ミラーノード６０は、２系統で受信した更新情報それぞれをＤＢ６２に反映させてから、系切替を実行することもできる。また、副ミラーノード６０は、管理者端末等から昇格指示を受信すると、正ミラーノード２０から更新情報と副マスタノード５０からの更新情報のうち、最新の更新情報すなわりより処理が進んだ更新情報をＤＢ６２に反映した後、副マスタノード５０に降格指示を送信する。そして、副ミラーノード６０は、正系のマスタノードとしての処理を開始することもできる。
【０１２４】
［システム］
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１２５】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１２６】
［ハードウェア］
図１７は、ハードウェア構成例を説明する図である。図１に示した各ノードは、同様のハードウェア構成を有するので、ここでは、一例として正マスタノード１０を例にして説明する。
【０１２７】
図１７に示すように、正マスタノード１０は、ＨＤＤ（Hard  Disk  Drive）１０ａ、通信インタフェース１０ｂ、メモリ１０ｃ、ＣＰＵ（Central  Processing  Unit）１０ｄを有する。また、図１７に示した各部は、バス等で相互に接続される。なお、ここで示したハードウェアは一例であり、例えばグラフィックインタフェースやマウスなどの他のハードウェアを有していてもよい。
【０１２８】
ＨＤＤ１０ａは、図２等に示した機能を動作させるプログラムやＤＢを記憶する。通信インタフェース１０ｂは、他の装置との通信を制御するインタフェースであり、例えばネットワークインタフェースカードである。
【０１２９】
ＣＰＵ１０ｄは、図２等に示した各処理部と同様の処理を実行するプログラムをＨＤＤ１０ａ等から読み出してメモリ１０ｃに展開することで、図２等で説明した各機能を実行するプロセスを動作させる。
【０１３０】
すなわち、このプロセスは、正マスタノード１０が有する各処理部と同様の機能を実行する。具体的には、ＣＰＵ１０ｄは、ＤＢ更新部１４、センタ内通知部１５、挿入部１６、センタ間通知部１７等と同様の機能を有するプログラムをＨＤＤ１０ａ等から読み出す。そして、ＣＰＵ１０ｄは、ＤＢ更新部１４、センタ内通知部１５、挿入部１６、センタ間通知部１７と同様の処理を実行するプロセスを実行する。
【０１３１】
このように正マスタノード１０は、プログラムを読み出して実行することで冗長化作成方法を実行する情報処理装置として動作する。また、正マスタノード１０は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、正マスタノード１０によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【０１３２】
１  正センタ
５  副センタ
１０  正マスタノード
１１  通信制御部
１２  ＤＢ
１３  制御部
１４  ＤＢ更新部
１５  センタ内通知部
１６  挿入部
１７  センタ間通知部
２０  正ミラーノード
２１  通信制御部
２２  ＤＢ
２３  制御部
２４  受信部
２５  ＤＢ更新部
２６  センタ間通知部
５０  副マスタノード
５１  通信制御部
５２  ＤＢ
５３  制御部
５４  受信部
５５  ＤＢ更新部
５６  センタ内通知部
５７  切替制御部
６０  副ミラーノード
６１  通信制御部
６２  ＤＢ
６３  バッファ
６４  制御部
６５  センタ内受信部
６６  センタ間受信部
６７  ＤＢ更新部
６８  切替制御部
【図１】
0006511739.tif 000002
【図２】
0006511739.tif 000003
【図３】
0006511739.tif 000004
【図４】
0006511739.tif 000005
【図５】
0006511739.tif 000006
【図６】
0006511739.tif 000007
【図７】
0006511739.tif 000008
【図８】
0006511739.tif 000009
【図９】
0006511739.tif 000010
【図１０】
0006511739.tif 000011
【図１１】
0006511739.tif 000012
【図１２】
0006511739.tif 000013
【図１３】
0006511739.tif 000014
【図１４】
0006511739.tif 000015
【図１５】
0006511739.tif 000016
【図１６】
0006511739.tif 000017
【図１７】
0006511739.tif 000018