(57)【要約】【課題】フロントシステムの処理系列の構成とバックアップシステムの処理系列の構成が異なる場合でも無停止連続稼動でレプリケーションする。【解決手段】フロントシステムは、データベースの更新ログの順序性を保証する単位である処理系列毎に更新ログをバックアップシステム３０に転送する。バックアップシステム３０は、フロントシステムから受信した更新ログをその更新ログが属するべき処理系列に振り分ける振分プロセス３２を備える。【選択図】図４
2013054439.tif 000002
【特許請求の範囲】
【請求項１】
フロントシステムと、バックアップシステムとを備えるレプリケーションシステムであって、
前記フロントシステムは、データベースの更新ログの順序性を保証する単位である処理系列毎に更新ログを前記バックアップシステムに転送する手段を備え、
前記バックアップシステムは、前記フロントシステムから受信した更新ログを前記更新ログが属するべき処理系列に振り分ける手段を備える、レプリケーションシステム。
【請求項２】
請求項１に記載のレプリケーションシステムであって、
前記フロントシステムの処理系列及び前記バックアップシステムの処理系列は、独立に構成変更可能である、レプリケーションシステム。
【請求項３】
請求項２に記載のレプリケーションシステムであって、
前記フロントシステムの処理系列と前記バックアップシステムの処理系列とが異なる場合でも無停止連続稼動が可能である、レプリケーションシステム。
【請求項４】
請求項１乃至請求項３のうち何れか１項に記載のレプリケーションシステムであって、
前記バックアップシステムは、前記振り分けられた更新ログを複数まとめてコミットする手段を更に備える、レプリケーションシステム。
【請求項５】
データベースの更新ログの順序性を保証する単位である処理系列毎に転送される更新ログを受信するステップと、
前記更新ログを前記更新ログが属するべき処理系列に振り分けるステップと、
を備えるレプリケーション方法。
【請求項６】
請求項５に記載のレプリケーション方法であって、
前記振り分けられた更新ログを複数まとめてコミットするステップを更に備える、レプリケーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は無停止連続稼動でレプリケーションするためのシステム及び方法に関する。
【背景技術】
【０００２】
フロントシステムのデータベースの更新をバックアップシステムへ反映するためのレプリケーション方式として、フロントシステムのアプリケーション処理に大きな影響を与えないように、フロントシステムのデータベースの更新ログをバックアップシステムへ転送し、バックアップシステム側でその更新ログを非同期的に反映する方式が知られている。例えば、特開２００９−１２２９６６号公報には、非同期的にレプリケーションする方法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１２２９６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、上述の従来の方式では、フロントシステムとバックアップシステムとの間の処理系列の構成が完全に一致していない場合には、更新ログを転送できないという問題があった。ここで、処理系列とは、更新ログが転送される経路、及び更新ログの順序性を保証する単位を意味する。そのため、フロントシステムのデータベースとバックアップシステムのデータベースの再構成を行うには、両システムとも停止し、フロントシステムのアプリケーションからの更新要求も停止した状態で、両システムの処理系列の構成変更を行う必要があった。従来は、２４時間３６５日の無停止連続稼動という必要性に乏しかったため、データベースの構成を変更する際は、上述の従来の方式で対応可能であったが、最近は２４時間３６５日の無停止連続稼動という要求が増えてきているため、データベースの構成変更のためにシステムを一時的に完全停止することは好ましくない。
【０００５】
そこで、本発明は、フロントシステムの処理系列の構成とバックアップシステムの処理系列の構成とが異なる場合でも無停止連続稼動でレプリケーションすることのできるレプリケーションシステム及びレプリケーション方法を提案することを課題とする。
【課題を解決するための手段】
【０００６】
上述の課題を解決するため、本発明に係わるレプリケーションシステムは、フロントシステムと、バックアップシステムとを備え、フロントシステムは、データベースの更新ログの順序性を保証する単位である処理系列毎に更新ログをバックアップシステムに転送する手段を備え、バックアップシステムは、フロントシステムから受信した更新ログをその更新ログが属するべき処理系列に振り分ける手段を備える。
【０００７】
本発明に係わるレプリケーション方法は、データベースの更新ログの順序性を保証する単位である処理系列毎に転送される更新ログを受信するステップと、更新ログをその更新ログが属するべき処理系列に振り分けるステップと、を備える。
【発明の効果】
【０００８】
本発明によれば、フロントシステムの処理系列の構成とバックアップシステムの処理系列の構成とが異なる場合でも無停止連続稼動でレプリケーションすることができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態に係わるレプリケーションシステムの構成変更の概要を示す説明図である。
【図２】本実施形態に係わるレプリケーションシステムの機能構成を示すブロック図である。
【図３】本実施形態に係わる処理系列とその処理系列に属する更新ログの対応関係を示す説明図である。
【図４】本実施形態に係わる更新ログをユーザ表に反映する動作を示す説明図である。
【図５】本実施形態に係わる更新ログをユーザ表に反映する動作を記述したフローチャートである。
【図６】本実施形態に係わるレプリケーションの説明図である。
【図７】本実施形態に係わるレプリケーションの説明図である。
【発明を実施するための形態】
【００１０】
以下、各図を参照しながら本発明の実施形態について説明する。同一の機能ブロックには、同一の符号を付すものとし、重複する説明を省略する。
【００１１】
図１は本実施形態に係わるレプリケーションシステム１０の構成変更の概要を示す説明図である。レプリケーションシステム１０は、フロントシステム２０とバックアップシステム３０とを備えている。フロントシステム２０及びバックアップシステム３０には、複数のデータベースが設けられており、更新対象のキー毎に更新先のデータベースが定められている分散配置データベースの運用形態をとる。バックアップ処理は、分散されたデータベース毎に処理系列を分けて更新ログを並列に転送し、データベースの更新を並列に行うことで、スループットの向上を図っている。なお、一つの処理系列では、更新ログの転送及び更新の順序性は保証されているものとする。
【００１２】
同図に示す状態は、構成変更の一例として、フロントシステム２０の運用を継続したまま、バックアップシステム３０のみ先に停止してバックアップシステム３０のデータベースの構成変更後にバックアップシステム３０の運用を再開した状態を示している。フロントシステム２０では、アプリケーションでのデータベース更新処理を継続して受け続け、バックアップシステム３０の停止中にバックアップシステム３０のデータベースの処理系列の構成変更を行う。その場合、同図に示すように、フロントシステム２０は再構成前の状態にある一方、バックアップシステム３０は再構成済みのため、両システム間で一時的に処理系列の構成が異なる。フロントシステム２０からバックアップシステム３０のある処理系列へ転送されてくる更新ログの中には、他の処理系列に属する更新ログが含まれている場合がある。このため、バックアップシステム３０の各処理系列は、受信した更新ログの処理系列をチェックし、もし、自身の処理系列とは異なる処理系列に属する更新ログが含まれている場合には、その更新ログを該当する処理系列に振り分ける。バックアップシステム３０は、更新ログを振り分けた後、オーバーヘッドを低減するため、複数の更新ログをまとめてコミットする。この方式により、フロントシステム２０とバックアップシステム３０との間で処理系列の構成が異なる場合でも、更新ログの並列転送及び並列更新が可能となり、無停止連続稼動でのレプリケーションが可能になる。
【００１３】
なお、バックアップシステム３０の構成変更後、バックアップシステム３０をフロントシステムに切り替えて、アプリケーションからのデータベース更新要求を受け付けつつ、フロントシステム２０をバックアップシステムに切り替えて、その運用を停止し、そのデータベースの構成を変更することによって、無停止連続稼動での構成変更が可能になる。
【００１４】
図２は本実施形態に係わるレプリケーションシステム１０の機能ブロック図である。フロントシステム２０では、データ更新アプリケーション２１がデータベースアクセスプロセス２２を経由してデータベース２３のユーザ表２４を更新する際、更新ログ表２５も更新する。すると、送信手段２６は、更新ログ表２５から更新ログを読み込み、これをバックアップシステム３０へ転送する。バックアップシステム３０では、受信手段３７が更新ログを受信して、更新ログ表３５へ書き込む。反映プロセス３１は、振分プロセス３２を経由して更新ログ表３５から更新ログを読み込む。また、反映プロセス３１はデータベースアクセスプロセス３３を経由してデータベース３４のユーザ表３６を更新する。これにより、フロントシステム２０のユーザ表２４とバックアップシステム３０のユーザ表３６との同期がとれることで、レプリケーションが可能になる。
【００１５】
図３は処理系列とその処理系列に属する更新ログの対応関係を示す説明図である。図中、括弧の中の数値はハッシュ値を示す。同図に示す状態は、フロントシステム２０の運用を継続したまま、バックアップシステム３０のみ先に停止してバックアップシステム３０のデータベースの構成変更後にバックアップシステム３０の運用を再開した状態を示している。フロントシステム２０には、処理系列１のみが存在する一方、バックアップシステム３０には、処理系列１，２が存在しており、フロントシステム２０の処理系列とバックアップシステム３０の処理系列はその構成が一致していない。構成変更前のフロントシステム２０の処理系列１のハッシュ値の範囲は１〜２０であるのに対し、構成変更後のバックアップシステム３０の処理系列１のハッシュ値の範囲は１〜１０であり、処理系列２のハッシュ値の範囲は１１〜２０である。バックアップシステム３０の処理系列１のハッシュ値の範囲は１〜１０であるから、フロントシステム２０の処理系列１からバックアップシステム３０の処理系列１に転送された更新ログの中で、ハッシュ値が１１と１５のものは、本来、処理系列２に属するべきものである。
【００１６】
図４はバックアップシステム３０側で受信した更新ログをユーザ表３６に反映する動作を示す説明図である。処理系列１では、更新ログ表３５に格納されている更新ログを振分プロセス３２が読み込む。振分プロセス３２は、更新ログのハッシュ値からその更新ログが属する処理系列を判定し、自身の処理系列とは異なる処理系列に属する更新ログを本来の処理系列に転送する。更新ログを受け取った反映プロセス３１は、更新ログを一つずつ取り出し、これをデータベースアクセスプロセス３３に渡す。更新ログを受け取ったベースアクセスプロセス３３は、更新ログをユーザ表３６に反映する。ベースアクセスプロセス３３から反映成功の応答を受け取った反映プロセス３１は、あるタイミングで複数の更新ログをまとめてコミットする。
【００１７】
図５はバックアップシステム３０側で受信した更新ログをユーザ表３６に反映する動作を記述したフローチャートである。振分プロセス３２は、更新ログ表３５から複数の更新ログを読み取り（ステップ５０１）、その中から一つの更新ログを取り出す（ステップ５０２）。振分プロセス３２は、取り出した更新ログが自身の処理系列に属するものではなく、異なる処理系列に属するものであるか否かを判定する（ステップ５０３）。更新ログが異なる処理系列に属する場合は（ステップ５０３；ＹＥＳ）、振分プロセス３２は、更新ログを本来の処理系列に転送し（ステップ５０４）、ステップ５０５に進む。更新ログが自身の処理系列に属する場合には（ステップ５０３；ＮＯ）、振分プロセス３２は、ステップ５０５に進む。更新ログ表３５に更新ログが存在する場合には（ステップ５０５；ＹＥＳ）、振分プロセス３２は、ステップ５０２〜５０４の処理を繰り返す。一方、更新ログ表３５に更新ログが存在しない場合には（ステップ５０５；ＮＯ）、反映プロセス３１は、振分プロセス３２から受け取った更新ログを一つ取り出し（ステップ５０６）、データベースアクセスプロセスを呼び出して（ステップ５０７）、更新ログをユーザ表３６に反映させる（ステップ５０８）。反映プロセス３１に更新ログが存在する場合には（ステップ５０９；ＹＥＳ）、反映プロセス３１は、ステップ５０６〜５０８の処理を繰り返す。一方、反映プロセス３１に更新ログが存在しない場合には（ステップ５０９；ＮＯ）、反映プロセス３１は、複数の更新ログをまとめてコミットする（ステップ５１０）。
【００１８】
図６に示すようにバックアップシステム３０のデータベースの再構成が終了すると、バックアップシステム３０は、フロントシステムとして稼動し、アプリケーションからのデータベース更新要求を受け付ける一方、フロントシステム２０は、バックアップシステムとして稼動する。そして、新フロントシステム（旧バックアップシステム３０）から新バックアップシステム（旧フロントシステム２０）へレプリケーションする。図７に示すように、新バックアップシステム（旧フロントシステム２０）のデータベースの構成変更が終了すると、新バックアップシステム（旧フロントシステム２０）を再びフロントシステムとして稼動させる一方、新フロントシステム（旧バックアップシステム３０）を再びバックアップシステムとして稼動させる。そして、フロントシステム２０からバックアップシステム３０へレプリケーションする。これにより、無停止連続稼動でデータベースの構成変更を行うことができる。
【００１９】
本実施形態の一部又は全部は、以下の付記のように記載され得るが、以下には限定されない。
（付記１）
フロントシステム２０と、バックアップシステム３０とを備えるレプリケーションシステム１０であって、
フロントシステム２０は、データベースの更新ログの順序性を保証する単位である処理系列毎に更新ログをバックアップシステム３０に転送する手段２６を備え、
バックアップシステム３０は、フロントシステム２０から受信した更新ログをその更新ログが属するべき処理系列に振り分ける手段３２を備える、レプリケーションシステム１０。
（付記２）
付記１に記載のレプリケーションシステム１０であって、
フロントシステム２０の処理系列及びバックアップシステム３０の処理系列は、独立に構成変更可能である、レプリケーションシステム１０。
（付記３）
付記２に記載のレプリケーションシステム１０であって、
フロントシステム２０の処理系列とバックアップシステム３０の処理系列とが異なる場合でも無停止連続稼動が可能である、レプリケーションシステム１０。
（付記４）
付記１乃至付記３のうち何れか一つに記載のレプリケーションシステム１０であって、
バックアップシステム３０は、振り分けられた更新ログを複数まとめてコミットする手段３１を更に備える、レプリケーションシステム１０。
（付記５）
データベースの更新ログの順序性を保証する単位である処理系列毎に転送される更新ログを受信するステップと、
更新ログをその更新ログが属するべき処理系列に振り分けるステップと、
を備えるレプリケーション方法。
（付記６）
付記５に記載のレプリケーション方法であって、
振り分けられた更新ログを複数まとめてコミットするステップを更に備える、レプリケーション方法。
【符号の説明】
【００２０】
１０…レプリケーションシステム
２０…フロントシステム
２１…データ更新アプリケーション
２２…データベースアクセスプロセス
２３…データベース
２４…ユーザ表
２５…更新ログ表
２６…送信手段
３０…バックアップシステム
３１…反映プロセス
３２…振分プロセス
３３…データベースアクセスプロセス
３４…データベース
３５…更新ログ表
３６…ユーザ表
３７…受信手段
【図１】
2013054439.tif 000003
【図２】
2013054439.tif 000004
【図３】
2013054439.tif 000005
【図４】
2013054439.tif 000006
【図５】
2013054439.tif 000007
【図６】
2013054439.tif 000008
【図７】
2013054439.tif 000009