(57)【要約】【課題】データベース間でレプリケーションを行うシステムでは、複数のデータベースを集中管理する管理サービスによってデータの整合性が保たれている。しかし、管理サービスに障害が発生した際に、データベースの情報を保障できなくなってしまい、レプリケーションやデータベースのフェールオーバーが行えなくなることでシステムの可用性が失われていた。【解決手段】データベース間で生死確認を行い、複数のデータベースと管理サービスのうち過半数以上が正常に動作している場合に、フェールオーバー処理や、データベースへの読み取り書き込みを許可する。【選択図】図６
2015005147.tif 000002
【特許請求の範囲】
【請求項１】
レプリケーションされた複数のデータベースサーバー（１０３、１０４）とデータベースを管理するデータベース管理サーバー（１０２）からなるデータベースシステムにおいて、
データベースサーバー間でお互いが正常に動作しているか確認する確認手段（Ｓ６０１）と、
前記確認手段によって正常に動作していないと判断した場合は前記データベース管理サーバーに問い合わせを行う問合せ手段（Ｓ６０３）と、
複数のデータベースサーバーとデータベース管理サーバーのうち過半数以上の正常動作が確認できた場合は処理を継続する継続手段（Ｓ６０７）と、
前記過半数以上のうちレプリケーション元のデータベースサーバーに障害が発生した場合は、レプリケーション先のデータベースサーバーをレプリケーション元にフェールオーバーするフェールオーバー手段（Ｓ６１１）と、
前記過半数以上のうち、データベース管理サーバー、あるいはレプリケーション先のデータベースサーバーに障害が発生した場合は、データベースへの読み取り書き込みを許可する許可手段（Ｓ６１０、Ｓ７０５）と、
を備えるデータベースシステム。
【請求項２】
複数のデータベースサーバーとデータベース管理サーバーのうち過半数以上の正常動作が確認できない場合はデータベースサーバーへの読み取り書き込みを禁止する禁止手段（Ｓ６０９、Ｓ７０６）を備える請求項１に記載のデータベースシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レプリケーションされたデータベースの整合性保持方法に関する。
【背景技術】
【０００２】
従来、データベースを多重化して、データベース障害に備える方法が多く示されている。また、データベースを多重化した場合、複数台のデータベースを集中管理するサーバーを用意することによって、データベースのフェールオーバーなどの制御を行い、一貫性を保障する方法が一般的である(特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００８−５４２８５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、複数のデータベースを集中管理するサーバーに障害が発生した場合、データベースの情報が保障できなくなり不整合が発生してしまうため、フェールオーバーや、レプリケーション処理を安易に行うことが出来ないという課題があった。そのため、一貫性は保障されても、可用性が損なわれてしまっていた。
【課題を解決するための手段】
【０００５】
レプリケーションされた複数のデータベースサーバー（１０３、１０４）とデータベースを管理するデータベース管理サーバー（１０２）からなるデータベースシステムにおいて、
データベースサーバー間でお互いが正常に動作しているか確認する確認手段（Ｓ６０１）と、
前記確認手段によって正常に動作していないと判断した場合は前記データベース管理サーバーに問い合わせを行う問合せ手段（Ｓ６０３）と、
複数のデータベースサーバーとデータベース管理サーバーのうち過半数以上の正常動作が確認できた場合は処理を継続する継続手段（Ｓ６０７）と、
前記過半数以上のうちレプリケーション元のデータベースサーバーに障害が発生した場合は、レプリケーション先のデータベースサーバーをレプリケーション元にフェールオーバーするフェールオーバー手段（Ｓ６１１）と、
前記過半数以上のうち、データベース管理サーバー、あるいはレプリケーション先のデータベースサーバーに障害が発生した場合は、データベースへの読み取り書き込みを許可する許可手段（Ｓ６１０）と、
を備えるデータベースシステム。
【発明の効果】
【０００６】
データベースの一貫性を保ちながら、システム全体の可用性を高めることが可能となる。
【図面の簡単な説明】
【０００７】
【図１】システム構成を示すブロック図である。
【図２】ハードウェア構成を示すブロック図である。
【図３】データベース管理サーバー１０２のソフトウェアモジュール構成を示す図である。
【図４】データベースサーバー１０３、１０４のソフトウェアモジュール構成を示す図である。
【図５（ａ）】データベース管理サーバーのメモリマップを示す図である。
【図５（ｂ）】データベースサーバー１０３、１０４のメモリマップを示す図である。
【図６】データベースサーバー１０３、１０４のフェールオーバー処理を示すフローチャートである。
【図７】データベース管理サーバー１０２が停止した際のデータベースサーバー１０３の処理を示すフローチャートである。
【発明を実施するための形態】
【０００８】
［実施例１］
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【０００９】
図１は、本発明の実施例のシステム構成を示すブロック図である。
【００１０】
図中１０１は、アプリケーションサーバーであり、アプリケーションの処理に係るデータをデータベースサーバー（１０３、１０４）に保存する。また、外部からの要求に応じてデータベースサーバー（１０３、１０４）から所定の情報を読み出し、必要な処理を行って外部に応答する。アプリケーションサーバー１０１は、必要な情報がどのデータベースサーバーに保持されているかをデータベース管理サーバーに問い合わせアクセスするデータベースサーバーを特定する。
【００１１】
１０２は、データベース管理サーバーであり、データベースサーバー（１０３、１０４）の管理情報を保持している。また、データベースサーバー（１０３、１０４）に障害が発生した場合にはフェールオーバーの指示をデータベースサーバー（１０３、１０４）に対して行う。
【００１２】
１０３、１０４は、データベースサーバーである。１０３、１０４いずれか１つがマスター、もう一方がスレーブの役割を持ち、マスターの役割をもつデータベースサーバーはアプリケーションサーバー１０１からのデータベースへの書き込み、読み取り要求に対して処理を行う。また、マスターの役割をもつデータベースサーバーに書き込みが発生した場合は、一方のデータベースサーバーに対して、データの複製を行う。また、スレーブの役割をもつデータベースサーバーは、アプリケーションサーバー１０１からの読み取り要求に対して処理を行う。また、マスターの役割をもつデータベースサーバーに障害が発生した際には、データベース管理サーバー１０２の指示により、マスターの役割をもつデータベースサーバーにフェールオーバーを行う。なお、図１には記載していないが、本実施例ではマスターとスレーブの役割を持つデータベースサーバーの組み合わせが複数存在することを想定している。
【００１３】
上記各構成要素はネットワーク１００により通信可能に接続されている。ネットワークは、例えば、インターネット等のＬＡＮ、ＷＡＮ、電話回線、専用デジタル回線、ＡＴＭやフレームリレー回線、ケーブルテレビ回線、データ放送用無線回線等のいずれである。また、これらの組み合わせにより実現される、いわゆる通信ネットワークである。
【００１４】
ネットワークはデータの送受信が可能であればよい。
【００１５】
アプリケーションサーバー１０１からデータベース管理サーバー１０２、データベースサーバー１０３への通信手段、及び各サービスの通信手段が異なっていてもよい。
【００１６】
図２は、図１のアプリケーションサーバー１０１、データベース管理サーバー１０２、データベースサーバー１０３、１０４のハードウェア構成を示すブロック図である。図中、２０１は内部バスで接続される各デバイス（後述のＲＯＭ、ＲＡＭ他）を直接或いは間接的に制御し、本発明を実現するためのプログラムを実行するＣＰＵである。２０２はＢＩＯＳが格納してあるＲＯＭである。２０３はＣＰＵ２０１のワーク領域として利用されたり、本発明を実現するためのソフトウェアモジュールをロードするための一時記憶として利用されたりするＲＡＭ（直接記憶装置）である。２０４は基本ソフトウェアであるＯＳやソフトウェアモジュールが記憶されているＨＤＤ（ハードディスクドライブ）、もしくはＳＳＤ（ソリッドステートドライブ）などの間接記憶装置である。２０５は入力装置であり不図示のキーボードやポインティングデバイスなどである。２０６は出力装置でありディスプレイが接続される。２０７はネットワーク１００に接続するためのＩ／Ｆである。
【００１７】
これらハードウェアでは、起動後ＣＰＵ２０１によりＢＩＯＳが実行されＯＳがＨＤＤ２０４からＲＡＭ２０３に実行可能にロードされる。ＣＰＵ２０１はＯＳの動作に従って後述する各種ソフトウェアモジュールをＨＤＤ２０４からＲＡＭ２０３に随時、実行可能にロードする。各種ソフトウェアモジュールは上記各デバイスの協調によりＣＰＵ２０１によって実行され動作する。また、Ｉ／Ｆ２０７はネットワーク１００に接続されており、ＯＳの動作に従ってＣＰＵ２０１により制御され、上述した通信手段による通信を実現している。
【００１８】
＜データベース管理サーバーのソフトウェアモジュール構成＞
図３は、データベース管理サーバー１０２のソフトウェアモジュール構成を示す図である。
【００１９】
送受信部３０１は、アプリケーションサーバー１０１および、データベースサーバー１０３、１０４からの要求や応答を処理する。
【００２０】
制御部３０２は、アプリケーションサーバー１０１および、データベースサーバー１０３、１０４からの要求に応じて、データベース３０３より情報を読み出したり、書き込みを行う。
【００２１】
データベース３０３は、アプリケーションサーバー１０１のデータがどのデータベースサーバーに保存されているかを管理情報や、データベースサーバー１０３、１０４の管理情報が保存されている。
【００２２】
＜データベースサーバーのソフトウェアモジュール構成＞
図４はデータベースサーバー１０３、１０４のソフトウェアモジュール構成を示す図である。
【００２３】
送受信部４０１は、アプリケーションサーバー１０１、データベース管理サーバー１０２からの要求や応答を処理する。
【００２４】
制御部４０２は、アプリケーションサーバー１０１からの要求に応じて、アプリケーションサーバー１０１のデータをデータベース４０３から読み出したり書き込みを行う。また、データベース管理サーバーからの要求に応じてスレーブからマスターの役割にフェールオーバーを行う。また、マスターの役割を持つ場合は、スレーブに対してデータの複製要求を送受信部４０１を介して行う。
【００２５】
データベース４０３は、アプリケーションサーバー１０１の情報が保存されている。
【００２６】
＜データベース管理サーバーのメモリマップ＞
図５（a）は、データベース管理サーバー１０２のメモリマップを示す図である。
【００２７】
データベースマップ５０１は、アプリケーションサーバー１０１のデータがどのデータベースサーバーに保存されているかの情報が格納されている。データベース管理サーバー１０２はアプリケーションサーバー１０１の要求に応じてデータベースマップ５０１情報を取得し、アプリケーションサーバー１０１がアクセスすべきデータベースサーバーの情報を応答する。
【００２８】
データベース管理情報５０２は、データベースサーバー（１０３、１０４）の状態が格納されている。データベース管理サーバー１０２は、データベースサーバーからの通知に応じて、どのデータベースサーバーがマスター、スレーブかの情報や、データベースサーバーに障害が発生しているかやフェールオーバー処理中等の情報を更新する。
【００２９】
＜データベースサーバーのメモリマップ＞
図５（b）は、データベースサーバー１０３、１０４のメモリマップを示す図である。
データベース状態５１１は、自身がマスターかスレーブかの情報や、組み合わせ情報５１２で特定されるマスターとスレーブの組み合わせの相手の状態が格納されている。データベース状態５１１は、フェールオーバー発生時や、マスタースレーブ間の定期的なハートビートによる生死確認により更新する。
【００３０】
組合せ情報５１２は、マスター、スレーブのレプリケーション相手のIPアドレスが格納されている。
【００３１】
データベース管理サーバー情報５１３は、データベース管理サーバー５１３の状態が格納されている。
【００３２】
アプリケーションデータ５１４は、アプリケーションサーバー１０１からの要求によりデータベースサーバーに格納されるデータである。
【００３３】
許可情報５１４は、データベースサーバーの状態に応じたデータベースへの読み込み、書き込みを示す情報である。
【００３４】
＜データベースサーバーのフェールオーバー処理＞
図６は、本実施例におけるデータベースサーバー１０３、１０４のフェールオーバー処理を示すフローチャートである。なお、データベースサーバー１０３、１０４の処理は同様の判断を行うため、フローチャートの説明はデータベースサーバー１０３の処理として説明する。
【００３５】
Ｓ６０１において、データベースサーバー１０３は、組合せ情報５１２によって特定される相手のデータベースサーバーに対して正常に動作しているかどうかの確認を行う。確認の方法に関して特に限定はしない。本実施例では、通信を行った結果によって相手のデータベースサーバーが正常に動作しているかどうかの判断を行う。
【００３６】
Ｓ６０２において、データベースサーバー１０３は、組合せ情報５１２によって特定される相手のデータベースサーバーに対して通信を行い、応答が無かった場合は障害発生と判断し、Ｓ６０３の処理を行う。
【００３７】
Ｓ６０３において、データベースサーバー１０３は、データベース管理サーバー１０２からデータベース管理情報５０２を取得する。
【００３８】
Ｓ６０４において、データベースサーバー１０３は、Ｓ６０３で取得したデータベース管理情報と、自身のデータベース状態５１１を照合する。
【００３９】
Ｓ６０５において、データベースサーバー１０３は、Ｓ６０４の照合の結果、データベース状態５１１と合致しない場合は、Ｓ６０６の処理を行い、正しい場合はＳ６０７の処理を行う。
【００４０】
Ｓ６０６において、データベースサーバー１０３は、Ｓ６０４で取得したデータベース管理情報をもとにデータベース状態５１１を更新する。
【００４１】
Ｓ６０７において、データベースサーバー１０３は、自身を含めたデータベースサーバーとデータベース管理サーバー１０２のうち過半数以上が正常に動作しているかどうかの判断を行う。過半数以上が動作している場合はＳ６０８の処理を行い、過半数以上が動作していない場合はＳ６０９の処理を行う。
【００４２】
Ｓ６０８において、データベースサーバー１０３は、データベース状態５１１から自身がマスターの役割を持っているかどうかの確認を行う。マスターの役割を持っている場合は、Ｓ６１０の処理を行い、スレーブの役割の場合はＳ６１１の処理を行う。
【００４３】
Ｓ６０９において、データベースサーバー１０３は、許可情報５１４を読み込み書き込み不可能状態に更新する。
【００４４】
Ｓ６１０において、データベースサーバー１０３は、データベース状態５１１をスレーブ停止状態に更新する。
【００４５】
Ｓ６１１において、データベースサーバー１０３は、データベース状態５１１をフェールオーバー処理中に更新する。
【００４６】
Ｓ６１２において、データベースサーバー１０３は、データベース状態５１１の役割をマスターに変更し、データベースサーバー１０２へ通知を行う。
【００４７】
＜データベース管理サーバー１０２が停止している場合の処理＞
図７は、データベース管理サーバー１０２が停止した際のデータベースサーバー１０３の処理を示すフローチャートである。
【００４８】
Ｓ７０１において、データベースサーバー１０３は、データベース管理サーバー１０２からデータベース管理情報５０２得する。
【００４９】
Ｓ７０２において、データベースサーバー１０３は、Ｓ７０１でデータベース管理サーバー１０２からデータベース管理情報５０２が取得できた場合は、自身のもつデータベース状態５１１を更新し処理を継続する。取得できなかった場合はＳ７０３の処理を行う。
【００５０】
Ｓ７０３において、データベースサーバー１０３は、相手のデータベースサーバーが正常に動作しているかどうかを行う。
【００５１】
Ｓ７０４において、データベースサーバー１０３は、Ｓ７０３の処理によって相手のデータベースサーバーとデータベース管理サーバー１０２と自信のうち過半数以上が動作しているかどうかを判断し、過半数以上動作している場合は、Ｓ７０５の処理を行う。過半数以上動作していない場合はＳ７０６の処理を行う。
【００５２】
Ｓ７０５において、データベースサーバー１０３はデータベース管理情報５１３を更新し処理を継続する。
【００５３】
Ｓ７０６において、データベースサーバー１０３は許可情報５１４を読み込み書き込み不可能状態に更新する。
【符号の説明】
【００５４】
１０２  データベース管理サーバー
１０３、１０４  データベースサーバー
５０２  データベース管理情報
５１１  データベース状態
５１４  許可情報
【図１】
2015005147.tif 000003
【図２】
2015005147.tif 000004
【図３】
2015005147.tif 000005
【図４】
2015005147.tif 000006
【図５（ａ）】
2015005147.tif 000007
【図５（ｂ）】
2015005147.tif 000008
【図６】
2015005147.tif 000009
【図７】
2015005147.tif 000010