(57)【特許請求の範囲】
【請求項１】
複数の制御装置のうちの１台をマスター装置、前記マスター装置以外の制御装置をスレーブ装置とし、前記マスター装置から前記スレーブ装置へデータのレプリケーションを行うデータベースシステムであって、
前記制御装置の間でレプリケーション情報を相互に交換し、前記レプリケーションを行っている途中で前記マスター装置に障害が発生した場合、最新のデータについて前記レプリケーションが完了している前記スレーブ装置を優先的に新しいマスター装置として決定し、
前記制御装置は、
前記レプリケーション情報を記憶する記憶部と、
他の制御装置との間で前記レプリケーション情報を送受信する送受信部と、
所定の条件に基づいてマスター装置を決定する決定部と
を備え、
前記レプリケーション情報には、前記レプリケーションの状態を示すレプリケーション状態と、前記レプリケーションの対象であるデータの新旧を示すレプリケーション識別子とが含まれ、
前記マスター装置更新後から前記スレーブ装置１台目レプリケーション前に前記マスター装置に障害が発生した場合、前記マスター装置自身のレプリケーション状態を変更できていれば、系切替または再開後に前記マスター装置自身が新しいマスター装置として立ち上がり、前記スレーブ装置１台目レプリケーション後に前記マスター装置に障害が発生した場合、レプリケーションが完了している前記スレーブ装置を新しいマスター装置として選定する
ことを特徴とするデータベースシステム。
【請求項２】
前記マスター装置が不在の場合、前記制御装置間の合議により、前記レプリケーション状態が同期であり、かつ最新の前記レプリケーション識別子を保有するスレーブ装置を新しいマスター装置として決定することを特徴とする請求項１に記載のデータベースシステム。
【請求項３】
前記制御装置は、他の制御装置のレプリケーション識別子と自己制御装置のレプリケーション識別子とを比較し、自己制御装置のレプリケーション識別子が最新でないと判定した場合、前記マスター装置にマスター交代要求を送信することなく、自己制御装置のレプリケーション状態を非同期に遷移させることを特徴とする請求項１に記載のデータベースシステム。
【請求項４】
複数の制御装置のうちの１台をマスター装置、前記マスター装置以外の制御装置をスレーブ装置とし、前記マスター装置から前記スレーブ装置へデータのレプリケーションを行うデータベースシステムにおけるマスター／スレーブ決定方法であって、
前記制御装置の間でレプリケーション情報を相互に交換するステップと、
前記レプリケーションを行っている途中で前記マスター装置に障害が発生した場合、最新のデータについて前記レプリケーションが完了している前記スレーブ装置を優先的に新しいマスター装置として決定するステップと
を備え、
前記制御装置は、
前記レプリケーション情報を記憶する記憶部と、
他の制御装置との間で前記レプリケーション情報を送受信する送受信部と、
所定の条件に基づいてマスター装置を決定する決定部と
を備え、
前記レプリケーション情報には、前記レプリケーションの状態を示すレプリケーション状態と、前記レプリケーションの対象であるデータの新旧を示すレプリケーション識別子とが含まれ、
前記マスター装置更新後から前記スレーブ装置１台目レプリケーション前に前記マスター装置に障害が発生した場合、前記マスター装置自身のレプリケーション状態を変更できていれば、系切替または再開後に前記マスター装置自身が新しいマスター装置として立ち上がり、前記スレーブ装置１台目レプリケーション後に前記マスター装置に障害が発生した場合、レプリケーションが完了している前記スレーブ装置を新しいマスター装置として選定する
ことを特徴とするマスター／スレーブ決定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マスター装置からスレーブ装置へデータのレプリケーションを行っている途中でマスター装置に障害が発生した場合にシステム自律で新しいマスター装置を決定するデータベースシステム及びそのマスター／スレーブ決定方法に関する。
【背景技術】
【０００２】
従来、複数の制御装置のうちの１台をマスター装置、それ以外の制御装置をスレーブ装置とし、マスター装置からスレーブ装置へデータのレプリケーションを行うデータベースシステムが知られている（例えば、特許文献１参照）。このようなシステムでは、マスター装置に障害が発生した場合、いずれかのスレーブ装置が新しいマスター装置になり、その他のスレーブ装置は新しいマスター装置に追随して動作するようになっている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−２５７６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術によると、マスター装置内のデータ更新時のレプリケーションの途中でマスター装置に障害が発生した場合、次のような問題があった。
【０００５】
すなわち、マスター装置から全てのスレーブ装置へのレプリケーションが完了する前に両系障害等によってマスター装置が不在となる場合がある。このような場合、予め設定された優先順位に基づいて新しいマスター装置が決定されるため、外部端末の保有するデータとシステム内部のデータに不整合が発生する可能性がある。
【０００６】
また、マスター装置から全てのスレーブ装置へのレプリケーションが完了する前に片系障害等によってマスター装置を交代する場合がある。このような場合、マスター装置に最も早くマスター交代要求を届けたスレーブ装置が新しいマスター装置として決定されるため、外部端末の保有するデータとシステム内部のデータに不整合が発生する可能性がある。
【０００７】
本発明は、上述した従来の技術に鑑み、レプリケーションの途中でマスター装置に障害が発生した場合でも、外部端末の保有するデータと整合を図ることができるデータベースシステム及びそのマスター／スレーブ決定方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、第１の態様に係る発明は、複数の制御装置のうちの１台をマスター装置、前記マスター装置以外の制御装置をスレーブ装置とし、前記マスター装置から前記スレーブ装置へデータのレプリケーションを行うデータベースシステムであって、前記制御装置の間でレプリケーション情報を相互に交換し、前記レプリケーションを行っている途中で前記マスター装置に障害が発生した場合、最新のデータについて前記レプリケーションが完了している前記スレーブ装置を優先的に新しいマスター装置として決定し、前記制御装置は、前記レプリケーション情報を記憶する記憶部と、他の制御装置との間で前記レプリケーション情報を送受信する送受信部と、所定の条件に基づいてマスター装置を決定する決定部とを備え、前記レプリケーション情報には、前記レプリケーションの状態を示すレプリケーション状態と、前記レプリケーションの対象であるデータの新旧を示すレプリケーション識別子とが含まれ、前記マスター装置更新後から前記スレーブ装置１台目レプリケーション前に前記マスター装置に障害が発生した場合、前記マスター装置自身のレプリケーション状態を変更できていれば、系切替または再開後に前記マスター装置自身が新しいマスター装置として立ち上がり、前記スレーブ装置１台目レプリケーション後に前記マスター装置に障害が発生した場合、レプリケーションが完了している前記スレーブ装置を新しいマスター装置として選定することを要旨とする。
【００１０】
第２の態様に係る発明は、第１の態様に係る発明において、前記マスター装置が不在の場合、前記制御装置間の合議により、前記レプリケーション状態が同期であり、かつ最新の前記レプリケーション識別子を保有するスレーブ装置を新しいマスター装置として決定することを要旨とする。
【００１１】
第３の態様に係る発明は、第１の態様に係る発明において、前記制御装置が、他の制御装置のレプリケーション識別子と自己制御装置のレプリケーション識別子とを比較し、自己制御装置のレプリケーション識別子が最新でないと判定した場合、前記マスター装置にマスター交代要求を送信することなく、自己制御装置のレプリケーション状態を非同期に遷移させることを要旨とする。
【００１２】
また、上記目的を達成するため、第４の態様に係る発明は、複数の制御装置のうちの１台をマスター装置、前記マスター装置以外の制御装置をスレーブ装置とし、前記マスター装置から前記スレーブ装置へデータのレプリケーションを行うデータベースシステムにおけるマスター／スレーブ決定方法であって、前記制御装置の間でレプリケーション情報を相互に交換するステップと、前記レプリケーションを行っている途中で前記マスター装置に障害が発生した場合、最新のデータについて前記レプリケーションが完了している前記スレーブ装置を優先的に新しいマスター装置として決定するステップとを備え、前記制御装置は、前記レプリケーション情報を記憶する記憶部と、他の制御装置との間で前記レプリケーション情報を送受信する送受信部と、所定の条件に基づいてマスター装置を決定する決定部とを備え、前記レプリケーション情報には、前記レプリケーションの状態を示すレプリケーション状態と、前記レプリケーションの対象であるデータの新旧を示すレプリケーション識別子とが含まれ、前記マスター装置更新後から前記スレーブ装置１台目レプリケーション前に前記マスター装置に障害が発生した場合、前記マスター装置自身のレプリケーション状態を変更できていれば、系切替または再開後に前記マスター装置自身が新しいマスター装置として立ち上がり、前記スレーブ装置１台目レプリケーション後に前記マスター装置に障害が発生した場合、レプリケーションが完了している前記スレーブ装置を新しいマスター装置として選定することを要旨とする。
【発明の効果】
【００１３】
本発明によれば、レプリケーションの途中でマスター装置に障害が発生した場合でも、外部端末の保有するデータと整合を図ることができるデータベースシステム及びそのマスター／スレーブ決定方法を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態に係るデータベースシステムの全体構成図である。
【図２】本発明の実施形態に係る制御装置の構成を示すブロック図である。
【図３】本発明の実施形態に係るデータベースシステムの要求条件の説明図である。
【図４】比較例に係るデータベースシステムの動作例を示す図である。
【図５】比較例に係るデータベースシステムの動作例を示す図である。
【図６】比較例に係るデータベースシステムの課題の説明図である。
【図７】比較例に係るデータベースシステムの課題の説明図である。
【図８】本発明の実施例に係るデータベースシステムの説明図である。
【図９】本発明の実施例に係るデータベースシステムの動作例を示す図である。
【図１０】本発明の実施例に係るデータベースシステムの動作例を示す図である。
【図１１】本発明の実施例に係る制御装置の動作例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態について図面を参照して詳細に説明する。
（データベースシステム）
図１は、本発明の実施形態に係るデータベースシステムの全体構成図である。このデータベースシステムは、図１に示すように、マスター状態の１つの制御装置１０と、スレーブ状態の少なくとも１つの制御装置１０とを備えるマスター／スレーブ構成のシステムである。
【００１６】
以下、マスター状態の制御装置１０を「マスター」や「マスター装置」と呼び、符号Ｍを用いて説明する。また、スレーブ状態の制御装置１０を「スレーブ」や「スレーブ装置」と呼び、符号Ｓ1，Ｓ2,…を用いて説明する。各スレーブＳ1，Ｓ2,…を特に区別しない場合は、符号Ｓを用いることにする。
【００１７】
全ての制御装置１０は、ネットワーク２０を介して相互に通信可能であり、マスターＭのデータベース１とスレーブＳのデータベース１とを同期させるための情報を送受信する。マスターＭとスレーブＳとが同じデータを保有することにより、図示しない外部端末は、近い位置に配置された制御装置１０にアクセスすることができる。これにより、制御装置１０の負荷の分散、制御装置１０と外部端末との通信時間の短縮、制御装置１０の可用性（信頼性）の向上などを図ることが可能となる。マスター状態またはスレーブ状態の各制御装置１０は、信頼性を高めるため、個々に２重化構成（現用系、待機系）であってもよい。
（制御装置）
図２は、本発明の実施形態に係る制御装置１０の構成を示すブロック図である。この図に示すように、制御装置１０は、データベース１と、記憶部２と、送受信部３と、決定部４と、監視部５とを備える。
【００１８】
スレーブＳのデータベース１は、マスターＭのデータベース１の複製である。
【００１９】
記憶部２は、制御装置状態情報２Ａ、接続状態情報２Ｂ、マスター条件情報２Ｃ、レプリケーション情報２Ｄ等、各種の情報を記憶する。これらの情報２Ａ〜２Ｄについては後述する。
【００２０】
送受信部３は、ネットワーク２０を介して他の制御装置１０と各種の情報を送受信する。例えば、他の全ての制御装置１０に問合せ要求を送信し、各制御装置自身に関する情報を受信する。また、他の制御装置１０から問合せ要求を受信すると、記憶部２に記憶されている情報を要求元の制御装置１０に送信する。
【００２１】
決定部４は、所定の条件に基づいてマスター装置Ｍを決定する。例えば、自己制御装置１０がスレーブＳである場合は、他の全ての制御装置１０から受信した情報に基づいて、自己制御装置１０が新しいマスター候補であるか否かを判別し、新しいマスター候補である場合はマスターＭにマスター交代要求を送信する。また、他の全ての制御装置１０から受信した情報に基づいて、自己制御装置１０を新しいマスターＭとするか否かを判別する。一方、自己制御装置１０がマスターＭである場合は、複数のスレーブＳからマスター交代要求を受信すると、マスター交代要求を送信したスレーブＳのうちのいずれかを新しいマスターＭとして決定し、その旨を通知する。
【００２２】
監視部５は、自己制御装置１０の状態を監視し、記憶部１６に記憶する。
【００２３】
本発明の実施形態に係る制御装置１０としては、例えば、ＣＰＵと、メモリと、外部記憶装置と、入力装置と、出力装置とを備えた汎用的なコンピュータシステムを用いることができる。このようなコンピュータシステムにおいて、ＣＰＵがメモリ上にロードされた制御装置１０用のプログラムを実行することにより、制御装置１０の各機能が実現される。制御装置１０用のプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ−ＲＯＭなどのコンピュータ読取り可能な記録媒体に記憶することもできるし、ネットワーク２０を介して配信することもできる。
（適用するシステムと要求条件）
次に、図３を用いて、適用するシステムと要求条件について説明する。
【００２４】
本実施形態では、図３に示すように、３台以上の制御装置１０が通信網環境等に配置されたデータベースシステムを想定する。このようなデータベースシステムでは、１台の制御装置１０をデータの原本を保有するマスターＭとし、それ以外をスレーブＳ1，Ｓ2とする。スレーブＳ1，Ｓ2は、マスターＭの持つデータのコピーを保有して運用する。
【００２５】
データベースシステムは、外部端末３０のキャッシュデータを保有し、外部端末３０からのデータ参照要求に応じて、システム内部に保有するデータを提供する。また、外部端末３０からのデータ更新要求に応じて、マスターＭのデータ更新と、マスターＭからスレーブＳ1，Ｓ2へのデータのコピーを非同期に行う（レプリケーション）。図３において、符号（１）は、外部端末３０からのデータ更新要求を意味し、符号（２）は、スレーブＳ1へのレプリケーションを意味し、符号（Ｎ）は、スレーブＳ2へのレプリケーションを意味する。
【００２６】
ここで、マスターＭが故障した場合、マスターＭ自身は冗長系への系切替またはシステム再開動作を行う。その際、スレーブＳ1（またはＳ2）をマスターＭへ役割変更する。その他のスレーブＳ2（またはＳ1）は、新しいマスターＭに追随して動作する。
【００２７】
このようなデータベースシステムの要求条件としては、（１）サービス中断時間短縮の観点より、マスターＭの不在時間をできる限り極小化すること、（２）システム内データ一貫性の観点より、マスターＭの唯一性を保証すること（マスターＭを複数存在させないこと）、（３）データの信頼性確保の観点より、できる限りシステムは外部端末３０の保有するキャッシュデータとシステム内部のデータの整合をとること、を挙げることができる。
（比較例）
次に、比較例として、従来方式に係るデータベースシステムについて説明する。従来方式に係るデータベースシステムでは、制御装置状態情報２Ａ、接続状態情報２Ｂ、マスター条件情報２Ｃを制御装置１０間で相互にやりとりし、その情報を元に自律動作でマスターＭとスレーブＳを決定する。
【００２８】
図４は、従来方式に係るデータベースシステムの動作例（マスター存在時）を示す図である。まず、図４（ａ）に示すように、スレーブＳは、全ノードを監視している。例えば、図４（ｂ）に示すように、スレーブＳ1は、マスターＭが片系運転になっていることを検知するとともに、自身が両系運転かつデータ同期完了していることを検知したと仮定する。これにより、図４（ｃ）に示すように、スレーブＳ1は、マスターＭにマスター交代要求を送信する。同様に、スレーブＳ3も、マスターＭにマスター交代要求を送信したと仮定する。このような場合、図４（ｄ）に示すように、マスターＭは、先着優先でマスター／スレーブ交代を実施する。例えば、スレーブＳ1からのマスター交代要求をスレーブＳ3からのマスター交代要求よりも先に受信した場合は、スレーブＳ1を新しいマスターＭとして決定し、その旨をスレーブＳ1に通知するようになっている。
【００２９】
図５は、従来方式に係るデータベースシステムの動作例（マスター不在時）を示す図である。まず、図５（ａ）に示すように、スレーブＳは、全ノードを監視している。その結果、マスターＭが不在であることを検知するとともに、全ノードの存在を確認したと仮定する。このような場合、予め設定された優先順位が最も高いスレーブＳがマスターＭとなる。例えば、図５（ｂ）に示すように、スレーブＳ1の優先順位が１位、スレーブＳ2の優先順位が２位、スレーブＳ3の優先順位が３位である場合は、図５（ｃ）に示すように、優先順位が１位であるスレーブＳ1が自律動作でマスターＭに昇格するようになっている。
【００３０】
図６は、従来方式に係るデータベースシステムの課題（マスター不在時）の説明図である。ここでは、データＡを０から１に更新する旨のデータ更新要求を外部端末３０から受信し、マスターＭとスレーブＳ1についてはデータ更新が完了し、スレーブＳ2についてはデータ更新が完了していない状況を想定している。このような状況において、図６（ａ）に示すように、マスターＭから全てのスレーブＳへのレプリケーションが完了する前に両系障害等によってマスターＭが不在となる場合がある。このような場合、従来方式によると、予め設定された優先順位に基づいて新しいマスターＭが決定される。例えば、図６（ｂ）に示すように、スレーブＳ2は、レプリケーション前のため実際は非同期であるにもかかわらず、優先順位が最も高いことからマスターＭとして決定される。そのため、外部端末３０の保有するキャッシュデータとシステム内部のデータに不整合が発生する。言い換えると、上述した要求条件（３）が満たせないこととなる。
【００３１】
図７は、従来方式に係るデータベースシステムの課題（マスター存在時）の説明図である。図７（ａ）に示すように、マスターＭから全てのスレーブＳへのレプリケーションが完了する前に片系障害等によってマスターＭが交代する場合がある。ここでは、マスターＭにマスター交代要求を届けた順番は、図中の符号（３）（４）の順番とする。このような場合、従来方式によると、マスターＭに最も早くマスター交代要求を届けたスレーブＳが新しいマスターＭとして決定される。例えば、図７（ｂ）に示すように、スレーブＳ2は、レプリケーション前のため実際は非同期であるにもかかわらず、マスターＭに最も早くマスター交代要求を届けたことからマスターＭとして決定される。そのため、外部端末３０の保有するキャッシュデータとシステム内部のデータに不整合が発生する。言い換えると、上述した要求条件（３）が満たせないこととなる。
（実施例）
図８は、本発明の実施例に係るデータベースシステムの説明図である。このデータベースシステムでは、個々の制御装置１０にレプリケーションの状態を管理する機能を備える。また、制御装置１０の間で相互に交換する情報として、制御装置状態情報２Ａ、接続状態情報２Ｂ、マスター条件情報２Ｃに加え、レプリケーション情報２Ｄを備える。これにより、以下に説明するように、マスターＭの障害とレプリケーションが競合した場合でも、外部端末３０とシステム間のデータの整合をとることが可能となる。
【００３２】
制御装置状態情報２Ａは、問合せを受けた制御装置１０の状態を示す情報である。問合せを受けた制御装置１０の状態とは、例えば、マスターＭ、スレーブＳ、状態切り替わりの過渡状態、立ち上がり時の状態不定、等である
接続状態情報２Ｂは、他の制御装置１０との接続状態を示す情報である。他の制御装置１０との接続状態とは、例えば、問合せを受けた制御装置１０が他の全ての制御装置１０と通信可能であるか否か、等である。
【００３３】
マスター条件情報２Ｃは、問合せを受けた制御装置１０がマスターＭとなる条件を満たしているか否かを示す情報である。マスターＭとなる条件を満たしているか否かとは、例えば、両系動作であるか否か、メモリ・ＣＰＵ状態は良好であるか否か、等である。
【００３４】
レプリケーション情報２Ｄは、レプリケーションに関する情報である。レプリケーション情報２Ｄには、各制御装置１０のレプリケーション状態とレプリケーション識別子とが含まれる。レプリケーション状態とは、例えば「同期」「非同期」「同期しかかり中」等、レプリケーションの状態を示す情報である。レプリケーション識別子とは、レプリケーションの対象であるデータの新旧を示す情報であり、例えば「０００１」「００２」「０００３」等、レプリケーション毎にユニークな番号である。データが更新されたタイミングで、その制御装置１０についてのレプリケーション識別子も更新されるようになっている。
【００３５】
マスターＭは、各スレーブＳへのレプリケーション情報を保有し、各スレーブＳは、マスターＭとの同期状態を保有する。図８中の符号Ｔは、各スレーブＳへのレプリケーション情報を管理するための管理テーブルを示している。このような管理テーブルＴの構成としては、各スレーブＳ1，Ｓ2,…毎に、レプリケーション状態とレプリケーション識別子とを対応付けた構成を採用することができる。
【００３６】
図９は、本発明の実施例に係るデータベースシステムの動作例（マスター不在時）を示す図である。このデータベースシステムでは、マスター不在となった場合、予め設定された優先順位よりもレプリケーション状態が優先されるようになっている。
【００３７】
例えば、図９（ａ）に示すように、マスターＭから全てのスレーブＳへのレプリケーションが完了する前に両系障害等によってマスターＭが不在となったと仮定する。このように、マスターＭがスレーブＳを決定できずに不在となった場合、各スレーブＳは、レプリケーション状態が同期であり、かつ最新のレプリケーション識別子を保有する制御装置１０を合議により判定する。この合議の結果、図９（ｂ）に示すように、予め設定された優先順位よりもレプリケーション状態が優先され、スレーブＳ1がマスターＭとして決定される。これにより、マスターＭの障害とレプリケーションが競合した場合でも、外部端末３０とシステム間のデータの整合をとることが可能となる。
【００３８】
図１０は、本発明の実施例に係るデータベースシステムの動作例（マスター存在時）を示す図である。このデータベースシステムでは、マスター交代する場合、予め設定された優先順位よりもレプリケーション状態を優先するようになっている。
【００３９】
例えば、図１０（ａ）に示すように、マスターＭから全てのスレーブＳへのレプリケーションが完了する前に片系障害等によってマスターＭを交代することになったと仮定する。このように、マスターＭがスレーブＳを決定できる場合、マスターＭは、マスター交代要求を受信すると、レプリケーション状態が同期であり、かつ自身が保持するレプリケーション識別子と同一のレプリケーション識別子を保持する制御装置１０をマスターＭに選定する。この結果、図１０（ｂ）に示すように、予め設定された優先順位よりもレプリケーション状態が優先され、スレーブＳ1がマスターＭとして決定される。これにより、マスターＭの障害とレプリケーションが競合した場合でも、外部端末３０とシステム間のデータの整合をとることが可能となる。
【００４０】
なお、スレーブＳは、レプリケーション情報２Ｄを取得した時、他の制御装置１０のレプリケーション識別子と自己制御装置１０のレプリケーション識別子とを比較し、自己制御装置１０のレプリケーション識別子が最新でないと判定した場合、マスターＭにマスター交代要求を送信することなく、自己制御装置１０のレプリケーション状態を非同期に遷移させてもよい。例えば、スレーブＳ2は、スレーブＳ1のレプリケーション識別子「０００２」と自己のレプリケーション識別子「０００１」とを比較し、自己のレプリケーション識別子「０００１」が最新でないと判定すると、マスターＭにマスター交代要求を送信することなく、自己のレプリケーション状態を非同期に遷移させる。これにより、マスターＭに不要なマスター交代要求が送信されないため、マスターＭ側において新しいマスターＭを選定する処理が軽減される。
【００４１】
このように、本発明の実施例に係るデータベースシステムによれば、レプリケーションのどのようなタイミングでマスター障害が発生した場合でも不整合を発生させない。すなわち、マスター更新後〜スレーブ１台目レプリケーション前にマスター障害が発生した場合、マスターＭ自身のレプリケーション状態を変更できていれば、系切替または再開後に自身がマスターＭで立ち上がることで不整合を発生させない。また、スレーブ１台目レプリケーション後〜スレーブＮ台目レプリケーション前にマスター障害が発生した場合、レプリケーション状態が判明しているため、レプリケーションが完了しているスレーブＳを確実に選定することができる。更に、スレーブＮ台目レプリケーション後にマスター障害が発生した場合、レプリケーションが完了しているスレーブＳにマスター交代することができる。
【００４２】
図１１は、本発明の実施例に係る制御装置１０の動作例を示すフローチャートである。
【００４３】
まず、制御装置１０は、他の全ての制御装置１０へ制御装置状態情報２Ａ、接続状態情報２Ｂ、マスター条件情報２Ｃ、レプリケーション情報２Ｄをリクエストする（Ｓ１）。これにより、他の全ての制御装置１０から制御装置状態情報２Ａ、接続状態情報２Ｂ、マスター条件情報２Ｃ、レプリケーション情報２Ｄを受信すると、制御装置状態情報２Ａに基づいてマスター存在の有無を判定する（Ｓ２）。
【００４４】
ステップＳ２において、マスターＭが存在しない、かつマスター状態への切り替わりの過渡状態が存在しないと判定した場合、接続状態情報２Ｂに基づいて全ての制御装置１０と相互に通信可能か否かを判定する（Ｓ３）。一方、ステップＳ２において、マスターＭが１つ存在する、かつマスター状態への切り替わりの過渡状態が存在しないと判定した場合、ステップＳ７に移行する。
【００４５】
ステップＳ３において、通信可能であると判定した場合、レプリケーション情報２Ｄに基づいて自己制御装置１０のレプリケーション状態が同期、かつレプリケーション識別子が最新であるか否かを判定する（Ｓ４）。一方、ステップＳ３において、通信不可であると判定した場合、処理を終了する。
【００４６】
ステップＳ４において、レプリケーション状態が同期、かつレプリケーション識別子が最新であると判定した場合、自己制御装置１０の重み（優先順位）が最大か否かを判定する（Ｓ５）。一方、ステップＳ４において、レプリケーション状態が非同期、または同期であるがレプリケーション識別子が最新でないと判定した場合、処理を終了する。
【００４７】
ステップＳ５において、自己制御装置１０の重みが最大であると判定した場合、自己制御装置１０をマスターＭと決定し（Ｓ６）、処理を終了する。
【００４８】
ステップＳ７では、マスター条件情報２Ｃに基づいて現マスターＭのマスター条件を判定する。ステップＳ７において、現マスターＭのマスター条件を満たさないと判定した場合、新しいマスターＭを選定するため、マスター条件情報２Ｃに基づいて自己制御装置１０のマスター条件を判定する（Ｓ８）。一方、ステップ７において、現マスターＭのマスター条件を満たすと判定した場合、マスターＭを変更する必要がないため、処理を終了する。
【００４９】
ステップＳ８において、自己制御装置１０のマスター条件を満たすと判定した場合、レプリケーション情報２Ｄに基づいて自己制御装置１０のレプリケーション状態が同期、かつレプリケーション識別子が最新であるか否かを判定する（Ｓ９）。一方、ステップ８において、自己制御装置１０のマスター条件を満たさないと判定した場合、処理を終了する。
【００５０】
ステップＳ９において、自己制御装置１０のレプリケーション状態が同期、かつレプリケーション識別子が最新であると判定した場合、自己制御装置１０から現マスターＭの制御装置１０へマスター交代要求を送信し（Ｓ１０）、現マスターＭからのマスター交代要求に対する新しいマスターＭの指定とリプライを受信する（Ｓ１１）。一方、ステップ９において、自己制御装置１０のレプリケーション状態が非同期、または同期であるがレプリケーション識別子が最新でないと判定した場合、処理を終了する。
【００５１】
ステップＳ１１において、現マスターＭは、レプリケーション状態が同期、かつレプリケーション識別子が最新であると判定した場合、マスター交代要求を了解する。マスター交代要求を了解された制御装置１０は、自己制御装置１０をマスターＭと決定し（Ｓ６）、処理を終了する。一方、ステップＳ１１において、現マスターＭは、レプリケーション状態が非同期、または同期であるがレプリケーション識別子が最新でないと判定した場合、マスター交代要求を拒否する。マスター交代要求を拒否された制御装置１０は、処理を終了する。
【００５２】
以上のように、本発明の実施形態に係るデータベースシステムは、複数の制御装置１０のうちの１台をマスター装置Ｍ、マスター装置Ｍ以外の制御装置１０をスレーブ装置Ｓとし、マスター装置Ｍからスレーブ装置Ｓへデータのレプリケーションを行うデータベースシステムであって、制御装置１０の間でレプリケーション情報２Ｄを相互に交換し、レプリケーションを行っている途中でマスター装置Ｍに障害が発生した場合、最新のデータについてレプリケーションが完了しているスレーブ装置Ｓを優先的に新しいマスター装置Ｍとして決定する。これにより、レプリケーションの途中でマスター装置Ｍに障害が発生した場合でも、外部端末３０の保有するデータと整合を図ることが可能となる。
【００５３】
具体的には、制御装置１０は、レプリケーション情報を記憶する記憶部２と、他の制御装置１０との間でレプリケーション情報２Ｄを送受信する送受信部３と、所定の条件に基づいてマスター装置Ｍを決定する決定部４とを備え、レプリケーション情報２Ｄには、レプリケーションの状態を示すレプリケーション状態と、レプリケーションの対象であるデータの新旧を示すレプリケーション識別子とが含まれてもよい。これにより、レプリケーション状態が同期、かつレプリケーション識別子が最新であるか否かを判定することが可能である。
【００５４】
また、マスター装置Ｍが不在の場合、制御装置１０間の合議により、レプリケーション状態が同期であり、かつ最新のレプリケーション識別子を保有するスレーブ装置Ｓを新しいマスター装置Ｍとして決定してもよい。これにより、両系障害等によってマスター装置Ｍが不在となった場合でも、外部端末３０の保有するデータと整合を図ることが可能である。
【００５５】
また、制御装置１０は、他の制御装置１０のレプリケーション識別子と自己制御装置１０のレプリケーション識別子とを比較し、自己制御装置１０のレプリケーション識別子が最新でないと判定した場合、マスター装置Ｍにマスター交代要求を送信することなく、自己制御装置１０のレプリケーション状態を非同期に遷移させてもよい。これにより、マスター装置Ｍに不要なマスター交代要求が送信されないため、マスター装置Ｍ側において新しいマスター装置Ｍを選定する処理が軽減される。
【００５６】
なお、本発明は、このようなデータベースシステムとして実現することができるだけでなく、このようなデータベースシステムが備える特徴的な処理部をステップとするマスター／スレーブ決定方法として実現したり、それらのステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ等の記録媒体やインターネット等の伝送媒体を介して配信することができるのは言うまでもない。
【符号の説明】
【００５７】
１…データベース
２…記憶部
２Ａ…制御装置状態情報
２Ｂ…接続状態情報
２Ｃ…マスター条件情報
２Ｄ…レプリケーション情報
３…送受信部
４…決定部
５…監視部
１０…制御装置
３０…外部端末
Ｍ…マスター装置（マスター）
Ｓ，Ｓ1，Ｓ2…スレーブ装置（スレーブ）
【図１】
0006282989.tif 000002
【図２】
0006282989.tif 000003
【図３】
0006282989.tif 000004
【図４】
0006282989.tif 000005
【図５】
0006282989.tif 000006
【図６】
0006282989.tif 000007
【図７】
0006282989.tif 000008
【図８】
0006282989.tif 000009
【図９】
0006282989.tif 000010
【図１０】
0006282989.tif 000011
【図１１】
0006282989.tif 000012