JP2005250998A - 分散トランザクションシステム及び分散トランザクションの障害復旧方法並びにサーバ装置及びプログラム - Google Patents

分散トランザクションシステム及び分散トランザクションの障害復旧方法並びにサーバ装置及びプログラム Download PDF

Info

Publication number
JP2005250998A
JP2005250998A JP2004062717A JP2004062717A JP2005250998A JP 2005250998 A JP2005250998 A JP 2005250998A JP 2004062717 A JP2004062717 A JP 2004062717A JP 2004062717 A JP2004062717 A JP 2004062717A JP 2005250998 A JP2005250998 A JP 2005250998A
Authority
JP
Japan
Prior art keywords
processing
server
phase
management table
commitment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004062717A
Other languages
English (en)
Inventor
Shinji Ominato
真二 大湊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2004062717A priority Critical patent/JP2005250998A/ja
Publication of JP2005250998A publication Critical patent/JP2005250998A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】 コミットメント処理中に障害が発生した場合そのコミットメント処理を代替手段で継続する分散トランザクションの障害復旧方法を提供する。
【解決手段】 トランザクションのコミットメント処理中にサーバ処理手段32がダウンした場合、生存管理手段362がそれを検出する。トランザクション復旧手段35は、トランザクション情報管理テーブル341およびリソース情報管理テーブル342を参照して、サーバ処理手段32で処理中だったトランザクションを引き継ぐ。2相コミットメントTX制御手段372は、トランザクション情報の中にあるデータ更新状態から、データベースファイル38上のデータを更新したことに対するコミットメント処理を継続する。コミットメント処理が完了すると、2相コミットメントTX制御手段271に通知し、トランザクション情報管理テーブル241上のデータ更新状態を書き換える。
【選択図】 図1

Description

