(57)【要約】【課題】クラスタシステムを用いてレプリケーションを実行する際におけるスループットの劣化を抑制しつつ、障害発生時の継続処理を実現し得る、レプリケーションシステム、マスタサーバ、レプリカサーバ、レプリケーション方法、及びプログラムを提供する。【解決手段】データベースシステム２は、マスタデータベース１３、マスタサーバ１０−１〜Ｎ、個別データベース１１−１〜Ｎを備える。データベースシステム３は、レプリカデータベース２１とレプリカサーバ２０とを備える。各マスタサーバは、マスタデータベース１３に処理を行った場合の更新ログを個別データベースに格納し、それに時間情報を付加し、時間情報が付加された更新ログをレプリカサーバ２０に送信する。レプリカサーバ２０は、更新ログを時間情報に基づいてマージし、更新をレプリカデータベース２１に反映させるためのファイルを生成し、これを用いてレプリケーションを実行する。【選択図】図１
2010244117.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータベースシステムと、第２のデータベースシステムとを備えたレプリケーションシステムであって、
前記第１のデータベースシステムは、レプリケーション元となるマスタデータベースと、前記マスタデータベースに対して処理を行う複数のマスタサーバと、前記複数のマスタサーバそれぞれ毎に設けられた個別データベースとを備え、
前記第２のデータベースシステムは、レプリケーション先となるレプリカデータベースと、前記レプリカデータベースに対して処理を行うレプリカサーバとを備え、
前記複数のマスタサーバそれぞれは、前記マスタデータベースに対して処理を行った場合に得られる更新ログを、それぞれの前記個別データベースに格納し、更に、前記更新ログに時間情報を付加し、そして、前記時間情報が付加された更新ログを前記レプリカサーバに送信し、
前記レプリカサーバは、前記複数のマスタサーバそれぞれから送信されてきた前記更新ログを、各更新ログに付加された時間情報に基づいてマージし、それによって、前記マスタデータベースでの更新を前記レプリカデータベースに反映させるためのファイルを生成し、生成した前記ファイルを用いて前記レプリカデータベースをレプリケーションする、ことを特徴とするレプリケーションシステム。
【請求項２】
前記レプリカサーバは、前記時間情報によって特定される時間が同一と見なされる更新ログが、前記複数のマスタサーバ全てから取得されているかどうかを判定し、
取得されていない場合は、取得できていなマスタサーバに更新ログの送信を通知し、
更に、前記取得てきていないマスタサーバから更新ログが送信されない場合は、別のマスタサーバに、前記取得てきていないマスタサーバの更新ログを取得させ、送信させる、請求項１に記載のレプリケーションシステム。
【請求項３】
前記複数のマスタサーバそれぞれが、設定された時間間隔で、基準時からの経過時間を示す時間番号を含む制御ログを生成し、前記時間情報として前記制御ログを前記更新ログに付加する、請求項１または２に記載のレプリケーションシステム。
【請求項４】
前記レプリカサーバが、前記複数のマスタサーバそれぞれ毎に、前記制御ログを検出し、検出した前記制御ログの時間番号より時間番号が１つ小さい制御ログの後の更新ログから、検出した制御ログの手間のログまでを組データとして取り出し、前記制御ログの前記時間番号が同一となる組データをマージする、請求項３に記載のレプリケーションシステム。
【請求項５】
前記複数のマスタサーバそれぞれが、前記処理の終了の際に前記マスタデータベースに対してＣＯＭＭＩＴ命令を発行し、発行した順に、各ＣＯＭＭＩＴ命令に番号を付加して、ＣＯＭＭＩＴログを生成し、これを前記更新ログに付加しており、
前記レプリカサーバが、マージ対象となる各組データについて、前記組データに含まれる前記ＣＯＭＭＩＴ命令の番号を抽出し、抽出した番号に基づいてマージを行う、請求項４に記載のレプリケーションシステム。
【請求項６】
マスタデータベースとレプリカデータベースとを有するレプリケーションシステムにおいて、前記マスタデータベースに対して処理を行うマスタサーバであって、
前記マスタデータベースに対して処理を行い、それによって得られた更新ログを記憶装置に格納させる、更新処理部と、
前記更新ログに時間情報を付加する、時間情報付加部と、
前記時間情報を付加した前記更新ログを、前記レプリカデータベースに対して処理を行うレプリカサーバに送信する、更新ログ送信処理部と、
を備えていることを特徴とするマスタサーバ。
【請求項７】
前記時間情報付加部が、設定された時間間隔で、基準時からの経過時間を示す時間番号を含む制御ログを生成し、前記時間情報として前記制御ログを前記更新ログに付加する、請求項６に記載のマスタサーバ。
【請求項８】
マスタデータベースとレプリカデータベースとを有するレプリケーションシステムにおいて、前記レプリカデータベースに対して処理を行うレプリカサーバであって、
前記マスタデータベースに対して処理を行う複数のマスタサーバから送信されてきた更新ログを受信する、更新ログ受信処理部と、
受信した前記複数のマスタサーバそれぞれの更新ログを、各更新ログに付加されている時間情報に基づいてマージし、それによって、前記マスタデータベースでの更新を前記レプリカデータベースに反映させるためのファイルを生成する、更新ログマージ処理部と、
生成した前記ファイルを用いて前記レプリカデータベースをレプリケーションする、更新ログ反映処理部と、
を備えていることを特徴とするレプリカサーバ。
【請求項９】
前記更新ログマージ処理部が、前記時間情報によって特定される時間が同一と見なされる更新ログが、前記複数のマスタサーバ全てから取得されているかどうかを判定し、
取得されていない場合は、取得できていなマスタサーバに更新ログの送信を通知し、
更に、前記取得てきていないマスタサーバから更新ログが送信されない場合は、別のマスタサーバに、前記取得てきていないマスタサーバの更新ログを取得させ、送信させる、請求項８に記載のレプリカサーバ。
【請求項１０】
第１のデータベースシステムと、第２のデータベースシステムとを備え、
前記第１のデータベースシステムは、レプリケーション元となるマスタデータベースと、前記マスタデータベースに対して処理を行う複数のマスタサーバと、前記複数のマスタサーバそれぞれ毎に設けられた個別データベースとを備え、
前記第２のデータベースは、レプリケーション先となるレプリカデータベースと、前記レプリカデータベースに対して処理を行うレプリカサーバとを備えている、レプリケーションシステムを用いたレプリケーション方法であって、
（ａ）前記複数のマスタサーバそれぞれが前記マスタデータベースに対して処理を行った場合に得られる更新ログを、それぞれの前記個別データベースに格納する、ステップと、（ｂ）前記更新ログに時間情報を付加する、ステップと、
（ｃ）前記複数のマスタサーバそれぞれ毎に、前記時間情報が付加された更新ログを、前記レプリカサーバに送信する、ステップと、
（ｄ）前記複数のマスタサーバそれぞれから前記レプリカサーバに送信されてきた前記更新ログを、各更新ログに付加された時間情報に基づいてマージする、ステップと、
（ｅ）前記（ｄ）のステップによるマージの結果から、前記マスタデータベースでの更新を前記レプリカデータベースに反映させるためのファイルを生成する、ステップと、
（ｆ）前記（ｅ）のステップで生成した前記ファイルを用いて前記レプリカデータベースをレプリケーションする、ステップと、
を有することを特徴とするレプリケーション方法。
【請求項１１】
（ｇ）前記時間情報によって特定される時間が同一と見なされる更新ログが、前記複数のマスタサーバ全てから取得されているかどうかを判定する、ステップと、
（ｈ）前記（ｇ）のステップで取得されていないと判定された場合に、取得できていなマスタサーバに更新ログの送信を通知する、ステップと、
（ｉ）前記（ｈ）のステップの実行後に、前記取得てきていないマスタサーバから更新ログが送信されない場合に、別のマスタサーバに、前記取得てきていないマスタサーバの更
新ログを取得させ、送信させる、ステップと、
を更に有する請求項１０に記載のレプリケーション方法。
【請求項１２】
前記（ｂ）のステップで、設定された時間間隔で、基準時からの経過時間を示す時間番号を含む制御ログを生成し、前記時間情報として前記制御ログを前記更新ログに付加する、請求項１０または１１に記載のレプリケーション方法。
【請求項１３】
前記（ｄ）のステップで、前記複数のマスタサーバそれぞれ毎に、前記制御ログを検出し、検出した前記制御ログの時間番号より時間番号が１つ小さい制御ログの後の更新ログから、検出した制御ログの手前のログまでを組データとして取り出し、前記制御ログの前記時間番号が同一となる組データをマージする、請求項１２に記載のレプリケーション方法。
【請求項１４】
（ｊ）前記（ｃ）のステップの実行前に、前記処理の終了の際に前記マスタデータベースに対してＣＯＭＭＩＴ命令を発行し、発行した順に、各ＣＯＭＭＩＴ命令に番号を付加して、ＣＯＭＭＩＴログを生成し、これを前記更新ログに付加するステップを更に有し、
前記（ｄ）のステップで、マージ対象となる各組データについて、前記組データに含まれる前記ＣＯＭＭＩＴ命令の番号を抽出し、抽出した番号に基づいてマージを行う、請求項１３に記載のレプリケーション方法。
【請求項１５】
マスタデータベースとレプリカデータベースとを有するレプリケーションシステムにおける前記マスタデータベースに対する処理を、コンピュータに実行させるためのプログラムであって、
前記コンピュータに、
（ａ）前記マスタデータベースに対して処理を行った場合に得られる更新ログを取得する、ステップと、
（ｂ）前記更新ログに時間情報を付加する、ステップと、
（ｃ）前記時間情報を付加した前記更新ログを、前記レプリカデータベースに対して処理を行うレプリカサーバに送信する、ステップと、
を実行させることを特徴とするプログラム。
【請求項１６】
前記（ｂ）のステップにおいて、設定された時間間隔で、基準時からの経過時間を示す時間番号を含む制御ログを生成し、前記時間情報として前記制御ログを前記更新ログに付加する、請求項１５に記載のプログラム。
【請求項１７】
マスタデータベースとレプリカデータベースとを有するレプリケーションシステムにおいける前記レプリカデータベースに対する処理を、コンピュータに実行させるためのプログラムであって、
前記コンピュータに、
（ａ）前記マスタデータベースに対して処理を行う複数のマスタサーバから送信されてきた更新ログを受信する、ステップと、
（ｂ）受信した前記複数のマスタサーバそれぞれの更新ログを、各更新ログに付加されている時間情報に基づいてマージするステップと、
（ｃ）前記（ｂ）のステップによるマージの結果から、前記マスタデータベースでの更新を前記レプリカデータベースに反映させるためのファイルを生成する、ステップと、
（ｄ）前記（ｃ）のステップで生成した前記ファイルを用いて前記レプリカデータベースをレプリケーションする、ステップと、
を実行させることを特徴とするプログラム。
【請求項１８】
（ｅ）前記時間情報によって特定される時間が同一と見なされる更新ログが、前記複数の
マスタサーバ全てから取得されているかどうかを判定する、ステップと、
（ｆ）前記（ｅ）のステップで取得されていないと判定された場合に、取得できていなマスタサーバに更新ログの送信を通知する、ステップと、
（ｇ）前記（ｆ）のステップの実行後に、前記取得てきていないマスタサーバから更新ログが送信されない場合に、別のマスタサーバに、前記取得てきていないマスタサーバの更新ログを取得させ、送信させる、ステップと、
を更に前記コンピュータに実行させる、請求項１７に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レプリケーションシステム、マスタサーバ、レプリカサーバ、レプリケーション方法、及びプログラムに関する。
【背景技術】
【０００２】
従来から、データベース管理システム（ＤＢＭＳ：Data Base Management System）の分野では、レプリケーションが採用されている（例えば、特許文献１及び２参照）。レプリケーションは、特定のデータベース（マスタ）と同内容のデータベース（レプリカ）をネットワーク上に配置し、一箇所でデータ更新が行われると、マスタとレプリカとの両方で更新を行う仕組みのことをいう。
【０００３】
また、レプリケーションは、異なるシステム間においても行われ、この場合は、特に、マスタとレプリカとの間の更新時の同一性の確保が重要となる。データベースを他システムの別のデータベースにレプリケーションする場合のデータ更新の方式としては、次の二つがある。
【０００４】
一の方式は、マスタ及びレプリカいずれかの更新時に出力される更新ログを元にして、更新差分を抽出し、これを用いてレプリケーションを実行する方式である。また、別の方式は、マスタのレプリケーションの対象表にトリガを付加し、対象表が更新されるとトリガが起動し、トリガ経由で更新イメージがレプリカのデータベースに蓄積される方式である。
【０００５】
このうち、トリガを用いるレプリケーションは、特許文献１に開示されている。また、トリガを用いるレプリケーションは、レプリケーションの対象となるＤＢＭＳが、トリガ機能をサポートしていれば、ＤＢＭＳの種別に依存することなく、実現可能であり、汎用性を備えている。
【０００６】
また、大規模で更新回数が非常に多いデータベースシステムでは、可用性と信頼性とを向上させるため、負荷分散型のクラスタシステムが導入されている。クラスタシステムは、複数のサーバを備え、各サーバに並列処理を行わせることで負荷を分散する。更に、クラスタシステムでは、データベースは共有ディスクに構築される。そして、トリガを用いたレプリケーションをクラスタシステム上で実現する場合は、トリガが付加されたレプリケーションの対象表は共有ディスクに格納される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−３０１３２９号公報
【特許文献２】特開２００６−１４６２９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところで、負荷分散型のクラスタシステムにおいて、更新ログまでもが共有ディスクに格納されていると、複数のサーバが共有ディスク内に構築されたデータベースを更新する際に、排他制御による待機命令の回数や、デットロック等の発生回数が増加してしまう。この結果、システム全体のスループットが劣化してしまう。このため、負荷分散型のクラスタシステムでは、更新ログを分散させて格納することが求められる。
【０００９】
しかしながら、更新ログを分散させて格納すると、更新の順序を保証するための仕組みや、システムを構成する一部のサーバに、障害が発生した場合に、更新ログがレプリケーションされず、レプリケーションシステム全体が停止してしまうという問題が発生する。
【００１０】
本発明の目的は、上記問題を解消し、クラスタシステムを用いてレプリケーションを実行する際におけるスループットの劣化を抑制しつつ、障害発生時の継続処理を実現し得る、レプリケーションシステム、マスタサーバ、レプリカサーバ、レプリケーション方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明におけるレプリケーションシステムは、第１のデータベースシステムと、第２のデータベースシステムとを備えたレプリケーションシステムであって、
前記第１のデータベースシステムは、レプリケーション元となるマスタデータベースと、前記マスタデータベースに対して処理を行う複数のマスタサーバと、前記複数のマスタサーバそれぞれ毎に設けられた個別データベースとを備え、
前記第２のデータベースシステムは、レプリケーション先となるレプリカデータベースと、前記レプリカデータベースに対して処理を行うレプリカサーバとを備え、
前記複数のマスタサーバそれぞれは、前記マスタデータベースに対して処理を行った場合に得られる更新ログを、それぞれの前記個別データベースに格納し、更に、前記更新ログに時間情報を付加し、そして、前記時間情報が付加された更新ログを前記レプリカサーバに送信し、
前記レプリカサーバは、前記複数のマスタサーバそれぞれから送信されてきた前記更新ログを、各更新ログに付加された時間情報に基づいてマージし、それによって、前記マスタデータベースでの更新を前記レプリカデータベースに反映させるためのファイルを生成し、生成した前記ファイルを用いて前記レプリカデータベースをレプリケーションする、ことを特徴とする。
【００１２】
また、上記目的を達成するため、本発明におけるマスタサーバは、マスタデータベースとレプリカデータベースとを有するレプリケーションシステムにおいて、前記マスタデータベースに対して処理を行うマスタサーバであって、
前記マスタデータベースに対して処理を行い、それによって得られた更新ログを記憶装置に格納させる、更新処理部と、
前記更新ログに時間情報を付加する、時間情報付加部と、
前記時間情報を付加した前記更新ログを、前記レプリカデータベースに対して処理を行うレプリカサーバに送信する、更新ログ送信処理部と、
を備えていることを特徴とする。
【００１３】
更に、上記目的を達成するため、本発明におけるレプリカサーバは、マスタデータベースとレプリカデータベースとを有するレプリケーションシステムにおいて、前記レプリカデータベースに対して処理を行うレプリカサーバであって、
前記マスタデータベースに対して処理を行う複数のマスタサーバから送信されてきた更新ログを受信する、更新ログ受信処理部と、
受信した前記複数のマスタサーバそれぞれの更新ログを、各更新ログに付加されている時間情報に基づいてマージし、それによって、前記マスタデータベースでの更新を前記レプリカデータベースに反映させるためのファイルを生成する、更新ログマージ処理部と、
生成した前記ファイルを用いて前記レプリカデータベースをレプリケーションする、更新ログ反映処理部と、
を備えていることを特徴とする。
【００１４】
上記目的を達成するため、本発明におけるレプリケーション方法は、第１のデータベースシステムと、第２のデータベースシステムとを備え、
前記第１のデータベースシステムは、レプリケーション元となるマスタデータベースと、前記マスタデータベースに対して処理を行う複数のマスタサーバと、前記複数のマスタサーバそれぞれ毎に設けられた個別データベースとを備え、
前記第２のデータベースは、レプリケーション先となるレプリカデータベースと、前記レプリカデータベースに対して処理を行うレプリカサーバとを備えている、レプリケーションシステムを用いたレプリケーション方法であって、
（ａ）前記複数のマスタサーバそれぞれが前記マスタデータベースに対して処理を行った場合に得られる更新ログを、それぞれの前記個別データベースに格納する、ステップと、（ｂ）前記更新ログに時間情報を付加する、ステップと、
（ｃ）前記複数のマスタサーバそれぞれ毎に、前記時間情報が付加された更新ログを、前記レプリカサーバに送信する、ステップと、
（ｄ）前記複数のマスタサーバそれぞれから前記レプリカサーバに送信されてきた前記更新ログを、各更新ログに付加された時間情報に基づいてマージする、ステップと、
（ｅ）前記（ｄ）のステップによるマージの結果から、前記マスタデータベースでの更新を前記レプリカデータベースに反映させるためのファイルを生成する、ステップと、
（ｆ）前記（ｅ）のステップで生成した前記ファイルを用いて前記レプリカデータベースをレプリケーションする、ステップと、
を有することを特徴とする。
【００１５】
また、上記目的を達成するため、本発明における第１のプログラムは、マスタデータベースとレプリカデータベースとを有するレプリケーションシステムにおける前記マスタデータベースに対する処理を、コンピュータに実行させるためのプログラムであって、
前記コンピュータに、
（ａ）前記マスタデータベースに対して処理を行った場合に得られる更新ログを取得する、ステップと、
（ｂ）前記更新ログに時間情報を付加する、ステップと、
（ｃ）前記時間情報を付加した前記更新ログを、前記レプリカデータベースに対して処理を行うレプリカサーバに送信する、ステップと、
を実行させることを特徴とする。
【００１６】
更に、上記目的を達成するため、本発明における第２のプログラムは、マスタデータベースとレプリカデータベースとを有するレプリケーションシステムにおいける前記レプリカデータベースに対する処理を、コンピュータに実行させるためのプログラムであって、前記コンピュータに、
（ａ）前記マスタデータベースに対して処理を行う複数のマスタサーバから送信されてきた更新ログを受信する、ステップと、
（ｂ）受信した前記複数のマスタサーバそれぞれの更新ログを、各更新ログに付加されている時間情報に基づいてマージするステップと、
（ｃ）前記（ｂ）のステップによるマージの結果から、前記マスタデータベースでの更新を前記レプリカデータベースに反映させるためのファイルを生成する、ステップと、
（ｄ）前記（ｃ）のステップで生成した前記ファイルを用いて前記レプリカデータベースをレプリケーションする、ステップと、
を実行させることを特徴とする。
【発明の効果】
【００１７】
以上の特徴により、本発明によれば、クラスタシステムを用いてレプリケーションを実行する際におけるスループットの劣化を抑制しつつ、障害発生時の継続処理を実現できる
。
【図面の簡単な説明】
【００１８】
【図１】図１は、本発明の実施の形態におけるレプリケーションシステムの全体構成を示す図である。
【図２】図２は、本発明の実施の形態におけるマスタサーバ及びレプリカサーバの構成を示すブロック図である。
【図３】図３は、本発明の実施の形態におけるレプリケーションシステムの動作を示すフロー図である。
【図４】図４は、マスタデータベースシステムで利用される各種ログ及び情報の一例を示す図である。
【図５】図５は、本発明の実施の形態におけるマスタサーバによるＣＯＭＭＩＴログの生成処理を示すフロー図である。
【図６】図６は、本発明の実施の形態におけるマスタサーバによる制御ログの生成処理を示すフロー図である。
【図７】図７は、本発明の実施の形態におけるレプリカサーバによる更新ログファイルの受信処理を示すフロー図である。
【図８】図８は、本発明の実施の形態におけるレプリカサーバによるマージ処理を示すフロー図である。
【図９】図９は、本発明の実施の形態におけるレプリカサーバによる各種要求処理を示すフロー図である。
【図１０】図１０は、本発明の実施例において各マスタサーバが生成した各種ログを示す図である。
【図１１】図１１は、本発明の実施例においてレプリカサーバが実行したマージ処理の結果を示す図である。
【発明を実施するための形態】
【００１９】
（発明の概要）
本発明のレプリケーションシステムは、例えば、レプリケーション元のマスタデータベースに格納される表（マスタ表）に対して業務Ａが行われ、レプリケーション先のレプリカデータベースに格納される表（レプリカ表）に対して業務Ｂが行われる場合に適用される（図１参照）。
【００２０】
マスタ表には、更新ログを採取するためのトリガが登録されている。本発明では、トリガの出力先は、マスタサーバ毎に設けられた個別データベースに設定される。個別データベースは、通常の状態では、対応するマスタサーバからのみアクセス可能となっているが、マスタサーバに障害が発生した場合では、ネットワーク上の他のサーバからもアクセス可能となっている。
【００２１】
また、複数のクライアントコンピュータによって業務Ａが実行されると、業務Ａに伴うＳＱＬ命令による操作要求が入力される。そして、操作要求は、ロードバランス装置の振り分け処理に従って、各マスタサーバに送られる。そして、マスタサーバは、ＳＱＬ命令を実行して、求められる処理を行い、マスタデータベースに格納されているデータを更新する。
【００２２】
マスタデータベースに対してＣＯＭＭＩＴ命令（処理終了命令）が発行されると、ＤＢＭＳを構成するマスタデータベースサーバが、発行されたＣＯＭＭＩＴ命令にシーケンス番号を割り当ててＣＯＭＭＩＴログを生成し、そのＣＯＭＭＩＴログを更新ログと共に個別デーベースに登録する。
【００２３】
また、各マスタサーバは、同一の時間単位に基づいて、シーケンス番号（時間番号）が時刻情報として登録された制御ログを生成し、これを更新ログと共に個別データベースに登録する。制御ログの登録を契機に、更新ログは、ＣＯＭＭＩＴログ及び制御ログと共に、更新ログファイルとして、レプリケーション先に送信される。
【００２４】
レプリケーション先のレプリカサーバは、複数のマスタサーバから送信されてきた更新ログファイルをマージする。また、レプリカサーバは、マスタサーバ毎に、更新ログファイルに含まれる制御ログを取り出し、時間番号が同一となる制御ログの有無を確認する。
【００２５】
確認の結果、各マスタサーバから、制御ログの時間番号が同一の更新ログファイルが得られている場合は、レプリカサーバは、制御ログ以前に登録された更新ログを有効な更新ログと見なす。そして、レプリカサーバは、各マスタサーバの更新ログファイルから、ＣＯＭＭＩＴ命令の発行時に出力されたシーケンス番号を取得し、このシーケンス番号の順に、各マスタサーバの更新ログファイルに含まれるログの順序を並べ替える。
【００２６】
更新ログファイルのマージが完了すると、レプリカサーバは、該当の時間番号の制御ログまでの更新ログを、マスタサーバの個別データベースから削除する命令を発行することができる。
【００２７】
また、何からの障害が発生した場合は、いずれかのサーバから更新ログが送信されないため、制御ログの時間番号が、全てのマスタサーバにおいて揃わない状態となる。この場合、レプリカサーバは、マージ処理を一旦中断し、未送信のマスタサーバに対して再度転送を指示することもできる。
【００２８】
更に、指示をしたにもかかわらず、マスタサーバからの応答がない場合には、レプリカサーバは、他のマスタサーバに対して、送信を待っている制御ログの時間番号を渡し、この時間番号に関連する更新ログを送信するよう指示を出すことができる。この場合、マスタサーバは、ネットワーク経由にて、未送信のマスタサーバの個別データベースにアクセスして更新ログを取得し、これをレプリカサーバに送信する。
【００２９】
全てのマスタサーバからの更新ログファイルで、時間番号が揃った場合は、レプリカサーバは、マージされた更新ログファイルを元に、レプリケーション先のレプリカデータベースにおいて、マスタサーバでの更新を反映させる。
【００３０】
このようにして、本発明によれば、共有ディスク上に配置されたマスタデータベースをレプリケーションする際に、更新ログが分散するため、排他制御待ちや、デットロックなどの発生を抑制し、システム全体のスループットが向上する。また、障害発生時においては、別のマスタサーバ経由にて、未反映の更新ログを転送する処理を行うことができるので、レプリケーションシステムは継続動作でき、システム全体の可用性が向上する。
【００３１】
（実施の形態）
以下、本発明の実施の形態における、レプリケーションシステム、マスタサーバ、レプリカサーバ、レプリケーション方法、及びプログラムについて、図１〜図９を参照しながら説明する。最初に、本実施の形態におけるレプリケーションシステム、マスタサーバ、レプリカサーバの構成について図１及び図２を用いて説明する。図１は、本発明の実施の形態におけるレプリケーションシステムの全体構成を示す図である。図２は、本発明の実施の形態におけるマスタサーバ及びレプリカサーバの構成を示すブロック図である。
【００３２】
図１に示すように、本実施の形態におけるレプリケーションシステム１は、データベースシステム２と、データベースシステム３とを備えている。このうち、データベースシス
テム２は、レプリケーション元（配信元）となるマスタデータベース１３と、複数のマスタサーバ１０−１〜１０−Ｎ（Ｎは任意の整数）と、個別データベース１１−１〜１１−Ｎとを備えている。
【００３３】
マスタサーバ１０−１〜１０−Ｎは、それぞれ、マスタデータベース１３に対して処理を実行し、マスタデータベースに格納されているデータを更新する。個別データベース１１−１〜１１−Ｎは、マスタサーバ毎に設けられている。各個別データベース１１−１〜１１−Ｎは、対応するマスタサーバ専用の記憶装置として機能する。
【００３４】
データベースシステム３は、レプリケーション先（配信先）となるレプリカデータベース２１と、レプリカサーバ２０とを備えている。レプリカサーバ２０は、レプリカデータベース２１に対して処理を実行するサーバである。
【００３５】
また、図２に示すように、マスタサーバ１０−１〜１０−Ｎは、それぞれ、主に、更新処理部１２０と、時間情報付加部１２３と、更新ログ送信処理部１２４とを備えている。更新処理部１２０は、マスタデータベース１３に対して処理を行い、それによって得られる更新ログを、対応する個別データベースに格納する。時間情報付加部１２３は、更新ログに時間情報を付加する。更新ログ送信処理部１２４は、時間情報が付加された更新ログをレプリカサーバ２０に送信する。
【００３６】
更に、図２に示すように、レプリカサーバ２０は、更新ログ受信処理部１３０と、更新ログマージ処理部１２９と、更新ログ反映処理部１２８とを備えている。更新ログ受信処理部１３０は、マスタサーバ１０−１〜１０−Ｎそれぞれから送信されてきた更新ログを受信する。
【００３７】
更新ログマージ処理部１２９は、受信したマスタサーバそれぞれからの更新ログを、各更新ログに付加された時間情報に基づいてマージする。また、更新ログマージ処理部１２９は、マージの結果、マスタデータベース１３での更新をレプリカデータベース２１に反映させるためのファイル（更新反映用の一時ファイル）を生成する。更新ログ反映処理部１２８は、更新反映用の一時ファイルを用いてレプリカデータベース２１をレプリケーションする。
【００３８】
このように、本実施の形態では、更新ログは分散した状態で格納される。よって、レプリケーションの実行時における、排他制御による待機命令の発行や、デットロック等の発生が、抑制される。この結果、レプリケーションシステム１におけるスループットの劣化も抑制される。
【００３９】
また、本実施の形態では、更新ログに、時間情報が付加されており、これを基準にマージが行われる。よって、いずれかのサーバに障害が発生し、更新ログが送信されてこなくても、後から更新ログを取り出してレプリカデータベース２０を更新することができる。また、障害が発生していないサーバに、障害が発生しているサーバの更新ログを取得させることで、レプリカデータベース２０を更新することもできる。この結果、レプリケーションシステム１では、障害発生した場合でも、継続して処理を行うことができる。
【００４０】
ここで、本発明の実施の形態におけるレプリケーションシステム、これを構成するマスタサーバ及びレプリカサーバの構成を更に具体的に説明する。図１に示すように、本実施の形態では、マスタデータベース１３に格納されているマスタ表（図示せず）に対して業務Ａが行われ、レプリカデータベース２１に格納されるレプリカ表に対して業務Ｂが実施される。業務Ａ及び業務Ｂは、それぞれ、複数のクライアントコンピュータ（図示せず）によって実行される。
【００４１】
また、本実施の形態では、マスタ表には、マスタサーバ１０−１〜１０−Ｎそれぞれが更新ログを採取するためのトリガが登録されている。トリガの出力先は、個別データベース１１−１〜１１−Ｎである。また、個別データベース１１−１〜１１−Ｎは、通常の状態では、対応するマスタサーバからのみアクセス可能となっているが、マスタサーバに障害が発生した場合は、ネットワーク上の他のマスタサーバからもアクセス可能となる。
【００４２】
データベースシステム２は、負荷分散型のクラスタシステムであり、ロードバランス装置１２を備えている。ロードバランス装置１２は、業務Ａを実行するクライアントコンピュータ（図１において図示せず）から、ＳＱＬ命令による操作要求が入力されると、操作要求に対して振り分け処理を実行する。これにより、各操作要求は、各マスタサーバに送られる。そして、マスタサーバ１０−１〜１０−Ｎそれぞれは、ＳＱＬ命令を実行して、マスタデータベース１３に格納されているデータを更新する。
【００４３】
また、図２に示すように、本実施の形態では、マスタサーバ１０−ｘ（ｘは１〜Ｎまでの任意の整数）は、更新処理部１２０、時間情報付加部１２３、及び更新ログ送信処理部１２４に加え、静止点制御部１２１と、更新ログ出力部１２２と、指示受信部１２６と、更新ログ削除処理部１２５とを備えている。また、レプリカサーバ２０は、更新ログ受信処理部１３０、更新ログマージ処理部１２９、及び更新ログ反映処理部１２８に加え、指示送信部１２７を備えている。
【００４４】
更新処理部１２０は、本実施の形態では、上述したように、業務Ａを実行するクライアントコンピュータからの操作要求にしたがって、マスタデータベース１３に対して処理を実行する。そして、処理の実行により、更新処理部１２０は、登録されているトリガから更新ログを取得し、これを個別データベース１１−ｘに格納する。
【００４５】
静止点制御部１２１は、更新処理部１２０が、一連の関連する処理（トランザクション）の終了の際に、マスタデータベース１３に対してＣＯＭＭＩＴ命令を発行すると、ＣＡＬＬＢＡＣＫ関数により、起動する。静止点制御部１２１は、起動すると、静止点を確立し、シーケンス制御表を参照して、シーケンス番号を取得し、これをＣＯＭＭＩＴ命令に付加する。つまり、静止点制御部１２１は、ＣＯＭＭＩＴ命令の発行順に、各ＣＯＭＭＩＴ命令にシーケンス番号を付加して、ＣＯＭＭＩＴログを生成し、これを更新ログに付加する。
【００４６】
時間情報付加部１２３は、本実施の形態では、設定された時間間隔で、基準時からの経過時間を示す時間番号を含む制御ログを生成し、時間情報として制御ログを更新ログに付加する。時間情報付加部１２３は、制御ログ生成部としても機能している。
【００４７】
具体的には、時間情報付加部１２３は、レプリケーション処理のプロセススタート時刻が経過した後、レプリケーションシステム１に設定された時間間隔が経過したタイミングで起動する。そして、時間情報付加部１２３は、マスタサーバのメモリ（図示せず）に作成されている時刻制御表にアクセスし、そこに登録されている時間番号をカウントアップする。また、時間情報付加部１２３は、カウントアップ後の時間番号を埋め込んだ制御ログを生成し、これとマスタサーバの情報とを更新ログに付加する。
【００４８】
更新ログ出力部１２２は、ＣＯＭＭＩＴログ、制御ログ、及び更新ログを、一つの更新ログファイルとし、この更新ログファイルを更新ログ送信処理部１２４に送る。更新ログ送信処理部１２４は、更新ログファイルをレプリカサーバ２０の更新ログ受信処理部１３０に送信する。なお、更新ログ出力部１２２は、ＣＯＭＭＩＴログ及び制御ログが個別データベース１１−ｘに格納されている場合は、これらのログを更新ログと共に、個別デー
タベース１１−ｘから抽出し、更新ログファイルを生成する。
【００４９】
また、レプリカサーバ２０において、更新ログ受信処理部１３０は、本実施の形態では、上述した更新ログファイルを受信し、これを、レプリカサーバ２０のメモリに設けられた転送一時ファイルに格納し、登録する。その後、更新ログ受信処理部１３０は、更新ログマージ処理部１２９を起動させる。
【００５０】
更新ログマージ処理部１２９は、本実施の形態では、マスタサーバ毎に、転送一時ファイルに登録されているログを一つずつ読み出し、制御ログの検出を行う。そして、更新ログマージ処理部１２９は、検出した制御ログの時間番号より時間番号が１つ小さい制御ログの後の更新ログから、検出した制御ログの手前のログまでを組データとして取り出し、これをマージ用一時ファイルに移送する。マージ用一時ファイルも、レプリカサーバ２０のメモリに設けられている。
【００５１】
更新ログマージ処理部１２９が、上記処理を、各マスタサーバについて実行すると、マージ用一時ファイルには、制御ログの時間番号が同一の組データが集められることとなり、組データがマージされる。また、本実施の形態では、更新ログマージ処理部１２９は、マージ対象となる各組データについて、組データに含まれるＣＯＭＭＩＴ命令のシーケンス番号を抽出し、抽出した番号に基づいてマージを行う。具体的には、更新ログマージ処理部１２９は、ＣＯＭＭＩＴ命令によってデータを区切り、区切られたデータを単位として、ＣＯＭＭＩＴ命令のシーケンス番号の順に、ソートをかける。
【００５２】
また、本実施の形態では、更新ログマージ処理部１２９によって、マージ用一時ファイルに格納されたデータが、更新用一時ファイルとなる。更新ログ反映処理部１２８は、本実施の形態では、マージ用一時ファイルからデータを取り出し、これをレプリカデータベース２１に反映させる。
【００５３】
更に、更新ログマージ処理部１２９は、制御ログの時間番号によって特定される時間が同一と見なされる更新ログが、マスタサーバ１０−１〜１０−Ｎ全てから取得されているかどうかを判定する。判定の結果、取得されていない場合は、更新ログマージ処理部１２９は、指示送信部１２７を介して、取得できていなマスタサーバに更新ログの送信を通知する。
【００５４】
具体的には、指示送信部１２７は、更新ログマージ処理部１２９の指示に従い、マスタサーバの指示受信部１２６に、送信されていない制御ログの時間番号を通知して、送信を要求する。この場合、マスタサーバでは、指示受信部１２６は、更新ログ送信処理部１２４に、未送信の更新ログファイルを送信するように指示を行う。
【００５５】
また、指示送信部１２７は、更新ログマージ処理部１２９の指示に従い、取得てきていないマスタサーバから更新ログファイルが送信されない場合は、別のマスタサーバの指示受信部１２７に対して、取得てきていないマスタサーバの更新ログファイルを取得し、これを送信する旨の指示を送信する。
【００５６】
更に、本実施の形態では、更新ログマージ処理部１２９の指示に従い、マージ処理が正常に終了した場合は、指示送信部１２７を介して、指示受信部１２６に対して、制御ログの時間番号を指定して、更新ログファイルの削除を要求することもできる。この場合、マスタサーバでは、指示受信部１２６は、更新ログ削除処理部１２６に、指定された時間番号の制御ログと、これと一つの更新ログファイルを構成している更新ログ及びＣＯＭＭＩＴログとを、個別データベース１１−ｘから削除させる。
【００５７】
また、指示送信部１２７は、削除を指示したマスタサーバから応答がない場合は、別のマスタサーバの指示受信部１２７に対し、応答がないマスタサーバの個別データベースにアクセスして、更新ログ、制御ログ及びＣＯＭＭＩＴログを削除する旨の指示を送信する。
【００５８】
続いて、本発明の実施の形態におけるレプリケーションシステム１の動作を、図３及び図４を用いて説明する。図３は、本発明の実施の形態におけるレプリケーションシステムの動作を示すフロー図である。図４は、マスタデータベースシステムで利用される各種ログ及び情報の一例を示す図である。
【００５９】
また、本実施の形態においては、レプリケーション方法は、レプリケーションシステム１を動作させることによって実行される。よって、本実施の形態におけるレプリケーション方法の説明は、以下の実施の形態におけるレプリケーションシステムの動作の説明に代える。なお、以下の説明においては、適宜図１及び図２を参酌する。
【００６０】
図３に示すように、先ず、マスタサーバ１０−１〜１０−Ｎそれぞれによって、処理が実行され、マスタデータベース１３の更新が行われると共に、各マスタサーバの個別データベース１１−１〜１１−Ｎには更新ログ（図４参照）が格納される（ステップＳ１）。
【００６１】
次に、各マスタサーバでは、更新ログに、時間番号を含む制御ログ（図４参照）が付加される（ステップＳ２）。本実施の形態では、制御ログも、個別データベースに格納される。また、ＣＯＭＭＩＴ命令が発行されたときは、ＣＯＭＭＩＴログ（図４参照）が取得され、ＣＯＭＭＩＴログも個別データベースに格納される。
【００６２】
次に、マスタサーバ１０−１〜１０−Ｎそれぞれは、更新ログに制御ログ及びＣＯＭＭＩＴログを付加して、更新ログファイルを生成し、これをレプリカサーバ２０に向けて送信する（ステップＳ３）。
【００６３】
次に、レプリカサーバ２０では、更新ログマージ処理部１２９は、全てのマスタサーバについて更新ログファイルの時間番号が揃っているかどうかを判定する（ステップＳ４）。つまり、更新ログマージ処理部１２９は、制御ログの時間番号によって特定される時間が同一と見なされる更新ログが、マスタサーバ１０−１〜１０−Ｎ全てから取得されているかどうかを判定する。
【００６４】
ステップＳ４の判定の結果、全てのマスタサーバについて更新ログファイルの時間番号が揃っている場合は、ステップＳ８が実行される。一方、ステップＳ４の判定の結果、全てのマスタサーバについて更新ログファイルの時間番号が揃っていない場合は、更新ログマージ処理部１２９は、指示送信部１２７を介して、取得できていなマスタサーバに更新ログの送信を通知する（ステップＳ５）。
【００６５】
なお、ステップＳ５では、取得てきていないマスタサーバから応答が無い場合、更新ログマージ処理部１２９は、指示送信部１２７を介し、別のマスタサーバの指示受信部１２７に対し、取得てきていないマスタサーバの更新ログファイルを取得し、これを送信するよう指示を行う。
【００６６】
ステップＳ５の実行により、更新ログ受信処理部１３０は、未送信であった更新ログファイルを受信する（ステップＳ６）。次に、更新ログマージ処理部１２９により、更新ログファイルのマージが行われ、更新用一時ファイルが生成される（ステップＳ７）。その後、更新ログ反映処理部１２８により、レプリカデータベースにおいて更新用一時ファイルが反映され、レプリケーションが実行される（ステップＳ８）。レプリケーションシス
テムでは、データベースシステム２及び３が稼動している間、ステップＳ１〜Ｓ８は繰り返し実行される。
【００６７】
次に、レプリケーションシステム１構成するマスタサーバ１０−１〜１０−Ｎそれぞれの動作について図５〜図６を用いて更に具体的に説明する。図５は、本発明の実施の形態におけるマスタサーバによるＣＯＭＭＩＴログの生成処理を示すフロー図である。図６は、本発明の実施の形態におけるマスタサーバによる制御ログの生成処理を示すフロー図である。
【００６８】
図５に示すように、ＣＯＭＭＩＴログの生成においては、先ず、業務Ａのトランザクション終了タイミング時に、更新処理部１２０が、ＣＯＭＭＩＴ命令を発行する（ステップＡ１）。次に、ＣＯＭＭＩＴ命令発行されると、ＣＡＬＬＢＡＣＫ関数によって、静止点制御部１２１が動作し、静止点が確立される（ステップＡ２）。
【００６９】
次に、静止点制御部１２１は、マスタデータベース１３にシーケンス番号の取得を要求する（ステップＡ３）。ステップＡ３により、静止点制御部１２１は、シーケンス制御表を参照できるようになる。そして、静止点制御部１２１は、データベース１３によって一意に処理順にカウントアップされたシーケンス番号を取得する（ステップＡ４）。
【００７０】
なお、シーケンス制御表は、マスタデータベース１３内に設けられている。マスタデータベース１３は、ＣＯＭＭＩＴ処理の度に、シーケンス制御表を更新し、その際、シーケンス番号をカウントアップする。
【００７１】
次に、静止点制御部１２１は、取得したシーケンス番号とサーバ情報（図４参照）とでＣＯＭＭＩＴログを作成する（ステップＡ５）。更に、静止点制御部１２１は、生成したＣＯＭＭＩＴログを個別データベース１１−ｘに出力し、これを対応する更新ログに付加する（ステップＡ６）。
【００７２】
また、図６に示すように、制御ログの生成においては、先ず、レプリケーション処理のプロセスのスタート時刻となり、レプリケーション処理が開始され、各マスタサーバ１０−ｘの更新処理部１２０では、タイマー監視が実行される（ステップＢ１）。
【００７３】
次に、更新処理部１２０は、タイマー監視において、レプリケーションシステム１上で予め設定された時間が経過したかどうかを判定する（ステップＢ２）。経過していない場合は、更新処理部１２０は待機状態となる。一方、経過している場合は、更新処理部１２０は、設定された時間が経過するタイミングで、時間情報付加部１２３を起動させる。
【００７４】
時間情報付加部１２３は、起動すると、マスタサーバのメモリ（図示せず）に作成されている時刻制御表にアクセスし、そこに登録されている時間番号をカウントアップし、カウントアップ後の時間番号を埋め込んだ制御ログを生成する（Ｂ３）。次に、時間情報付加部１２３は、制御ログとマスタサーバの情報（サーバ情報：図４参照）とを更新ログに付加するため、制御ログを個別データベース１１−ｘに出力し、それに登録させる（ステップＢ４）。
【００７５】
図５に示したステップＡ１〜Ａ５と、図６に示したステップＢ１〜Ｂ４とが終了すると、更新ログ出力部１２２が起動する。更新ログ出力部１２２は、個別データベース１１−１〜１１−Ｎに格納されている全てのログレコードを読み込み、マスタサーバ毎に更新ログファイルを生成し、これを更新ログ送信処理部１２４に送る。その後、更新ログ送信処理部１２４により、更新ログファイルが、レプリカサーバ２０の更新ログ受信処理部１３０に送信される。
【００７６】
次に、レプリケーションシステム１を構成するレプリカサーバ２０の動作について図７〜図９を用いて説明する。図７は、本発明の実施の形態におけるレプリカサーバによる更新ログファイルの受信処理を示すフロー図である。図８は、本発明の実施の形態におけるレプリカサーバによるマージ処理を示すフロー図である。図９は、本発明の実施の形態におけるレプリカサーバによる各種要求処理を示すフロー図である。
【００７７】
図７に示す処理は、マスタサーバ１０−１〜１０−Ｎから更新ログファイルが転送され、これを更新ログ受信処理部１３０が受信し、更に、更新ログ受信処理部１３０が、受信した更新ログファイルを、転送一時ファイルに登録すると開始される。また、図７に示す処理は、更新ログマージ処理部１２９によって、マスタサーバ単位で行われる。
【００７８】
図７に示すように、先ず、更新ログマージ処理部１２９は、転送一時ファイルに登録されている更新ログファイルからログを１件取り出し（ステップＣ１）、取り出したログが制御ログかどうかを判定する（ステップＣ２）。
【００７９】
ステップＣ２の判定の結果、制御ログで無い場合は、更新ログマージ処理部１２９は、次のログを取り出し、判定を行う。一方、ステップＣ２の判定の結果、制御ログである場合は、更新ログマージ処理部１２９は、該当マスタサーバの制御ログ管理表にアクセスし、そこに登録されている前回の処理における制御ログの時間番号を取得する（ステップＣ３）。
【００８０】
次に、更新ログマージ処理部１２は、ステップＣ１で取得された制御ログの時間番号が、ステップＣ３で取得された時間番号に１を加えた番号であるかどうかを判定する（ステップＣ４）。
【００８１】
ステップＣ４の結果、１を加えた番号である場合は、更新ログマージ処理部１２は、前回読み出した制御ログの後の更新ログから、ステップＣ１で読み出した制御ログの直前のＣＯＭＭＩＴログまでを、組データとして取り出し、これをマージ用一時ファイルに移送する（ステップＣ５）。そして、更新ログマージ処理部１２は、今回の制御ログの時間番号を制御ログ管理表（図４参照）に登録する（ステップＣ６）。
【００８２】
一方、ステップＣ４の結果、１を加えた番号でない場合は、更新ログマージ処理部１２は、ステップＣ１で取得された制御ログの時間番号が、ステップＣ３で取得された時間番号よりも小さいかどうかを判定する（ステップＣ７）。ステップＣ７の結果、小さい場合は、更新ログマージ処理部１２は、現在の位置までの更新ログを無効と判断し、処理対象外とする（ステップＣ８）。
【００８３】
また、ステップＣ７の結果、小さくない場合と、ステップＣ８を実行した場合は、更新ログマージ処理部１２は、再度ステップＣ１を実行する。このように、ステップＣ１〜Ｃ８の実行により、更新ログマージ処理部１２は、次の制御ログを読み出すまで、更新ログファイルからのログの読み出しを繰り返し実行する。また、更新ログマージ処理部１２は、今回の時間番号が、前回処理したときの時間番号＋２以上の場合は、今回の制御ログを無視して、次の制御ログまで読み出しを繰り返し実行する。
【００８４】
全てのマスタサーバからの更新ログファイルについて、ステップＣ１〜Ｃ６が実行されると、図８に示すマージ処理が実行される。図８に示すように、先ず、更新ログマージ処理部１２９は、制御ログの時間番号によって特定される時間が同一と見なされる更新ログが、マスタサーバ１０−１〜１０−Ｎ全てから取得されているかどうかを判定する（ステップＤ１）。具体的には、更新ログマージ処理部１２９は、制御ログ管理表（図４参照）
を参照し、全てのマスタサーバについて、制御ログの時間番号が揃っているかどうかを判定する。
【００８５】
ステップＤ１の判定の結果、揃っていない場合は、更新ログマージ処理部１２９は、指示送信部１２７を呼び出し、図９に示されるステップＥ１〜Ｅ４を実行させる。ステップＥ１〜Ｅ９については後述する。一方、ステップＤ１の判定の結果、揃っている場合は、更新ログマージ処理部１２９は、マージ処理を開始する（ステップＤ２）。
【００８６】
具体的には、ステップＤ２では、更新ログマージ処理部１２９は、マスタサーバそれぞれの更新ログファイルを格納するマージ用一時ファイルにアクセスする。そして、更新ログマージ処理部１２９は、任意の更新ログファイルからＣＯＭＭＩＴログを抽出し、ＣＯＭＭＩＴログが出るまでを一単位として、ＣＯＭＭＩＴ命令のシーケンス番号順にソートを行い、これによりマージを行う。
【００８７】
更に、更新ログマージ処理部１２９は、得られたファイルを更新用一時ファイルとし、レプリカサーバのメモリに登録し、マージ処理を終了する（ステップＤ３）。そして、更新ログマージ処理部１２９は、更新ログ反映処理部１２８を呼び出す。また、マージ処理が正常に終了した場合には、更新ログマージ処理部１２９は、指示送信部１２７を呼び出し、制御ログの時間番号を指定して、更新ログファイルの削除を実行するよう要求する。この場合も、指示送信部１２７は、図９に示されるステップＥ１〜Ｅ４を実行する。ステップＥ１〜Ｅ９については後述する。
【００８８】
次に、更新ログ反映処理部１２８は、更新反映用一時ファイルを元に、レプリカデータベース２１に対してレプリケーションを実施する（ステップＤ４）。これにより、レプリカデータベース２１に、マスタデータベース１３における更新が反映される。
【００８９】
上述したように、図９に示すステップＥ１〜Ｅ４は、ステップＤ１の判定結果により、又はステップＤ３の実施に伴い、実行される。図９に示すように、先ず、指示送信部１２７は、更新ログマージ処理部１２９による指示が、ステップＤ３におけるマージ処理が正常終了した場合の削除指示かどうかを判定する（ステップＥ１）。
【００９０】
ステップＥ１の判定の結果、削除指示でない場合は、指示送信部１２７は、更新ログファイルを未だ送信していないマスタサーバに対して、転送一時ファイルに残っている更新ログファイルを送信するよう指示を行う（ステップＥ５）。具体的には、指示送信部１２７は、制御ログを受信していないマスタサーバの指示受信部１２６に対して、時間番号を通知し、送信指示を要求する。
【００９１】
一方、ステップＥ１の判定の結果、削除指示である場合は、指示送信部１２７は、全てのマスタサーバ１０−１〜１０−Ｎに対して、削除対象となる更新ログファイルの時間番号を通知して、更新ログファイルの削除を要求する（ステップＥ２）。
【００９２】
ステップＥ２又はステップＥ５が実行されると、指示送信部１２７は、指示を送信したマスタサーバの指示受信部１２６からの応答の有無を判定する（ステップＥ３）。ステップＥ３の判定の結果、指示を送信した全てのマスタサーバの指示受信部１２６から応答がある場合は、指示送信部１２７は処理を終了する。
【００９３】
一方、ステップＥ３の判定の結果、いずれかのマスタサーバの指示受信部１２６からの応答が無い場合は、指示送信部１２７は、他のマスタサーバに、更新ログファイルの送信又は削除を実行するよう指示を送信する（ステップＥ４）。
【００９４】
具体的には、ステップＥ４では、指示送信部１２７は、応答が無いマスタサーバのサーバ情報制御表にアクセスし、接続情報を取得する。そして、指示送信部１２７は、取得した接続情報を元に、応答が無いマスタサーバとは別のサーバＩＤを持つマスタサーバに対して、応答が無いマスタサーバの更新ログファイルを送信するように要求する。また、指示送信部１２７は、マージ処理が正常に終了している場合は、別のサーバＩＤを持つマスタサーバに対して、応答が無いマスタサーバの更新ログファイルを削除するように要求する。ステップＥ４の終了後、指示送信部１２７は処理を終了する。
【００９５】
また、本実施の形態におけるプログラムは、マスタサーバ用のプログラムと、レプリカサーバ用のプログラムである。このうち、マスタサーバ用のプログラムは、コンピュータに、図５に示すステップＡ１〜Ａ６と図６に示すＢ１〜Ｂ４とを実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することにより、本実施の形態におけるマスタサーバを実現することができる。
【００９６】
この場合、コンピュータのＣＰＵ（central processing unit）は、更新処理部１２０、静止点制御部１２１、更新ログ出力部１２２、時間情報付加部１２３、更新ログ送信処理部１２４、更新ログ削除処理部１２５、及び指示受信部１２６として機能し、処理を行なう。
【００９７】
更に、レプリカサーバ用のプログラムは、コンピュータに、図７に示すステップＣ１〜Ｃ８、図８に示すＤ１〜Ｄ４、及び図９に示すＥ１〜Ｅ４を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することにより、本実施の形態におけるレプリカサーバを実現することができる。この場合、コンピュータのＣＰＵは、指示送信部１２７、更新ログ反映処理部１２８、更新ログマージ処理部１２９、及び更新ログ受信処理部１３０として機能し、処理を行う。
【００９８】
以上のように本実施の形態によれば、以下の効果を得ることができる。第１の効果は、レプリケーション元の業務Ａを実行するデータベースシステム全体のスループットが向上することである。このような第１の効果が得られるのは、更新ログを分散させた状態でのレプリケーションにより、排他制御に待機命令の発行や、デットロックなどの発生が抑制されるからである。また、分散した更新ログのマージが、業務Ａの更新の延長ではなく、レプリケーション転送先で非同期で行われることも第１の効果が得られる理由となる。
【００９９】
本実施の形態による第２の効果は、クラスタシステムを構成する一部のサーバにてサーバダウンなどの何らかの障害が発生した場合でも、レプリケーションが他のサーバで継続可能なので可用性が向上することである。これは、時刻情報を元にした制御ログをキーにして、障害が発生したマスタサーバで出力を予定していた更新ログが、他のマスタサーバによって出力できるように構成されているためである。また、これにより、クラスタシステムの一部が動作不能になっても、レプリケーション転送先には更新ログファイルが転送されるため、耐障害性が向上する
【実施例１】
【０１００】
図１０及び図１１を用いて、本発明の実施例を説明する。図１０は、本発明の実施例において各マスタサーバが生成した各種ログを示す図である。図１１は、本発明の実施例においてレプリカサーバが実行したマージ処理の結果を示す図である。なお、図１０及び図１１は、マスタサーバが三台の例を示している。
【０１０１】
図１０には、各マスタサーバが出力した更新ログファイルが示されている。マスタサーバ１０−１ではｔａｂｌｅ１のｕｐｄａｔｅ命令が実行され、ＣＯＭＭＩＴ番号３が割り当てられている。また、マスタサーバ１０−１では、１２／１１の４時１０分に、時間番
号（制御シーケンス番号）１１のログが出力されている。
【０１０２】
また、図１０に示すように、マスタサーバ１０−２では、ｔａｂｌｅ１へのｉｎｓｅｒｔ命令が実行され、ＣＯＭＭＩＴ番号２が割り当てられている。また、マスタサーバ１０−２でも、１２／１１の４時１０分に、時間番号（制御シーケンス番号）１１のログが出力されている。
【０１０３】
マスタサーバ１０−３では、ｔａｂｌｅ１へのｄｅｌｅｔｅ命令が実行され、ＣＯＭＭＩＴ命令が実行されていない。但し、１２／１１の４時１０分に、時間番号（制御シーケンス番号）１１のログが出力されている。
【０１０４】
図１０に示された更新ログファイルを、上述したレプリケーションシステム１によって、レプリカサーバ２０に転送された場合の、マージ結果を図１１に示す。図１１に示すように、１２／１１の４時１０分の制御ログの時間番号により、３つのマスタサーバの更新ログファイルが、マージ用一時ファイルに登録される。
【０１０５】
しかしながら、マスタサーバ１０−３の更新ログファイルにはＣＯＭＭＩＴログが登録されていないため、マージ対象とはならない。この結果、図１１に示すように、マスタサーバ１０−１及び１０−２の更新ログファイルのみがＣＯＭＭＩＴ番号の順にソートされ、更新反映用一時ファイルとなる。
【産業上の利用可能性】
【０１０６】
以上のように、本発明はレプリケーションシステムに有用であり、クラスタシステムを用いてレプリケーションを実行する際におけるスループットの劣化を抑制しつつ、障害発生時の継続処理を実現できる。本発明は、産業上の利用可能性を有している。
【符号の説明】
【０１０７】
１  レプリケーションシステム
２  マスタデータベースシステム
３  レプリカデータベースシステム
１０−１〜１０−Ｎ  マスタサーバ
１１−１〜１１−Ｎ  個別データベース
１２  ロードバランス装置
１３  マスタデータベース
２０  レプリカサーバ
２１  レプリカデータベース
１２０  更新処理部
１２１  静止点制御部
１２２  更新ログ出力部
１２３  時間情報付加部
１２４  更新ログ送信処理部
１２５  更新ログ削除処理部
１２６  指示受信部
１２７  指示送信部
１２８  更新ログ反映処理部
１２９  更新ログマージ処理部
１３０  更新ログ受信処理部
【図１】
2010244117.tif 000003
【図２】
2010244117.tif 000004
【図３】
2010244117.tif 000005
【図４】
2010244117.tif 000006
【図５】
2010244117.tif 000007
【図６】
2010244117.tif 000008
【図７】
2010244117.tif 000009
【図８】
2010244117.tif 000010
【図９】
2010244117.tif 000011
【図１０】
2010244117.tif 000012
【図１１】
2010244117.tif 000013