(57)【要約】      （修正有）【課題】障害時に情報の損失がなく、システム全体のパフォーマンス、迅速なシステムの再開を可能とする安全で高速なデータベース・レプリケーション・システムを提供する。【解決手段】トランザクション・ログを転送する際、転送先ノードへの転送の完了と、転送元ノードでのストレージへの書き込み完了の両方を待つことにより情報の同期を行い、データの損失を抑える。また、転送先ノードで障害時に復帰処理を行うのではなく、トランザクション・ログが転送され次第、随時復帰処理を行うことで、障害時の復帰を速める。【選択図】図１
2006293910.tif 000002
【特許請求の範囲】
【請求項１】
障害時に情報の損失の無いレプリケーション・システムのためのトランザクション・ログの同期方法
【請求項２】
転送先ノードにおいて、トランザクション・ログが転送され次第、復元処理を行う方法
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース・システムのレプリケーション技術において、データの安全性を高める技術と、障害時の復帰処理を高速化する技術に関する。
【背景技術】
【０００２】
従来、複数の利用者により更新・参照される情報の集合(以下、データベース)をコンピュータにより記録・管理するシステム(以下、データベース・システム)において、複数のデータベース・システムを同時に運用し、それぞれのデータベースが同じ情報を保持するように情報の同期をとるための、レプリケーション・システムあるいはクラスター・システム（以下、レプリケーション・システム）と呼ばれる技術が存在する。
【０００３】
レプリケーション・システムを用いることで、レプリケーション・システム内に存在する各データベース・システムの1つ（以下、ノード）が障害により停止したり、ストレージが破壊され利用不可能になった場合にも情報を失わずに済み、システム全体の安全性を高めることが出来る。
【０００４】
また、障害時にシステムの運用を停止させない、あるいは短い時間で運用を再開することが出来、実際に企業などがデータベースを使用する際に、非常に重要視されている。
【０００５】
レプリケーション・システムを構築するための技術として、
１複数のノードでストレージを共有し、障害時の高可用性を高める技術。
２利用者が複数のノードに同じ命令（クエリ）を発行することで、各ノードのデータベースの中身を同等に保つ技術。
３ストレージ内の物理的情報を他のノードのストレージに複写することで、データベースの中身を同等に保つ技術。
などが存在する。
【０００６】
近年、トランザクション・ログ（ｔｒａｎｓａｃｔｉｏｎ  ｌｏｇ）を応用して、レプリケーション・システムを実現しようとする技術が提案されている。
【０００７】
トランザクション・ログとは、データベースに加えられた変更の履歴を、データベースの記録領域とは異なる領域に記録することにより、変更の永続性を維持しながら同時に操作の高速性を実現する技術である。
【０００８】
データベース・システムでは、しばしば複数の利用者が、データベース内の任意の位置の情報を変更する。情報の更新は通常、高速処理が可能な一時記憶媒体に記憶され、その後、データベース・システムが定める特定のタイミングでストレージに保存される。
【０００９】
このタイミングとしては、トランザクションのコミットの時点が代表的である。このタイミングをどのように定めるかと、このときに確実に情報の保存を行うことが出来るかが、データベースの安全性を保障する重要な要素となる。
【００１０】
しかし、この保存処理がデータベース・システムの処理の高速性を損なう要因ともなっている。
【００１１】
任意の情報を複数の主体が並列して変更するというデータベース・システムの性質上、更新はストレージ上で物理的に分散した箇所で行われる可能性が高い。
【００１２】
このため、更新をストレージに保存する際、更新された情報をすべてストレージに保存すると、作業の完了までにデータベース・システムの円滑な運営を妨げるほどの時間が生じることがある。
【００１３】
例えば、ストレージとしてハードディスクを用いるデータベース・システムの場合、物理的に分散した記録領域への書き込み処理はディスク・ヘッドのシークを多く伴うため、処理の完了まで利用者が長時間待機しなければならない場合がしばしば生じる。
【００１４】
トランザクション・ログは、このような記録処理の低速性を解決するための技術である。
【００１５】
トランザクション・ログには更新の履歴のみがまとめて記録される。更新された情報をストレージに保存する必要が生じた場合、更新された情報そのものではなく、トランザクション・ログをストレージに記録する。
【００１６】
実際の情報の更新場所が物理的にどれほど分散されていても、トランザクション・ログの保存には、一箇所の情報の保存しか必要としない。
【００１７】
そのため、更新情報でストレージに保存する場合と比較して、はるかに高速に処理を行うことが出来る。
【００１８】
一方、トランザクション・ログにはすべての更新の履歴が保存される。そのため、トランザクション・ログさえストレージに保存されていれば、実際のデータベースに行われた更新はすべて再構築することができる。
【００１９】
そのため、なんらかの障害によりデータベース・システムが停止した場合でも、情報の復元が可能である。したがって、すべての更新情報をストレージに保存した場合と、同程度の安全性を確保することが出来る。
【００２０】
この技術では、ストレージに記録されたトランザクション・ログを一定のタイミングで他のノードに転送する。
【００２１】
具体的には、前回の転送から一定時間経過した後、あるいは未転送のトランザクション・ログが一定量に達したタイミングで転送する。
【００２２】
転送元ノードに障害が発生し、利用不可能になった場合、転送先ノードでトランザクション・ログを利用して情報の復旧処理を行い、システムの運用を再開する。
【００２３】
上述のように、トランザクション・ログには、ある時点から更新された情報を復旧するために必要なすべての情報が記録されている。
【００２４】
したがって、ある時点のデータベースと、それ以後のトランザクション・ログを保持していれば、トランザクション・ログの転送元であるノードと同等の情報を保持していることになる。
【００２５】
そのため、トランザクション・ログに記録されている処理を再実行することで、転送先のノードでデータベースを復旧することが出来る。
【００２６】
しかし、従来のトランザクション・ログを応用してレプリケーション・システムを実現する方法には以下の欠点が存在する。
【００２７】
この技術では一度トランザクション・ログの転送が行われると、その後、機械的に定められた一定の期間、トランザクション・ログの転送は行われない。そのため、この期間に保存されたトランザクション・ログは、その期間が経過するまでは転送元ノードにしか存在しない。
【００２８】
この間に転送元ノードに障害が発生し、ストレージが利用不可能になった場合、転送されなかったトランザクション・ログが記録していた更新情報は、転送先ノードでは復元できない。
【００２９】
そのため、この技術を利用したレプリケーション・システムでは、障害が発生するタイミングにより、確実に記録されたはずだった情報の一部が失われてしまうことになる。
【００３０】
トランザクション・ログの転送周期を短くすることにより、情報が失われる可能性を小さくすることは可能であるが、このように機械的に定められた周期を用いる限り、情報が失われる可能性を無くすことはできない。また、転送の周期を極端に短くすると、転送にかかる負荷が増大し、システム全体のパフォーマンスを損なう恐れがある。
【００３１】
また、トランザクション・ログに記録された更新情報は、データベースへの復元処理を実行するまでは使用できない。そのため実際に運用を始める前に情報の復元処理を行い、データベースの再構築を行う必要がある。
【００３２】
したがって、運用期間が長くなりトランザクション・ログが大量に蓄積すると、再構築の完了に時間が必要になる。障害時にノードを切り替える際、この再構築にかかる時間、システムの再開が遅れてしまう。
【００３３】
上述の問題は、どのタイミングでトランザクション・ログを転送すべきか、転送されたトランザクション・ログによる復元処理をどのタイミングで実行するか、という2つの問題を十分に考慮していないために生じている。
【発明の開示】
【発明が解決しようとする課題】
【００３４】
本発明は以上のような欠点に鑑み、障害時に情報の損失がなく、システム全体のパフォーマンス、迅速なシステムの再開を可能とする安全で高速なデータベース・レプリケーション・システムを提供することを目的としている。
【課題を解決するための手段】
【００３５】
上記目的を達成するために、本発明では下記手段により解決する。
【００３６】
第一の手段として、レプリケーション・システム内の任意のノードでトランザクション・ログがストレージに記録される際に、そのノードの記録処理が完了する以前に、他の全てのノードに当該トランザクション・ログの内容が転送されるようにする。
【００３７】
そのために、以下の同期処理を行う。
１転送元ノードはトランザクション・ログのストレージへの記録を開始する。また、レプリケーション・システム内に存在する他の全てのノードに同一のトランザクション・ログを転送する。
２転送先ノードは、トランザクション・ログの受信を完了後、転送元ノードに完了を通知する。
３転送元ノードは全てのノードから完了の通知を受け取り、かつ自身のストレージへの記録処理が終了するまで待機する。
４転送元ノードは、同期処理を完了する。
【００３８】
これにより、トランザクション・ログの更新情報は、どのノードにいかなる時点で障害が発生したとしても、レプリケーション・システムのいずれかのノードが利用可能である限り、利用可能となる。
【００３９】
第二の手段として、障害時のノードの切り替えを迅速に行うために、障害が発生する前に、トランザクション・ログの復元処理を行う。トランザクション・ログが転送され次第、トランザクション・ログの復元処理を行い、トランザクション・ログに記録された更新履歴をデータベースに反映する。
【００４０】
トランザクション・ログの復元処理に際しては、データベース・システムにすでに存在している、トランザクション・ログを用いたデータベースの復旧処理を再利用する。
【００４１】
通常、データベースの復元処理においては、記録されている全てのトランザクション・ログの処理を終了すれば、処理は完了されたとみなされ、通常の運用が開始される。
【００４２】
しかし、レプリケーション・システムでトランザクション・ログを用いる場合は、記録されている全てのトランザクション・ログの処理を終了しても、それは処理の完了を意味しない。
【００４３】
したがって、トランザクション・ログの処理終了後は新たなトランザクション・ログが転送されるか、あるいは、転送元ノードに障害などが発生し、トランザクション・ログが今後転送されることはないということが確認されるまで待機する。
【発明の効果】
【００４４】
まず、レプリケーション・システム全体の障害に対する安全性が飛躍的に増大する。すなわち、トランザクション・ログを用いたレプリケーション・システムにおいて、ある1つのノードで永続的に記録されたとみなされた情報は、記録処理の完了後、その情報が変更され再び永続的に記録されるまでの間の任意の時点で、レプリケーション・システム内に1つでも利用可能なノードが存在する限り、永続的に記録された情報とみなされ、利用可能である。
【００４５】
また、レプリケーション・システムに障害が発生したときのノードの切り替えが迅速になるため、システム全体の復旧にかかる時間を大幅に減少させることが出来る。これにより、企業が利用する際に不可欠な、高可用性を実現出来る。
【００４６】
さらに、トランザクション・ログというデータベース・システムがもともと備えている技術を前提としているため、技術の製品化が容易で、新規技術の製品化に際する初期的な障害・過失の可能性が小さくなる。製品自体の安定性は、安全性や高可用性を確保する際に重要な前提となる要素であり、企業がデータベース・システムを利用する際にはやはり重要視される。
【発明を実施するための最良の形態】
【００４７】
以下、図面に示す発明を実施するための最良の形態により、本発明を詳細に説明する。
【００４８】
以下本発明を、図面を用いて詳細に説明する。図１は本発明に関わるレプリケーション機能を実装するデータベース・システムの概念図である。
【００４９】
図１において、１００はデータ転送元となるマスタコンピュータ、２００はデータ転送先となるスレーブコンピュータを表す。この２台のコンピュータにおいて、データ転送元となるマスタコンピュータ１００からデータ転送先となるスレーブコンピュータ２００にデータを複製するものとする。
【００５０】
図１のデータ転送元となるマスタコンピュータ１００内において、１０１はデータベースの記録領域となるストレージ、１０２はトランザクション・ログの記録領域となるストレージ、１０３はストレージへの書き込みを行う指示を与えるデータベースバックエンド、１０４はスレーブコンピュータとの通信を行う通信モジュールである。
【００５１】
図１のデータ転送先となるスレーブコンピュータ２００内において、２０１はデータベースの記録領域となるストレージ、２０２はトランザクション・ログの記録領域となるストレージ、２０４はマスタコンピュータとの通信を行う通信モジュール、２０５は受信したトランザクション・ログをストレージに書き込むモジュール、２０６はトランザクション・ログの復元処理を行う復元モジュールである。
【００５２】
ここで、トランザクション・ログが生成され、トランザクション・ログ記録領域へ書き込む動作を、図２を用いて説明する。
【００５３】
データベースバックエンド１０３は、トランザクション・ログ記録領域１０２への書き込みを開始すると同時に、通信モジュール１０４にデータ転送の指示を与える。
【００５４】
通信モジュール１０４は、通信モジュール２０４にトランザクション・ログを転送し、トランザクション・ログ書き込みモジュール２０５は、通信モジュール２０４からのトランザクション・ログを受け、それをトランザクション・ログ記録領域２０２に書き込む。
【００５５】
次に、データベースバックエンド１０３が、トランザクション・ログ記録領域１０２、２０２への書き込み完了を待機する動作を、図３を用いて説明する。
【００５６】
通信モジュール２０４は、データ転送が終了した際、通信モジュール１０４に転送完了を伝える。
【００５７】
通信モジュール１０４は、データベースバックエンド１０３に転送完了を伝える。
【００５８】
トランザクション・ログ記録領域１０２は、データベースバックエンド１０３に書き込み完了を伝える。
【００５９】
データベースバックエンド１０３は、通信モジュール１０４からの転送完了と、トランザクション・ログ記録領域１０２からの書き込み完了が伝えられるまで待機する。
【００６０】
次に、データ転送先となるスレーブコンピュータ２００において、トランザクション・ログの記録領域２０２から復元が行われる動作を図４に示す。
【００６１】
復元モジュール２０６は、トランザクション・ログ記録領域２０２に新たなトランザクション・ログが書き込まれるまで待機する。
【００６２】
トランザクション・ログ記録領域２０２に新たなトランザクション・ログが書き込まれると、復元モジュール２０６はトランザクション・ログ記録領域２０２からそのトランザクション・ログを呼び出し、データベース記録領域２０１に適用する。
【００６３】
この待機と適用の動作は、転送元ノードに障害などが発生し、トランザクション・ログが今後転送されることはないということが確認されるまで繰り返し行われる。
【図面の簡単な説明】
【００６４】
【図１】本発明に関わるレプリケーション機能を実装するデータベース・システムの概念図
【図２】、データ転送元となるマスタコンピュータ内で、トランザクション・ログが生成され、データ転送先となるスレーブコンピュータ内のトランザクション・ログ記録領域へ書き込む動作を説明する図
【図３】データ転送元となるマスタコンピュータ内で、データベースバックエンドが、トランザクション・ログ記録領域への書き込み完了を待機する動作を説明する図
【図４】データ転送先となるスレーブコンピュータ内で、トランザクション・ログの記録領域から復元が行われる動作を説明する図
【図１】
2006293910.tif 000003
【図２】
2006293910.tif 000004
【図３】
2006293910.tif 000005
【図４】
2006293910.tif 000006