本発明は、分散トランザクションシステム及び分散トランザクションの障害復旧方法並びにサーバ装置及びプログラムに関し、特に、障害発生時に代替手段で代替して処理を継続する分散トランザクションシステム及び分散トランザクションの障害復旧方法並びにサーバ装置及びプログラムに関する。
分散型データベースでは、1トランザクションが処理されるにあたり、多数のサイトのデータベースをアクセスする。データベースをアクセスするときには、コミットメント制御が行われる。
このような分散型データベース処理におけるデータリカバリ方式の一例が特許文献1に示されている。特許文献1では、第1および第2の2相コミットメント指令を用いている。第1コミットメントに対する各サーバの処理状況をクライアントノードで管理する。2相のコミットメント指令を用いたコメットメント処理中に障害が発生した場合には、クライアントノードは、その管理している各サーバの処理状況を参照する。クライアントノードは、その参照結果に応じて各サーバに対して事前ジャーナルの廃棄または事前ジャーナルを用いたリカバリ処理のための処理を指令する。
2相コミットメント処理について概略説明する。2相コミットメント処理は、第1相処理と第2相処理とから成っている。第1相処理では、主サイトが各サイト(副サイト)にプリペアリクエストを発行する。各サイトはコミット可能か否かを主サイトに返答する。主サイトは、1つ以上のサイトからコミット不可の返答を受け取った場合、各サイトにロールバック操作を指示する。各サイトは、データの更新を破棄する。第2相処理では、主サイトが全サイトからコミット可能の返答を受け取った場合、各サイトにコミット操作を指示する。各サイトはコミット操作を実行し、特定データの更新を確定させる。各サイトはコミット操作の結果を主サイトに送信する。主サイトは全サイトからコミット完了の結果を受け取った場合に、該トランザクションの完了とする。
トランザクションはデータの更新処理によってデータの内容に矛盾が生じないようにするための管理単位である。一般的には、データベースへの接続からデータの更新、接続の切断といった一連の手続きをまとめてトランザクションと呼んでいる。
特開平4−191940号公報
しかしながら、上述した背景技術には次のような問題点があった。
すなわち、データのコミットメント処理中に障害が発生した場合、クライアントノードからサーバノードに対してリカバリ処理を要求する。この時、クライアントノードに障害が発生すると、リカバリ処理要求をサーバノードに発行できず、コミットメント処理中のデータ更新が完了しないということである。そのため、後発のトランザクション処理に支障をきたす。また、クライアントノードとサーバノードとの間で通信障害などが起こると、リカバリ処理要求が失敗する。その通信障害が復旧しない限り、リカバリ処理要求がサーバノードに届かず、同様の問題が生じる。
本発明の目的は、上記の問題点を解決し、コミットメント処理中に障害が発生しても、そのコミットメント処理を代替手段で継続し、処理結果をサーバマシン間で共有することにより分散したデータの一貫性を保証する分散トランザクションシステム及び分散トランザクションの障害復旧方法並びにサーバ装置及びプログラムを提供することにある。
本願第1の発明の分散トランザクションシステムは、クライアント装置と複数のサイトにそれぞれ備えたサーバ装置とをネットワークで接続し前記クライアント装置からのデータ更新要求に対して各サイトの前記サーバ装置が連携してデータの更新処理を行う分散トランザクションシステムであって、前記サーバ装置は、データを蓄積するデータベースと、前記データ更新要求に基づき前記データベースの更新処理を行うサーバ処理手段と、前記サーバ処理手段に障害が発生したときに前記データベースの更新処理を代替する代替手段とを備える。
本願第2の発明の分散トランザクションシステムは、第1の発明において前記サーバ装置は、2相コミットメント処理過程の状態を記憶する管理テーブルを有し、前記サーバ処理手段は、2相コミットメント処理過程の状態を前記管理テーブルに記憶する手段を有し、前記代替手段は、前記管理テーブルを参照して2相コミットメント処理を代替継続する手段を有する。
本願第3の発明の分散トランザクションシステムは、第1または第2の発明において前記代替手段は、前記サーバ処理手段の障害発生を検出する手段を有する。
本願第4の発明の分散トランザクションシステムは、第1,第2または第3の発明において前記代替手段は、代替した処理結果を他のサーバ装置に送信する手段を有する。
本願第5の発明の分散トランザクションの障害復旧方法は、クライアントからデータ更新要求を受けて複数のサーバ装置が連携してデータの更新処理を行う分散トランザクション処理の障害復旧方法であって、サーバ処理手段は、2相コミットメントの処理を行って2相コミットメント処理過程の状態を管理テーブルに記憶し、代替手段は、サーバ処理手段がダウンしたことを検出したときに前記管理テーブルを参照して前記サーバ処理手段が行っていた2相コミットメントの処理を代替継続する、ことを特徴とする。
本願第6の発明の分散トランザクションの障害復旧方法は、第5の発明において前記管理テーブルが2相コミットメント処理過程の状態として「2相処理中」を示していた場合に、前記代替手段は、サーバ処理手段が行っていた2相処理の続きを実施してデータ更新を確定する、ことを特徴とする。
本願第7の発明の分散トランザクションの障害復旧方法は、第5の発明において前記管理テーブルが2相コミットメント処理過程の状態として「第1相未処理」あるいは「第1相処理中」を示していた場合に、前記代替処理は、データ更新前に採取され管理テーブルに格納されている更新前データ情報を使用してデータの更新をロールバックさせ、「コミットメント処理失敗」として主サイトのサーバ装置に送信する、ことを特徴とする。
本願第8の発明のサーバ装置は、データを蓄積するデータベースと、データ更新要求に基づき前記データベースの更新処理を行うサーバ処理手段と、前記サーバ処理手段に障害が発生したときに前記データベースの更新処理を代替する代替手段とを備える。
本願第9の発明のサーバ装置は、第8の発明において2相コミットメント処理過程の状態を記憶する管理テーブルを有し、前記サーバ処理手段は、2相コミットメント処理過程の状態を前記管理テーブルに記憶する手段を有し、前記代替手段は、前記管理テーブルを参照して2相コミットメント処理を代替継続する手段を有する。
本願第10の発明のサーバ装置は、第8または第9の発明において前記代替手段は、前記サーバ処理手段の障害発生を検出する手段を有する。
本願第11の発明のサーバ装置は、第8,第9または第10の発明において前記代替手段は、代替した処理結果を他のサーバ装置に送信する手段を有する。
本願第12の発明のプログラムは、コンピュータに、データ更新要求に基づきデータベースの更新処理を行うサーバ処理機能、前記サーバ処理機能に障害が発生したときに前記データベースの更新処理を代替する代替機能、を実現させる。
本願第13の発明のプログラムは、第12の発明において2相コミットメント処理過程の状態を管理テーブルに記憶する機能、前記管理テーブルを参照して2相コミットメント処理を代替継続する機能、を実現させる。
本願第14の発明のプログラムは、第12または第13の発明において前記サーバ処理機能の障害発生を検出する機能、を実現させる。
本願第15の発明のプログラムは、第12,第13または第14の発明において代替した処理結果を他のサーバ装置に送信する機能、を実現させる。
本発明の効果は、コミットメント処理中に障害が発生してもその処理を継続できることである。その理由は、サーバマシン上でデータの更新状態を管理することによって、サーバ処理手段で障害が発生したとしてもその処理を同一サーバマシン内の代替手段で継続するようにしたからである。
本発明の特徴は、分散した複数のサーバマシンに点在するデータの一括更新を実施するトランザクション処理において、コミットメント処理中に障害が発生しても、そのコミットメント処理を代替手段で継続し、かつ処理結果をサーバマシン間で共有することである。これにより、分散したデータの一貫性を保証し、かつ分散トランザクションシステムの信頼性向上を実現することができる。
より具体的に説明する。サーバマシンAとサーバマシンBが連携してサーバマシンAのデータベースAのデータとサーバマシンBのデータベースBのデータとを一括して更新する。この時、一般的に知られる2相コミットメント処理を実施する。例えば、トランザクションのコミットメント処理中にサーバマシンBの処理手段Bがダウンした場合、サーバマシンB内の代替手段Bがそれを検出する。代替手段Bは処理手段Bが処理中だったトランザクション処理を引き継ぐ。代替手段Bは、データ更新状態等のトランザクション状況が格納されているトランザクション情報管理テーブルBおよびリソース情報管理テーブルBの情報をもとに、コミットメント処理を継続する。代替手段Bはコミットメント処理が完了すると、その通知をサーバマシンAの処理手段Aに送信する。処理手段Aはトランザクション情報管理テーブルAのデータ更新状態を書き換える。これによって、障害が発生してもトランザクションのコミットメント処理が正常に完了し、他サーバマシン間とのデータ一貫性を保つことができる。
次に、本発明を実施するための最良の形態の構成について、図面を参照して詳細に説明する。
図1は本発明の構成を示す図である。
図1を参照すると、本発明の一実施例は、クライアントマシン1と、サーバマシン2と、サーバマシン3と、を備えている。クライアントマシン1とサーバマシン2とサーバマシン3とは、お互いにLAN(ローカルエリアネットワーク)等のネットワーク4で接続されている。
クライアントマシン1は、プログラム制御で動作する情報処理装置である。クライアントマシン1は、アプリケーション11と、通信手段12と、を含む。
サーバマシン2は、プログラム制御で動作するサーバ装置である。サーバマシン2は、通信手段21と、サーバ処理手段22と、トランザクション処理実行手段23と、トランザクション情報管理テーブル241と、リソース情報管理テーブル242と、トランザクション復旧手段25と、生存管理手段261と、生存管理手段262と、2相コミットメントTX(トランザクション)制御手段271と、2相コミットメントTX制御手段272と、データベースファイル28と、を含む。
サーバマシン3は、プログラム制御で動作するサーバ装置である。サーバマシン3は、通信手段31と、サーバ処理手段32と、トランザクション処理実行手段33と、トランザクション情報管理テーブル341と、リソース情報管理テーブル342と、トランザクション復旧手段35と、生存管理手段361と、生存管理手段362と、2相コミットメントTX制御手段371と、2相コミットメントTX制御手段372と、データベースファイル38と、を含む。
各構成要素について説明する。なお、サーバマシン2とサーバマシン3は同様の構成であるので、ここではサーバマシン2の構成について説明する。
アプリケーション11は、サーバマシン2に対して通信手段12およびネットワーク4を介してデータベースファイルに対する更新処理要求を送信する。また、アプリケーション11は、サーバマシン2から処理要求に対する結果を受信する。
通信手段12は、サーバマシン2との間でデータの送受信を行う。
通信手段21は、クライアントマシン1やサーバマシン3との間でデータの送受信を行う。
サーバ処理手段22は、サーバマシン2上で動作し、クライアントマシン1からの処理要求の実行およびトランザクションの制御を行う。サーバ処理手段22は、トランザクション処理実行手段23と、生存管理手段261と、2相コミットメントTX制御手段271と、を含む。
トランザクション処理実行手段23は、データベースファイル28上の特定データの更新や参照を行う。更に、トランザクション処理実行手段23は、2相コミットメントTX制御手段271に対してトランザクションの開始要求とトランザクションのコミットメント要求を発行する。
生存管理手段261は、サーバ処理手段22が起動する時に、トランザクション復旧手段25上の生存管理手段262に対してサーバ処理手段22が起動したことを通知する機能を有する。また、生存管理手段261は、サーバ処理手段22が起動した時に、サーバ処理手段22のサーバ処理手段識別子を生存管理手段262に通知する。
2相コミットメントTX制御手段271は、トランザクションの情報やデータの更新手続きの状態を管理する。2相コミットメントTX制御手段271は、管理するこれらの情報を各々トランザクション情報管理テーブル241とリソース情報管理テーブル242に格納する。
ここで、1つのデータ更新を管理する単位を「リソース」と呼ぶことにする。リソースは、トランザクションの配下に登録される。トランザクションのコミットメント処理の延長でリソースで管理されるデータの更新確定処理が実施される。
リソース情報管理テーブル242は、図示されない記憶部に記憶され、リソースの情報が格納される。格納される情報は、データ更新状態,サーバ処理手段識別子,更新前データ情報および登録先のトランザクション識別子である。本発明の実施例においては、複数データベースファイル上の複数データを一括して更新するために、2相コミットメント指令を用いる。そのために、データ更新状態として、(S1)第1相未処理,(S2)第1相処理中,(S3)第1相処理完了,(S4)第2相処理中,(S5)第2相処理完了および(S6)コミットメント処理失敗の6種類が格納される。サーバ処理手段識別子は、サーバ処理手段を識別するものであり、サーバ処理手段がダウンした時にサーバ処理手段で動作していたトランザクションおよびリソースの情報を検索するキーとなる。更新前データ情報は、トランザクションをロールバックする際に、データの更新を無効にするために使用する情報である。更新を無効にするために、更新前データ情報を使用してデータベースファイルに書き込みが行われる(データの巻き戻しが行われる)。トランザクション識別子は、トランザクションを識別するものであり、トランザクションごとに割り振られ、リソースが登録されているトランザクションを識別するためのキーとなる。なお、リソース情報管理テーブルをR管理テーブルと称することがる。
トランザクション情報管理テーブル241は、図示されない記憶部に記憶され、トランザクションに関する情報が格納される。格納される情報は、サーバ処理手段情報とトランザクション情報である。サーバ処理手段情報はサーバ処理手段のサーバ処理手段識別子(1,…,n)を含む。サーバ処理手段識別子はどのサーバ処理手段がダウンしたかをチェックするときのキーとして使用される。トランザクション情報はサーバ処理手段識別子(1〜nのいずれかが入る)とトランザクション識別子とリソースごとのデータ更新状態とを含む。トランザクション情報(T1)はサーバ処理手段識別子と対応づけされており、復旧が必要なトランザクション情報とリソース情報を取得できるようになっている。それぞれの役割はリソース情報管理テーブル242内に格納されるものと同様のものである。なお、トランザクション情報管理テーブルをT管理テーブルと称することがる。
トランザクション復旧手段25は、サーバ処理手段22がダウンした際にサーバ処理手段22上で完了していないトランザクションを復旧して完了処理を継続する機能を有する。トランザクション復旧手段25は、生存管理手段262と、2相コミットメントTX制御手段272と、を含む。
生存管理手段262は、生存管理手段261から受け取ったサーバ処理手段22のサーバ処理手段識別子をトランザクション情報管理テーブル241に登録する機能を有する。生存管理手段262は、サーバ処理手段の生存状態を常時管理する。そして、生存管理手段262は、サーバ処理手段ダウン時に、どのサーバ処理手段がダウンしたかをサーバ処理手段識別子を使用してチェックする。生存管理手段262は、例えば、サーバ処理手段22との間でプロセス間通信等を使用してサーバ処理手段22のダウンを検出する。
2相コミットメントTX制御手段272は、生存管理手段262がサーバ処理手段22のダウンを検出したときに、トランザクション情報管理テーブル241およびリソース情報管理テーブル242に格納されているトランザクション情報およびデータ更新情報を基に、コミットメント処理の継続を行う。
データベースファイル28は、ユーザデータを格納する。なお、データベースファイルをDBと称することがる。
なお、サーバマシン2は、図示しない制御部を備えている。制御部は、サーバ処理手段22とトランザクション復旧手段25のどちらが動作しているかを示すアクティブフラグを有している。アクティブフラグは、通常はサーバ処理手段22が動作していることを示している。生存管理手段262は、サーバ処理手段22のダウンを検出したときに、アクティブフラグをトランザクション復旧手段25が動作していることを示すように書き換える。サーバマシン2がクライアントマシン1からデータ更新要求を受信したとき、制御部はアクティブフラグを参照してサーバ処理手段22とトランザクション復旧手段25のどちらが動作しているかを判断する。例えば、サーバ処理手段22が動作していると判断した場合、制御部はクライアントマシン1からのデータ更新要求をサーバ処理手段22に送出する。
次に、本発明を実施するための最良の形態の動作について、図1〜図5を参照して詳細に説明する。
図2は正常に終了する場合の動作の流れ(その1)を示す図である。
図3は正常に終了する場合の動作の流れ(その2)を示す図である。
図4は異常が発生した場合の動作の流れ(ケース1)を示す図である。
図5は異常が発生した場合の動作の流れ(ケース3)を示す図である。
なお、本説明において、クライアントマシン1からサーバマシン2に処理要求を行うものとする。また、クライアントマシン1からの処理要求は、サーバマシン2のデータベースファイル28とサーバマシン3のデータベースファイル38とを更新するものとする。
以下の5つの場合の動作について説明する。
・正常に終了する場合の動作。
・異常が発生した場合の動作(ケース1:第2相処理中にサーバ処理手段32に異常が発生)。
・異常が発生した場合の動作(ケース2:第1相処理完了の状態でサーバ処理手段32に異常が発生)。
・異常が発生した場合の動作(ケース3:第1相未処理あるいは第1相処理中にサーバ処理手段32に異常が発生)。
・異常が発生した場合の動作(ケース4:サーバ処理手段22に異常が発生)。
(1)正常に終了する場合。すなわち、サーバ処理手段22とサーバ処理手段32が連携してトランザクションの開始からデータベースファイル28上の特定データおよびデータベースファイル38上の特定データの更新ならびにトランザクションのコミットメント処理によるデータの一括更新確定までが正常に実施された場合である。
図2〜図3を参照すると、先ず、アプリケーション11がトランザクション処理実行手段23に処理要求を発行する(ステップS101)。
トランザクション処理実行手段23は2相コミットメントTX制御手段271にトランザクションの開始を要求する。2相コミットメントTX制御手段271は、ここで生成されるトランザクションを「T1」として管理し、T1の情報をトランザクション情報管理テーブル241に格納する(ステップS102)。
次に、トランザクション処理実行手段23は、データベースファイル28の特定データ更新を行う(ステップS103)。この更新手続きをまとめて「R1」と呼ぶことにする。
R1はトランザクションT1の配下に登録して管理される。先ず、2相コミットメントTX制御手段271は、R1の情報をリソース情報管理テーブル242に登録し、データ更新状態を「第1相未処理」とする(ステップS104)。次に、2相コミットメントTX制御手段271は、トランザクション情報管理テーブル241のT1情報の内容の一部としてR1のデータ更新状態を「第1相未処理」として登録する(ステップS105)。
次に、トランザクション処理実行手段23は、トランザクション処理実行手段33に対してデータベースファイル38の特定データ更新を要求する(ステップS106)。
トランザクション処理実行手段33は、データベースファイル38の特定データ更新を行う。この更新手続きをまとめて「R2」と呼ぶことにする(ステップS107)。
R2はトランザクションT1の配下に登録して管理される。先ず、R1の場合と同様に、2相コミットメントTX制御手段371は、R2の情報をリソース情報管理テーブル342に登録し、データ更新状態を「第1相未処理」とする(ステップS108)。次に、2相コミットメントTX制御手段371は、トランザクション情報管理テーブル341にT1情報の内容の一部としてR2のデータ更新状態を「第1相未処理」として登録する。更に、2相コミットメントTX制御手段371は、R2をT1に登録するために2相コミットメントTX制御手段271に処理要求を発行する。2相コミットメントTX制御手段271は、R2のデータ更新状態を「第1相未処理」としてトランザクション情報管理テーブル241のT1情報の内容の一部として格納する(ステップS109)。
トランザクション処理実行手段23でT1のコミットメント処理を開始する(ステップS110)。
先ず、R1に対して、データベースファイル28上の特定データについての第1相処理を開始する。2相コミットメントTX制御手段271は、トランザクション情報管理テーブル241内のT1情報に格納されるR1のデータ更新状態を「第1相処理中」にする(ステップS111)。その後、2相コミットメントTX制御手段271は、R1に対して、データベースファイル28上の特定データについての第1相処理を実施する(ステップS112)。第1相処理の完了時に、2相コミットメントTX制御手段271は、リソース情報管理テーブル242内に格納されるR1のデータ更新状態を「第1相処理完了」にする(ステップS113)。その後、2相コミットメントTX制御手段271は、トランザクション情報管理テーブル241内のT1情報に格納されるR1のデータ更新状態を「第1相処理完了」にする(ステップS114)。
次に、R2に対して、データベースファイル38上の特定データについての第1相処理を開始する(ステップS115)。先ず、2相コミットメントTX制御手段271は、トランザクション情報管理テーブル241内のT1情報に格納されるR2のデータ更新状態を「第1相処理中」にする(ステップS116)。2相コミットメントTX制御手段271は、2相コミットメントTX制御手段371に対してR2に関する第1相処理要求を実施する(ステップS117)。その後の手順は、R1に対する場合と同様である。
すなわち、2相コミットメントTX制御手段371は、R2に対してデータベースファイル38上の特定データについての第1相処理を実施する(ステップS118)。第1相処理の完了時に、2相コミットメントTX制御手段371は、リソース情報管理テーブル342内に格納されるR2のデータ更新状態を「第1相処理完了」にする(ステップS119)。次に、2相コミットメントTX制御手段371は、トランザクション情報管理テーブル341にT1情報の内容の一部としてR2のデータ更新状態を「第1相処理完了」として登録する。更に、2相コミットメントTX制御手段371は、R2をT1に登録するために2相コミットメントTX制御手段271に処理要求を発行する。2相コミットメントTX制御手段271は、R2のデータ更新状態を「第1相処理完了」としてトランザクション情報管理テーブル241のT1情報の内容の一部として格納する(ステップS120)。
これで、T1全体としての第1相処理が完了となる。なお、R1とR2のいずれかの第1相処理が失敗して、データ更新状態が「コミットメント処理失敗」になった場合は、T1はロールバックさせる。R1とR2に対してもデータの巻き戻しをそれぞれの更新前データ情報を使用して実施する。なお、更新前データは、データ更新前に採取され、リソース情報管理テーブルに格納されている。
次に、第2相処理を開始する(ステップS121)。第2相処理の手続きも、第1相処理の場合と同様である。
先ず、R1に対してデータベースファイル28上の特定データについての第2相処理を開始する。2相コミットメントTX制御手段271は、トランザクション情報管理テーブル241内のT1情報に格納されるR1のデータ更新状態を「第2相処理中」にする(ステップS122)。その後、2相コミットメントTX制御手段271は、R1に対してデータベースファイル28上の特定データについての第2相処理を実施する(ステップS123)。第2相処理の完了時に、2相コミットメントTX制御手段271は、不要となったリソース情報管理テーブル242内に格納されるR1の情報を全て削除する(ステップS124)。その後、2相コミットメントTX制御手段271は、トランザクション情報管理テーブル241内のT1情報に格納されるR1のデータ更新状態を「第2相処理完了」にする(ステップS125)。
次に、R2に対してデータベースファイル38上の特定データについての第2相処理を開始する(ステップS126)。先ず、2相コミットメントTX制御手段271は、トランザクション情報管理テーブル241内のT1情報に格納されるR2のデータ更新状態を「第2相処理中」にする(ステップS127)。2相コミットメントTX制御手段271は、2相コミットメントTX制御手段371に対してR2に関する第2相処理要求を実施する(ステップS128)。その後の手順は、R1に対する場合と同様である。
すなわち、2相コミットメントTX制御手段371は、R2に対してデータベースファイル38上の特定データについての第2相処理を実施する(ステップS129)。第2相処理の完了時に、2相コミットメントTX制御手段371は、不要となったリソース情報管理テーブル342内に格納されるR2の情報を全て削除する(ステップS130)。次に、2相コミットメントTX制御手段371は、トランザクション情報管理テーブル341にT1情報の内容の一部としてR2のデータ更新状態を「第2相処理完了」として登録する。更に、2相コミットメントTX制御手段371は、R2をT1に登録するために2相コミットメントTX制御手段271に処理要求を発行する。2相コミットメントTX制御手段271は、トランザクション情報管理テーブル241内のT1情報に格納されるR2のデータ更新状態を「第2相処理完了」にする(ステップS131)。
2相コミットメントTX制御手段271は、トランザクション情報管理テーブル241内のT1情報に格納されるリソースのデータ更新状態が全て(R1とR2が共に)「第2相処理完了」になったので、T1情報をトランザクション情報管理テーブル241からすべて削除する(ステップS132)。コミットメント処理完了である。
これで、T1全体の処理が完了となる。
(2)異常が発生した場合(ケース1)。すなわち、T1に登録されたR2に対する第2相処理中にサーバ処理手段32がダウンした場合である。
図4を参照すると、先ず、サーバ処理手段32がダウンすると生存確認手段362がそれを検出する(ステップS201)。
トランザクション復旧手段35は、トランザクション情報管理テーブル341とリソース情報管理テーブル342からサーバ処理手段32上で動作中であった処理中のトランザクション情報とリソース情報を全て検索する(ステップS202)。そして、トランザクション情報管理データ341で管理しているリソースごとのデータ更新状態を判断して、どこのリソースに対してどんな要求を行うかを判断する。本例では、トランザクション復旧手段35は、R2のデータ更新状態が第2相処理中であることを認識する。そして、トランザクション復旧手段35は、R2のデータ更新状態が第2相処理中であるためコミットメント処理中にサーバ処理手段32がダウンしたと判断し、第2相処理すなわちデータ更新確定処理の続きを実施する(ステップS203)。
2相コミットメントTX制御手段372は、リソース情報管理テーブル342に格納されたR2の情報を削除してデータの更新を確定させる(ステップS204)。その後、2相コミットメントTX制御手段372は2相コミットメントTX制御手段271に対して第2相処理が完了したことを通知する。2相コミットメントTX制御手段271は、トランザクション情報管理テーブル241内のR2のデータ更新状態を「第2相処理完了」に更新する(ステップS205)。
2相コミットメントTX制御手段271は、T1に登録されたR1とR2の第2相処理が全て完了したと判断すると、T1情報をトランザクション情報管理テーブル241から削除する(ステップS206)。コミットメント処理が完了し、T1全体の処理完了となる。
ステップS205に記載したように、2相コミットメントTX制御手段372は2相コミットメントTX制御手段271に対して第2相処理が完了したことを通知する。通知する際に、サーバマシン2とサーバマシン3との間で通信障害が発生した場合、2相コミットメントTX制御手段372は通信障害が解決するまで一定時間ごとにこの通知を再発行する。通信障害が解決した時点で、2相コミットメントTX制御手段271は、この通知を受信し、T1情報をトランザクション情報管理テーブル241から削除する。不要となったトランザクションの情報の保持を防ぐことができる。
(3)異常が発生した場合(ケース2)。すなわち、T1に登録されたR2が第1相処理完了の状態でサーバ処理手段32がダウンした場合である。
前述した(2)と同様に、R2の情報がトランザクション復旧手段35で復旧される。
2相コミットメントTX制御手段372は、データをコミットメントするかロールバックするかの判断を、T1を開始した2相コミットメントTX制御手段271に対して依頼する。2相コミットメントTX制御手段271は、トランザクション情報管理テーブル241を参照して、R1とR2のデータ更新状態を確認し、それに応じた処理を2相コミットメントTX制御手段372に指示する。2相コミットメントTX制御手段372は、指示された処理をR2に対して実施する。すなわち、
(a)R1とR2がともに「第1相処理完了」の状態の場合、第1相処理は正常に完了している状態である。2相コミットメントTX制御手段271はコミット指示を発行し、2相コミットメントTX制御手段372は、コミット処理を行う。
(b)R1が「コミットメント失敗」の状態の場合、2相コミットメントTX制御手段271はロールバック指示を発行し、2相コミットメントTX制御手段372は、ロールバック処理を行う。
等々。
その結果として、トランザクション情報管理テーブル241ならびにトランザクション情報管理テーブル341およびリソース情報管理テーブル342内の情報も更新される。
(4)異常が発生した場合(ケース3)。すなわち、T1に登録されたR2が第1相未処理あるいは第1相処理中にサーバ処理手段32がダウンした場合である。
前述した(2)と同様に、R2の情報がトランザクション復旧手段35で復旧される。
すなわち、図5を参照すると、2相コミットメントTX制御手段372は、リソース情報管理テーブル342に格納されている更新前データ情報を使用してデータベースファイル38のデータをロールバックさせる(ステップS401)。その後、2相コミットメントTX制御手段372は、R2の情報をリソース情報管理テーブル342から削除し、2相コミットメントTX制御手段271に対して通知する(ステップS402)。
2相コミットメントTX制御手段271は、R2のデータ更新状態を「コミットメント処理失敗」としてトランザクション情報管理テーブル241に格納する(ステップS403)。
R2の第1相処理が失敗したので、T1はロールバックされる(ステップS404)。そこで、2相コミットメントTX制御手段271は、リソース情報管理テーブル242に格納されている更新前データ情報を使用してデータベースファイル28のデータをロールバックさせる。
(5)異常が発生した場合(ケース4)。すなわち、T1を開始したサーバ処理手段22がダウンした場合である。
トランザクションの復旧の手順は、前述したサーバ処理手段32がダウンした場合と同様である。
トランザクション復旧手段25は、トランザクション情報管理テーブル241およびリソース情報管理テーブル242を参照してT1情報とR1情報を基に、T1情報内にあるR1とR2のデータ更新状態を確認する。そして、データ更新状態に応じてトランザクションの完了処理を実施する。すなわち、
(a)第2相処理完了のリソースに対しては、処理要求を行わない。
(b)R1とR2の状態が共に第1相処理完了しているか或いは第2相処理中のものである場合は、コミットメント処理要求を継続する。
(c)それ以外の状態である場合は、T1のロールバック処理を実施する。
以上説明したように、サーバ処理手段の処理をトランザクション復旧手段で代行継続するようにしたので、以下のような効果を奏する。
第1に、コミットメント処理中に障害が発生してもその処理を自動的に継続できることである。その理由は、サーバマシン上でデータの更新状態を管理することによって、サーバ処理手段で障害が発生したとしても、その処理を同一サーバマシン内の代替手段で継続するようにしたからである。
第2に、分散されたサーバマシン上で管理されるデータの一貫性が保証できることである。その理由は、あるサーバマシン上のサーバ処理手段で障害が発生し、トランザクションやデータ更新状況の復旧、継続処理を完了した際に、連携するトランザクションが動作する他サーバマシンへ通知するようにしたからである。この通知により、サーバマシン間でデータ更新状態に矛盾が生じないようになる。
第3に、障害が発生してもデータ更新処理に時間を要さないため後発のトランザクションに与える影響を最小限にできることである。その理由は、コミットメント処理中にサーバ処理手段に障害が発生しても即座にトランザクション状態やデータ更新状態を基に、障害が発生したサーバマシン上で独自にデータの更新処理を継続して完了するようにしたからである。
なお、上述した実施例では、2台のサーバを用いてデータの更新を行う場合について説明したが、サーバマシンの数および更新するデータの数に制限はない。
次に、本発明の他の実施例について説明する。
上述した実施例では、クライアントマシン1からサーバマシン2に処理要求を行い、サーバマシン2が主サイトにとなって分散データベースの更新を制御している。他の実施例として、クライアントマシンはデータベースファイルを持ち、サーバマシンと同様な構成とする。そして、クライアントマシン上のアプリケーション部分からトランザクションの開始やデータベースファイルのデータ更新を他のサーバマシンに要求するようにしてもよい。
本発明による上述した実施の形態において、サーバ装置の処理動作を実行するためのプログラム等を、データとしてコンピュータの磁気ディスクや光ディスク等の記録媒体(図示せず)に記録するようにし、記録されたデータを読み出してサーバ装置を動作させるために用いる。このように、本発明によるサーバ装置を動作させるデータを記録媒体に記録させ、この記録媒体をインストールすることによりサーバ装置の機能が実現できるようになる。
本発明の構成を示す図 正常に終了する場合の動作の流れ(その1)を示す図 正常に終了する場合の動作の流れ(その2)を示す図 異常が発生した場合の動作の流れ(ケース1)を示す図 異常が発生した場合の動作の流れ(ケース3)を示す図
符号の説明
1 クライアントマシン
2 サーバマシン
3 サーバマシン
4 ネットワーク
11 アプリケーション
12 通信手段
21 通信手段
22 サーバ処理手段
23 トランザクション処理実行手段
25 トランザクション復旧手段
28 データベースファイル
31 通信手段
32 サーバ処理手段
33 トランザクション処理実行手段
35 トランザクション復旧手段
38 データベースファイル
241 トランザクション情報管理テーブル
242 リソース情報管理テーブル
261 生存管理手段
262 生存管理手段
271 2相コミットメントTX制御手段
272 2相コミットメントTX制御手段
341 トランザクション情報管理テーブル
342 リソース情報管理テーブル
361 生存管理手段
362 生存管理手段
371 2相コミットメントTX制御手段
372 2相コミットメントTX制御手段

