(57)【要約】      （修正有）【課題】レプリカデータベースに障害が発生し、レプリカデータベースのデータが破壊、消失しても、レプリカデータベースの状態を簡単に障害発生前の状態に戻すことができるデータ復旧方法を提供する。【解決手段】マスタデータベース１０３に対する更新データの種類を検出し、その種類が削除の場合は、レプリカデータベース１０４にアクセスして更新データに該当するレコードを読み出し、その読み出しデータを復旧用インサートデータとしてマスタサーバ１０１に備えられた更新命令格納データベース１０８に格納しておき、レプリカデータベース１０４を復旧させる際に、マスタデータベース１０３からのデータ以外のデータをこの更新命令格納データベース１０８からレプリカデータベース１０４へ反映させる。【選択図】図１
2007257416.tif 000002
【特許請求の範囲】
【請求項１】
マスタデータベースを備えるマスタサーバと、レプリカデータベースを備えるレプリカサーバとそれらを接続するネットワークによって構成されたレプリケーションシステムにおいて、前記マスタデータベースに対する更新データの種類を検出し、その種類が削除の場合は、前記レプリカデータベースにアクセスして更新データに該当するレコードを読み出し、その読み出しデータを復旧用インサートデータとして前記マスタサーバに備えられた更新命令格納データベースに格納しておき、前記レプリカデータベースを復旧させる際に、前記マスタデータベースからのデータ以外のデータをこの更新命令格納データベースからレプリカデータベースへ反映させることを特徴とするレプリケーションシステムにおけるデータ復旧方法。
【請求項２】
レプリカデータベース障害復旧時は、マスタデータベースの全データをレプリカデータベースへ転送後に、更新命令格納データベースに格納されているデータをレプリカデータベースへ反映させることを特徴とする請求項１に記載のレプリケーションシステムにおけるデータ復旧方法。
【請求項３】
更新命令格納データベースに格納されているデータをレプリカデータベースへ反映させる際に、すでにレプリカデータベースにレコードが存在していた場合は、そのレコードに対しては反映処理を省略することを特徴とする請求項１又は２に記載のレプリケーションシステムにおけるデータ復旧方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マスタデータベースを備えるマスタサーバと、レプリカデータベースを備えるレプリカサーバとそれらを接続するネットワークによって構成されたレプリケーションシステムに関し、特にデータ反映条件を指定できるデータ復旧方法に関するものである。
【背景技術】
【０００２】
従来のレプリケーションシステムによる復旧の一例が、特許文献１に記載されている。この従来のシステムは、マスタデータベースを備えるマスタサーバと、レプリカデータベースを備えるレプリカサーバとそれらを接続するネットワークによって構成されている。この従来のシステムでは、マスタサーバからレプリカサーバへのデータ送信を行っており、一部のレプリカサーバに障害が発生した場合、レプリカサーバへ送信するはずであったデータを保持しておき、障害が発生したレプリカサーバが回復した後に、保持したマスタサーバの更新データをレプリカサーバへ再送する仕組みである。
他の一般的な復旧方法としては、マスタデータベースの全データをレプリカデータベースへ送信して、同期を取る方法がある。
【特許文献１】特開平１１−２５９３４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
マスタデータベースの全データをレプリカデータベースへ一旦転送し、同期状態を作成した後、マスタデータベースによる削除処理が発生してもレプリカデータ側へ削除処理を反映させない仕組みをもったレプリケーションシステムの場合、次のような問題点があった。
【０００４】
第１の問題点は、レプリカデータベースに障害が発生し、データが破壊、もしくは、消失した場合、レプリカデータベースのバックアップを採取していないと障害直前の状態には復旧できない、ということである。
【０００５】
その理由は次の通りである。
マスタデータベースとレプリカデータベースを初期同期後、マスタデータベースへ削除処理（Ｄｅｌｅｔｅ命令による更新）を行った場合、その内容を反映しない仕組みを適用しているため、マスタデータベースでは削除されたデータをレプリカデータベース側だけに保持している状態が発生する。
【０００６】
マスタデータベースでは削除されたデータをレプリカデータベース側だけに保持している状態で、レプリカデータベースに障害が発生した場合、レプリカデータベース側でバックアップを採取していないと、復旧のためにマスタデータベースの全データを送信しても、レプリカデータベース側だけに保持していたデータの復旧はできない。
【０００７】
また、特許文献１のように、レプリカデータベース障害時点からの更新データを保持する場合、復旧できる範囲はレプリカデータベース障害発生後の更新部分についてだけである。
【０００８】
第２の問題点は、レプリカデータベース側でバックアップを保持していても、復旧時間がかかるということである。
その理由は、レプリカデータベースにバックアップデータを適用後、レプリカデータベースを最新の状態にするために、バックアップを採取した時点から現在までの間に、マスタデータベースへ発生した更新データを調査して反映させなければならないためである。
【０００９】
本発明の目的は、マスタデータベースを備えるマスタサーバと、レプリカデータベースを備えるレプリカサーバとそれらを接続するネットワークによって構成されたシステムにおいて、マスタデータベースによる削除処理が発生してもレプリカデータベース側へ削除処理を反映させない仕組みをもっている場合、レプリカデータベースに障害が発生し、レプリカデータベースのデータが破壊、消失しても、レプリカデータベースの状態を簡単に障害発生前の状態に戻すことができるデータ復旧方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明のレプリケーションシステムにおけるデータ復旧方法では、マスタデータベースに対する更新データの種類を検出し、その種類が削除の場合は、レプリカデータベースにアクセスして更新データに該当するレコードを読み出し、その読み出しデータを復旧用インサートデータとしてマスタサーバに備えられた更新命令格納データベースに格納しておき、レプリカデータベースを復旧させる際に、マスタデータベースからのデータ以外のデータをこの更新命令格納データベースからレプリカデータベースへ反映させる。
【００１１】
レプリカデータベースの障害発生時は、マスタデータベースの全データをレプリカデータベースへ転送後、更新命令格納データベースに保存していた更新データを適用することで、レプリカデータベースを障害直前の状態に復旧することが可能である。
【００１２】
更新命令格納データベースに格納されているデータをレプリカデータベースへ反映させる際に、すでにレプリカデータベースにレコードが存在していた場合は、そのレコードに対しては反映処理を省略することにより、復旧までの時間を一層短縮できる。
【発明の効果】
【００１３】
本発明の第１の効果は、レプリカデータベースにのみ存在していたデータをレプリカデータベースのバックアップを取得することなく、復旧できることにある。
その理由は、マスタデータベース上で削除処理（Ｄｅｌｅｔｅ命令による更新）したデータから、レプリカデータベース側への復旧用更新データを作成し保存する機能を有しているからである。
【００１４】
第２の効果は、レプリカデータベース障害発生後から復旧するまでの時間を短縮できることにある。
その理由は、レプリカデータベースのバックアップが採取してあった場合、バックアップデータを適用するまでは時間がかからないが、バックアップ採取時点から、レプリカデータベース障害発生時点まで、もしくは復旧を行う現時点までのマスタデータベースに対する更新データ（Ｄｅｌｅｔｅ命令を除く）を調査してレプリカデータベースへ反映させなければならないが、本発明は、調査する時間が省けるため、復旧までの時間を短縮することが可能である。
【発明を実施するための最良の形態】
【００１５】
次に、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
【実施例】
【００１６】
図１は、本発明を実施するレプリケーションシステムの構成例を示す。このシステムは、データの転送元となるマスタサーバ（コンピュータ）１０１と、データの転送先となる１〜ｎ（ｎは任意の整数）個のレプリカサーバ（コンピュータ）１０２と、これらを接続するネットワーク１０６とで構成される。マスタサーバ１０１は、マスタデータベース１０３の他に更新命令格納データベース１０８を備えている。各レプリカサーバ１０２はレプリカデータベース１０４を備え、通常は同じデータを格納している。マスタデータベース１０３へのデータ更新は、業務プログラム１０５から実施される。
【００１７】
次に、図２〜図５を参照して本実施の形態の全体の動作について詳細に説明する。
まず、マスタデータベース１０３とレプリカデータベース１０４の状態を合わせるため、図２において全データ転送処理２０１により、マスタデータベース１０３の全データをレプリカデータベース１０４へ転送する。転送完了後は図３のレコード状態となる。次に、業務プログラム１０５からマスタデータベース１０３に更新処理が実行される。
【００１８】
プロセス１０７は、更新検出処理２０２により更新を検出すると、更新種類判断処理２０３により、更新種類をＩｎｓｅｒｔ、Ｕｐｄａｔｅ、Ｄｅｌｅｔｅに判別する。反映判断処理２０４、２０５により、Ｉｎｓｅｒｔ又はＵｐｄａｔｅであれば、データ反映処理２０７により、データをレプリカデータベース１０４へ反映する。
【００１９】
反映判断処理２０４、２０５（図４における４０１）により、Ｄｅｌｅｔｅであれば、データ問い合わせ／取得処理２０６（図４における４０２）により、レプリカデータベース１０４の接続可能なところ１箇所、つまり、ｎ個のレプリカサーバ１０２のレプリカデータベース１０４へアクセスして最も早く応答のあったレプリカデータベース１０４から、更新データに該当するレコードを読み出す。読み出したデータから更新命令生成処理２０８によって、復旧用Ｉｎｓｅｒｔ命令（復旧用インサートデータ）を作成し、更新命令格納処理２０９（図４における４０３）によって、更新命令格納データベース１０８へ格納する。
【００２０】
ここで復旧用Ｉｎｓｅｒｔ命令の作成とは、データ問い合わせ／取得処理２０６により取得した削除データのレコードが、例えば、'COLUM1','COLUMN2','COLUMN3'というデータであれば、
INSERT INTO TABLE1 VALUES ('COLUM1','COLUMN2','COLUMN3');
というSQL文を作成することである。
【００２１】
レプリカデータベース１０４に異常が無い場合は、処理２０２〜２０９を繰り返す。
【００２２】
レプリカデータベース１０４に障害が発生した場合は、障害復旧後、全データ転送処理２０１（図５の５０１）によってマスタデータベース１０３の全データを復旧したレプリカデータベース１０４へ転送する。更新命令判断処理２１０、２１１によって、更新命令格納データベース１０８に格納されたレコードが、レプリカデータベース１０４に存在しているか確認する。
【００２３】
すでに存在しているデータの場合は処理を終了する（存在するレコードに対しては反映処理を省略する）。レプリカデータベース１０４にレコードが存在していない場合は、マスタデータベース１０３上にもすでに存在していないので、データ反映処理１１１、２１２（図５の５０２）により、更新命令格納データベース１０８に格納されているデータを、上記INSERT文を使用して、復旧対象のレプリカデータベース１０４へデータを反映させる。データ更新命令判断処理２１０から２１２もしくは、２１３までの処理を更新命令格納データベース１０８のデータ全てについて繰り返すことで、レプリカデータベース障害前の状態に復旧する。
【００２４】
具体例で示すと、以下にようになる。
＜全データ転送処理２０１により、レプリカデータベース１０４に転送後の状態>
マスタデータベースの内容
'aa','bb','cc'→レコード1
'dd','ee','ff'→レコード2
第１のレプリカデータベースの内容
'aa','bb','cc'→レコード1
'dd','ee','ff'→レコード2
第２レプリカデータベースの内容
'aa','bb','cc'→レコード1
'dd','ee','ff'→レコード2
【００２５】
＜削除処理が発生した後の状態＞
(レコード2を削除)
マスタデータベースの内容
'aa','bb','cc'→レコード1
DELETE命令のため、レプリカデータベースへは、反映を実施しない。
代わりに、第１レプリカデータベース又は第２のレプリカデータベースのうちの先に通信した方から、レコード2のデータを取得する（マスタサーバの削除データは、該当するデータの一部しか、プロセス１０７に渡されない場合があるため)。
レコード2から、次の更新命令を作成し、更新命令格納データベース１０８へ格納する。
INSERT INTO TABLE VALUES ('dd','ee','ff');
第１レプリカデータベースの内容
'aa','bb','cc'→レコード1
'dd','ee','ff'→レコード2
第２レプリカデータベースの内容
'aa','bb','cc'→レコード1
'dd','ee','ff'→レコード2
【００２６】
＜第１レプリカデータベースで障害＞
第１のレプリカデータベースが障害によりデータがなくなり、その復旧のために、マスタデータベースから全データ転送処理により、データを転送する。
第１のレプリカデータベースの内容
'aa','bb','cc'→レコード1
元あったはずの、レコード2が無いため、次の更新命令を作成し、更新命令格納データベース１０８に格納したレコード2を元に復旧する。
INSERT INTO 第１のレプリカデータベース VALUES ('dd','ee','ff');
第１レプリカデータベースの内容
'aa','bb','cc'→レコード1
'dd','ee','ff'→レコード2
【図面の簡単な説明】
【００２７】
【図１】本発明の第１の発明を実施するための最良の形態の構成を示すブロック図である。
【図２】図１のプロセスの動作を示す流れ図である。
【図３】図２の全データ転送処理が終了した直後のレコード状態を示す図である。
【図４】図１の動作をレコード単位で説明した図である。
【図５】図１の動作をレコード単位で説明した図である。
【符号の説明】
【００２８】
１０１    マスタサーバ
１０２，１０３    レプリカサーバ
１０３    マスタデータベース
１０４    レプリカデータベース
１０５    業務プログラム
１０６   ネットワーク
１０７    プロセス
１０８    更新命令格納データベース
１０９    データ反映処理
１１０    更新命令格納処理
１１１    データ反映処理
２０１    全データ転送処理
２０２    更新検出処理
２０３    更新種類判断処理
２０４    反映判断処理
２０５    反映判断処理
２０６    データ問い合わせ／取得処理
２０７    データ反映処理
２０８    更新命令生成処理
２０９    更新命令格納処理
２１０    更新命令判断処理
２１１    更新命令判断処理
２１２    データ反映処理
２１３    処理終了
３０１    全データ転送処理
４０１    反映判断処理
４０２    データ問い合わせ／取得処理
４０３    更新命令格納処理
５０１    全データ転送処理
５０２    データ反映処理
【図１】
2007257416.tif 000003
【図２】
2007257416.tif 000004
【図３】
2007257416.tif 000005
【図４】
2007257416.tif 000006
【図５】
2007257416.tif 000007