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