Claims (15)

  1. クライアント装置と複数のサイトにそれぞれ備えたサーバ装置とをネットワークで接続し前記クライアント装置からのデータ更新要求に対して各サイトの前記サーバ装置が連携してデータの更新処理を行う分散トランザクションシステムであって、
    前記サーバ装置は、
    データを蓄積するデータベースと、
    前記データ更新要求に基づき前記データベースの更新処理を行うサーバ処理手段と、
    前記サーバ処理手段に障害が発生したときに前記データベースの更新処理を代替する代替手段とを備える、
    ことを特徴とする分散トランザクションシステム。
  2. 前記サーバ装置は、
    2相コミットメント処理過程の状態を記憶する管理テーブルを有し、
    前記サーバ処理手段は、
    2相コミットメント処理過程の状態を前記管理テーブルに記憶する手段を有し、
    前記代替手段は、
    前記管理テーブルを参照して2相コミットメント処理を代替継続する手段を有する、
    ことを特徴とする請求項1記載の分散トランザクションシステム。
  3. 前記代替手段は、
    前記サーバ処理手段の障害発生を検出する手段を有する、
    ことを特徴とする請求項1または2記載の分散トランザクションシステム。
  4. 前記代替手段は、
    代替した処理結果を他のサーバ装置に送信する手段を有する、
    ことを特徴とする請求項1,2または3記載の分散トランザクションシステム。
  5. クライアントからデータ更新要求を受けて複数のサーバ装置が連携しデータの更新処理を行う分散トランザクションの障害復旧方法であって、
    サーバ処理手段は、
    2相コミットメントの処理を行って2相コミットメント処理過程の状態を管理テーブルに記憶し、
    代替手段は、
    サーバ処理手段がダウンしたことを検出したときに前記管理テーブルを参照して前記サーバ処理手段が行っていた2相コミットメントの処理を代替継続する、
    ことを特徴とする分散トランザクションの障害復旧方法。
  6. 前記管理テーブルが2相コミットメント処理過程の状態として「2相処理中」を示していた場合に、
    前記代替手段は、
    サーバ処理手段が行っていた2相処理の続きを実施してデータ更新を確定する、
    ことを特徴とする請求項5記載の分散トランザクションの障害復旧方法。
  7. 前記管理テーブルが2相コミットメント処理過程の状態として「第1相未処理」あるいは「第1相処理中」を示していた場合に、
    前記代替手段は、
    データ更新前に採取され管理テーブルに格納されている更新前データ情報を使用してデータの更新をロールバックさせ、
    「コミットメント処理失敗」として主サイトのサーバ装置に送信する、
    ことを特徴とする請求項5記載の分散トランザクションの障害復旧方法。
  8. データを蓄積するデータベースと、
    データ更新要求に基づき前記データベースの更新処理を行うサーバ処理手段と、
    前記サーバ処理手段に障害が発生したときに前記データベースの更新処理を代替する代替手段とを備える、
    ことを特徴とするサーバ装置。
  9. 2相コミットメント処理過程の状態を記憶する管理テーブルを有し、
    前記サーバ処理手段は、
    2相コミットメント処理過程の状態を前記管理テーブルに記憶する手段を有し、
    前記代替手段は、
    前記管理テーブルを参照して2相コミットメント処理を代替継続する手段を有する、
    ことを特徴とする請求項8記載のサーバ装置。
  10. 前記代替手段は、
    前記サーバ処理手段の障害発生を検出する手段を有する、
    ことを特徴とする請求項8または9記載のサーバ装置。
  11. 前記代替手段は、
    代替した処理結果を他のサーバ装置に送信する手段を有する、
    ことを特徴とする請求項8,9または10記載のサーバ装置。
  12. コンピュータに、
    データ更新要求に基づきデータベースの更新処理を行うサーバ処理機能、
    前記サーバ処理機能に障害が発生したときに前記データベースの更新処理を代替する代替機能、
    を実現させるためのプログラム。
  13. 2相コミットメント処理過程の状態を管理テーブルに記憶する機能、
    前記管理テーブルを参照して2相コミットメント処理を代替継続する機能、
    を実現させるための請求項12記載のプログラム。
  14. 前記サーバ処理機能の障害発生を検出する機能、
    を実現させるための請求項12または13記載のプログラム。
  15. 代替した処理結果を他のサーバ装置に送信する機能、
    を実現させるための請求項12,13または14記載のプログラム。
JP2004062717A 2004-03-05 2004-03-05 分散トランザクションシステム及び分散トランザクションの障害復旧方法並びにサーバ装置及びプログラム Pending JP2005250998A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004062717A JP2005250998A (ja) 2004-03-05 2004-03-05 分散トランザクションシステム及び分散トランザクションの障害復旧方法並びにサーバ装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004062717A JP2005250998A (ja) 2004-03-05 2004-03-05 分散トランザクションシステム及び分散トランザクションの障害復旧方法並びにサーバ装置及びプログラム

Publications (1)

Publication Number Publication Date
JP2005250998A true JP2005250998A (ja) 2005-09-15

Family

ID=35031405

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004062717A Pending JP2005250998A (ja) 2004-03-05 2004-03-05 分散トランザクションシステム及び分散トランザクションの障害復旧方法並びにサーバ装置及びプログラム

Country Status (1)

Country Link
JP (1) JP2005250998A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012155499A (ja) * 2011-01-25 2012-08-16 Fujitsu Ltd 情報処理装置およびデータベースシステム
US9386073B2 (en) 2012-08-20 2016-07-05 International Business Machines Corporation Techniques for performing processing for database

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012155499A (ja) * 2011-01-25 2012-08-16 Fujitsu Ltd 情報処理装置およびデータベースシステム
US9386073B2 (en) 2012-08-20 2016-07-05 International Business Machines Corporation Techniques for performing processing for database

Similar Documents

Publication Publication Date Title
CN100485676C (zh) 文件系统串行化重新初始化装置、方法和系统
US10360113B2 (en) Transaction recovery in a transaction processing computer system employing multiple transaction managers
US10178184B2 (en) System and method for session handling in a multitenant application server environment
JP6564026B2 (ja) マルチテナントアプリケーションサーバ環境におけるトランザクション回復のためのシステムおよび方法
US6449734B1 (en) Method and system for discarding locally committed transactions to ensure consistency in a server cluster
KR101970839B1 (ko) 서비스의 2차 위치에서의 작업의 재생 기법
US7693888B2 (en) Data synchronizer with failover facility
CN100339834C (zh) 数据处理系统内从失败的恢复
US7636868B2 (en) Data replication in a distributed system
US20070220323A1 (en) System and method for highly available data processing in cluster system
US20130191516A1 (en) Automated configuration error detection and prevention
US20020064126A1 (en) Recovery following process or system failure
US8103643B2 (en) System and method for performing distributed transactions using global epochs
US6654771B1 (en) Method and system for network data replication
JP2007141043A (ja) ストレージシステムにおける障害管理方法
JP2001518663A (ja) 高度に利用可能なクラスタ構成データベース
JP2012173996A (ja) クラスタシステム、クラスタ管理方法、およびクラスタ管理プログラム
JP2004334698A (ja) 計算機システム及び故障計算機代替制御プログラム
US6842763B2 (en) Method and apparatus for improving message availability in a subsystem which supports shared message queues
US8468386B2 (en) Detecting and recovering from process failures
US20050262381A1 (en) System and method for highly available data processing in cluster system
JP2005250998A (ja) 分散トランザクションシステム及び分散トランザクションの障害復旧方法並びにサーバ装置及びプログラム
JP2006350411A (ja) 分散データベースリカバリ方法及び同リカバリシステム及び同リカバリプログラム
JP6107159B2 (ja) データベースシステム及びデータベースシステムの制御方法
JP2012022379A (ja) 分散トランザクション処理システム、装置、方法およびプログラム

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20070119

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20080606

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080610

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20081021