JP2015191451A - 情報処理装置、制御方法および制御プログラム - Google Patents

情報処理装置、制御方法および制御プログラム Download PDF

Info

Publication number
JP2015191451A
JP2015191451A JP2014068221A JP2014068221A JP2015191451A JP 2015191451 A JP2015191451 A JP 2015191451A JP 2014068221 A JP2014068221 A JP 2014068221A JP 2014068221 A JP2014068221 A JP 2014068221A JP 2015191451 A JP2015191451 A JP 2015191451A
Authority
JP
Japan
Prior art keywords
server
transaction
database
message
list
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.)
Granted
Application number
JP2014068221A
Other languages
English (en)
Other versions
JP6248747B2 (ja
Inventor
厚人 廣瀬
Atsuto Hirose
厚人 廣瀬
俊弘 川上
Toshihiro Kawakami
俊弘 川上
明博 山本
Akihiro Yamamoto
明博 山本
環 田中
Tamaki Tanaka
環 田中
山田 俊昭
Toshiaki Yamada
俊昭 山田
優一 北村
Yuichi Kitamura
優一 北村
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014068221A priority Critical patent/JP6248747B2/ja
Priority to US14/658,284 priority patent/US9715522B2/en
Publication of JP2015191451A publication Critical patent/JP2015191451A/ja
Application granted granted Critical
Publication of JP6248747B2 publication Critical patent/JP6248747B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP

Abstract

【課題】トランザクションを実行する装置を円滑に切り替えられるようにする。
【解決手段】記憶部12は、実行中のトランザクション14−1,14−2に対応する、データベース11に未反映の更新処理を示す更新データ15−1,15−2を記憶する。制御部13は、トランザクション14−1,14−2を示すリスト16を生成する。また、制御部13は、トランザクションを実行する装置を情報処理装置10から情報処理装置10aに切り替えるとき、リスト16を情報処理装置10aに送信し、リスト16に基づいて更新データ15−1,15−2を情報処理装置10aに移行する。
【選択図】図1

Description

本発明は情報処理装置、制御方法および制御プログラムに関する。
業務に用いられる情報処理システムは、データベースを備えることが多い。例えば、データベースを管理するサーバ装置(DBサーバ)を設け、DBサーバが、アプリケーションソフトウェアを実行する端末装置やサーバ装置など(DBクライアント)から処理要求を受け付ける。DBサーバは、受け付けた処理要求に応じて、データベースに対してデータの検索や更新などの処理を行い、処理結果をDBクライアントに返信する。
DBサーバは、関連する複数の処理要求に応じて行われる一連の更新処理を、1つのトランザクションとして扱うことがある。トランザクションは、一連の更新処理の全てがデータベースに対して実行されるかまたは全く実行されないことが保証され、その一部のみ実行されることはないという性質(原始性)を備える。トランザクションを完了してデータベースに反映させることをコミットと言うことがあり、トランザクションを途中で取り消してデータベースに反映させないことをロールバックと言うことがある。
例えば、DBサーバは、更新処理を示す処理要求を受け付けると、その段階ではデータベースを更新せずに更新内容を別途記憶しておく。先の処理要求と同じトランザクションに属するコミット要求を受け付けると、DBサーバは、保持している更新内容をデータベースに反映させる。また、先の処理要求と同じトランザクションに属するロールバック要求を受け付けると、DBサーバは、保持している更新内容を破棄する。
ところで、データベースを備える情報処理システムの中には、業務サービスを停止させないように長時間連続で稼働することが期待されるものもある。一方、DBサーバに障害が発生したときや保守作業を行うときなど、DBサーバを一時的に停止せざるを得ないこともある。そこで、DBサーバを冗長化してデータベースの可用性を高めることがある。例えば、同じ内容のデータベースを保持する2つのDBサーバを用意し、一方はトランザクションを扱う現用サーバに指定し、他方はトランザクションを直接は扱わず現用サーバのデータベースと同期する待機サーバに指定する。現用サーバの障害発生時や保守作業時には、トランザクションを扱うDBサーバを待機サーバに切り替える。
DBサーバの切替に関して、例えば、次のような技術が提案されている。
オンライン取引を実行するホストを、切替指示に応じて正ホストから副ホストに切り替える切替方法が提案されている。この切替方法では、切替指示が出される前に正ホストに届いた要求が正ホストで処理されるのを待って、正ホストのデータベースを確定させ、確定した正ホストのデータベースと同じ内容になるように副ホストのデータベースを更新する。切替指示が出された後に正ホストに届いた要求は、正ホストで待機させておき、副ホストのデータベースが更新された後に副ホストに実行させる。
また、トランザクション単位で正ストレージ装置のデータベースと副ストレージ装置のデータベースとを同期させるリカバリシステムが提案されている。このリカバリシステムでは、正ストレージ装置はトランザクションをコミットするとき、そのトランザクションの更新内容を示すログを副ストレージ装置に送信する。副ストレージ装置は、受信したログに基づいて副ストレージ装置のデータベースを更新する。
また、本番システムから代行システムに切り替えることで本番システムの保守作業を可能にするデータベースシステムが提案されている。このデータベースシステムでは、代行システムに切り替えるとき、本番システムへの新規トランザクションの投入を停止する。本番システムで実行中のトランザクションがコミットされると、そのトランザクションの更新データを本番システムから代行システムに送信し、代行システムのデータベースを本番システムと同期させる。そして、本番システムの全てのトランザクションが終了すると、代行システムへの新規トランザクションの投入を開始する。
また、アプリケーションサーバが正DBサーバと副DBサーバの両方に対してデータ操作を要求するデータベースシステムが提案されている。このデータベースシステムでは、正DBサーバと副DBサーバそれぞれがデータ操作のログを生成し、正DBサーバのみがアプリケーションサーバにデータ操作完了を通知する。その後、アプリケーションサーバが正DBサーバと副DBサーバに対してトランザクションのコミットを要求すると、正DBサーバと副DBサーバそれぞれがログに基づいてデータベースを更新し、正DBサーバのみがアプリケーションサーバにコミット完了を通知する。
特開2000−89993号公報 特開2006−48103号公報 特開2010−33398号公報 特開2012−155499号公報
しかし、トランザクションを実行する装置を切り替えるにあたり、上記の特許文献1〜3のような提案技術では切替先の装置の負荷が一時的に増大することになる。このため、切替時にデータベースアクセスの応答性能が悪化し得るという問題がある。
例えば、切替元の装置で実行中のトランザクションが終了するのを待って切替先の装置に新たなトランザクションの処理要求を投入し始める方法では、切替中に溜まった大量の処理要求が切替先の装置に一時に投入されてしまう。よって、切替直後に負荷が増大して応答性能が悪化してしまう。また、切替元の装置で実行中のトランザクションはロールバックし、すぐに切替先の装置に処理要求を投入し始める方法も考えられる。しかし、この方法でも、切替元の装置でロールバックしたトランザクションを切替先の装置で最初から実行し直すことになり、切替先の装置の負荷が一時的に増大してしまう。
一方、上記の特許文献4のように複数の装置の間でトランザクションの途中状態も同期しておく提案技術では、通常運用時の待機系の負荷が現用系と同等程度に大きくなってしまう。よって、待機系にも多くの計算リソースを用意することになり、また、待機系の計算リソースをトランザクション制御以外に活用することが難しくなるという問題がある。
1つの側面では、本発明は、トランザクションを実行する装置を円滑に切り替えられるようにする情報処理装置、制御方法および制御プログラムを提供することを目的とする。
1つの態様では、データベースを管理する、記憶部と制御部とを有する情報処理装置が提供される。記憶部は、実行中の1または2以上のトランザクションに対応する、データベースに未反映の更新処理を示す1または2以上の更新データを記憶する。制御部は、1または2以上のトランザクションを示すリストを生成し、トランザクションを実行する装置を情報処理装置から他の情報処理装置に切り替えるとき、リストを他の情報処理装置に送信し、リストに基づいて1または2以上の更新データを他の情報処理装置に移行する。
また、1つの態様では、データベースを管理するコンピュータが実行する制御方法が提供される。制御方法では、実行中の1または2以上のトランザクションを示すリストを生成する。トランザクションを実行する装置をコンピュータから他のコンピュータに切り替えるとき、リストを他のコンピュータに送信し、リストに基づいて、データベースに未反映の更新処理を示す1または2以上のトランザクションに対応する1または2以上の更新データを他のコンピュータに移行する。また、1つの態様では、データベースを管理するコンピュータに実行させる制御プログラムが提供される。
1つの側面では、トランザクションを実行する装置を円滑に切り替えられる。
第1の実施の形態の情報処理装置を示す図である。 第2の実施の形態のデータベースシステムを示す図である。 DBサーバのハードウェア例を示すブロック図である。 スイッチオーバを利用した保守作業の例を示す図である。 コネクションとトランザクションの例を示す図である。 トランザクション処理例を示す第1の図である。 トランザクション処理例を示す第2の図である。 トランザクション処理例を示す第3の図である。 トランザクション処理例を示す第4の図である。 業務サーバとDBサーバの機能例を示すブロック図である。 設定ファイルの例を示す図である。 生存サーバリストの例を示す図である。 メッセージの例を示す図である。 トランザクションログの例を示す図である。 移行リストの例を示す図である。 DBサーバ起動の手順例を示すフローチャートである。 DBサーバ起動の手順例を示すフローチャート(続き)である。 生存被監視の手順例を示すフローチャートである。 生存監視の手順例を示すフローチャートである。 コマンド受信の手順例を示すフローチャートである。 クラスタ縮退の手順例を示すフローチャートである。 サーバ組込の手順例を示すフローチャートである。 スイッチオーバの手順例を示すフローチャートである。 スイッチオーバの手順例を示すフローチャート(続き)である。 メッセージ処理の手順例を示すフローチャート(第1の図)である。 メッセージ処理の手順例を示すフローチャート(第2の図)である。 メッセージ処理の手順例を示すフローチャート(第3の図)である。 第1の他のトランザクション処理例を示すシーケンス図である。 第2の他のトランザクション処理例を示すシーケンス図である。 第3の他のトランザクション処理例を示すシーケンス図である。 第4の他のトランザクション処理例を示すシーケンス図である。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理装置を示す図である。
第1の実施の形態の情報処理装置10は、冗長構成のデータベースシステムに含まれている。情報処理装置10は、データベース管理システム(DBMS:Database Management System)のプログラムを実行するコンピュータであってもよい。また、情報処理装置10は、他の情報処理装置から処理要求を受け付けるサーバ装置であってもよい。
情報処理装置10は、データベース11を管理する。データベース11が関係データベース(RDB:Relational Database)である場合、データベース11は、データレコードを格納する1または2以上のテーブルを含む。データベース11は、HDD(Hard Disk Drive)などの不揮発性の記憶装置またはRAM(Random Access Memory)などの揮発性の記憶装置に格納され得る。この不揮発性または揮発性の記憶装置は、情報処理装置10が備えていてもよいし、情報処理装置10の外部に接続されていてもよい。
冗長構成のデータベースシステムには、更に情報処理装置10aが含まれる。情報処理装置10と情報処理装置10aとは、ネットワークを介して通信可能である。情報処理装置10aは、データベース11と同期されて同じ内容のデータを格納することになる冗長なデータベースを管理していてもよい。情報処理装置10がトランザクションを実行する現用系として動作しているとき、情報処理装置10aは、トランザクションを実行しない待機系として動作する。ただし、現用系が情報処理装置10から情報処理装置10aに切り替えられることがある。例えば、情報処理装置10の保守作業が行われるとき、管理者からの指示に応じて、現用系が情報処理装置10aに切り替えられる。
情報処理装置10は、記憶部12および制御部13を有する。記憶部12は、HDDなどの不揮発性の記憶装置でもよいし、RAMなどの揮発性の記憶装置でもよい。制御部13は、例えば、プロセッサである。プロセッサは、CPU(Central Processing Unit)やDSP(Digital Signal Processor)であってもよく、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の集積回路を含んでいてもよい。プロセッサは、RAMなどの記憶装置(例えば、記憶部12)に記憶されたプログラムを実行するものであってもよい。また、2以上のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
記憶部12は、更新データ15−1,15−2を記憶する。更新データ15−1は、コミットもロールバックもされていない情報処理装置10で実行中のトランザクション14−1(Tr1)に対応し、データベース11に未反映の更新処理の内容を示す。同様に、更新データ15−2は、情報処理装置10で実行中のトランザクション14−2(Tr2)に対応し、データベース11に未反映の更新処理の内容を示す。
更新データ15−1は、例えば、データベース11に対して実行する命令、または、データベース11に含まれる更新前のデータと更新後のデータの対応を示す。トランザクション14−1について更新処理を示す処理要求が発生すると、データベース11が更新される代わりに更新データ15−1が生成または更新される。トランザクション14−1についてコミット要求が発生すると、更新データ15−1に基づいてデータベース11が更新される。このとき、2以上のテーブルが纏めて更新されることもある。一方、トランザクション14−1についてロールバック要求が発生すると、更新データ15−1がデータベース11に反映されずに破棄される。同様に、更新データ15−2についても、トランザクション14−2の状態に応じて生成・更新・破棄などが行われる。
制御部13は、情報処理装置10で実行中のトランザクション14−1,14−2を示すリスト16を生成する。リスト16は、例えば、トランザクション14−1,14−2の識別情報を含む。トランザクションを実行する現用系が情報処理装置10から情報処理装置10aに切り替わるとき、制御部13は、リスト16のコピーを情報処理装置10aに送信する。リスト16は、現用系の切替が指示されたときに生成してもよいし、切替が指示される前に生成しておいてもよい。後者の場合、例えば、情報処理装置10は、実行中のトランザクションが変化する毎にリスト16を更新して最新状態を維持する。
また、制御部13は、現用系が情報処理装置10aに切り替わるとき、リスト16に基づいて更新データ15−1,15−2を情報処理装置10aに移行する。例えば、制御部13は、更新データ15−1,15−2を順次移行していき、各トランザクションの更新データが移行済か否かを、リスト16を用いて管理する。制御部13は、情報処理装置10aに移行する順序をリスト16に基づいて決定してもよい。このとき、制御部13は、トランザクション14−2に属する処理要求を情報処理装置10が受け付けた場合、更新データ15−2の移行順位を繰り上げ、その処理要求に対応する処理を情報処理装置10aに実行させるようにしてもよい。また、制御部13は、情報処理装置10が切替命令を受け付ける前に、トランザクション14−1に属する処理要求を受け付けていた場合、更新データ15−1の移行順位を繰り下げ、その処理要求に対応する処理を情報処理装置10の実行が完了するまでトランザクションの更新データの移行を待たせてもよい。情報処理装置10aも、受信したリスト16のコピーを用いて、各トランザクションの更新データが移行済か否かを管理できる。
第1の実施の形態の情報処理装置10によれば、トランザクションを実行する現用系が情報処理装置10aに切り替わるときに、リスト16を用いて、実行中のトランザクション14−1,14−2を情報処理装置10aに引き継ぐことが可能となる。よって、トランザクション14−1,14−2を一旦ロールバックして情報処理装置10aに引き継がない場合と比べて、現用系を切り替えた後に大量の処理要求が情報処理装置10aに集中するのを抑制でき、情報処理装置10aの負荷を低減できる。よって、データベースシステムのレスポンス性能の悪化を抑え、無停止で現用系を切り替えることが可能となる。
また、コミット前のトランザクション14−1,14−2の状態を情報処理装置10,10a間で継続的に同期する場合と比べて、現用系を切り替えるときのみ引き継ぎを行えばよく、待機系として動作中の情報処理装置10aの負荷を低減できる。よって、待機系として動作する情報処理装置10aの計算リソース(CPUリソースなど)を、更新を伴わないデータ処理など他の処理に利用でき、計算リソースを有効活用できる。
[第2の実施の形態]
図2は、第2の実施の形態のデータベースシステムを示す図である。
第2の実施の形態のデータベースシステムは、データベースを管理するDBサーバを冗長化し、データベースの可用性を向上させたものである。このデータベースシステムは、業務サーバ20,20a、端末装置31およびDBサーバ100,100a,100bを有する。上記の装置は、ネットワーク30に接続されている。
業務サーバ20,20aは、業務に用いられるアプリケーションソフトウェアを実行するサーバコンピュータである。データベースを利用するアプリケーションソフトウェアが稼働しているとき、業務サーバ20,20aは、DB100,100a,100bとコネクションを確立しておく。業務サーバ20,20aは、DBサーバ100,100a,100bにメッセージを送信し、何れかのDBサーバから処理結果を受信する。業務サーバ20,20aは、DBサーバ100,100a,100bにとって、データ処理を要求する「DBクライアント」であると言うことができる。なお、ユーザが操作するクライアントコンピュータをDBクライアントとして用いることも可能である。
端末装置31は、データベースシステムの管理者が操作するクライアントコンピュータである。管理者は、業務サーバ20,20aを用いた業務サービスを停止させずに、DBサーバ100,100a,100bのうち一部のDBサーバに対して保守作業を行うことがある。保守作業としては、例えば、DBサーバ100,100a,100bで動作するソフトウェアのアップデートやハードウェア部品の交換などが挙げられる。継続的にDBサーバ100,100a,100bのソフトウェアやハードウェアの保守を行うことで、障害発生による業務サービスの異常停止を抑制することができる。
保守作業が行われるとき、端末装置31は、業務サーバ20,20aに処理結果を通知する現用状態のDBサーバに対して、現用状態のDBサーバの切替を指示するコマンドを送信する。コマンドに応じて現用状態のDBサーバを切り替えることを、「スイッチオーバ」と言うことがある。スイッチオーバが行われると、切替元のDBサーバは、業務サーバ20,20aとの間のコネクションを切断してDBMSを停止させる。これにより、切替元のDBサーバに対して保守作業を行うことができる。スイッチオーバ後は、切替先のDBサーバが現用状態になり、業務サーバ20,20aに処理結果を通知する。スイッチオーバ中に、ハートビートなどにより異常を検知した場合は、本発明のトランザクションを示すリストを使用したトランザクションの移行をせずに、フェイルオーバーによる移行元から移行先への切り替えを行う。
DBサーバ100,100a,100bは、それぞれデータベースを保持するサーバコンピュータである。DBサーバ100,100a,100bのデータベースは、格納されるデータが同じになるように同期されている。DBサーバ100,100a,100bの全てが稼働している場合、1つのDBサーバ(例えば、DBサーバ100)が現用状態であり、他のDBサーバ(例えば、DBサーバ100a,100b)が待機状態である。
現用状態のDBサーバは、業務サーバ20,20aからのメッセージに応じてデータ処理を行い、処理結果を業務サーバ20,20aに通知する。現用状態のDBサーバでは、トランザクションが実行され得る。一方、待機状態のDBサーバは、業務サーバ20,20aからメッセージを受信してもデータ処理を行わず、処理結果を業務サーバ20,20aに通知しない。待機状態のDBサーバでは、トランザクションが直接的には実行されない。ただし、現用状態のDBサーバでデータベースが更新されると、待機状態のDBサーバもデータベースを更新し、現用状態のDBサーバのデータベースと同期させる。
図3は、DBサーバのハードウェア例を示すブロック図である。
DBサーバ100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107を有する。これらのユニットはバスに接続されている。CPU101は、第1の実施の形態の制御部13の一例である。RAM102またはHDD103は、第1の実施の形態の記憶部12の一例である。業務サーバ20,20a、端末装置31およびDBサーバ100a,100bも、DBサーバ100と同様のハードウェアを用いて実現可能である。
CPU101は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU101は、HDD103に記憶されているプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを備えてもよく、DBサーバ100は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、DBサーバ100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、DBサーバ100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
画像信号処理部104は、CPU101からの命令に従って、DBサーバ100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
入力信号処理部105は、DBサーバ100に接続された入力デバイス112から入力信号を取得し、CPU101に出力する。入力デバイス112としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、DBサーバ100に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信インタフェース107は、ネットワーク30に接続され、ネットワーク30を介して業務サーバ20,20aやDBサーバ100a,100bと通信を行うインタフェースである。通信インタフェース107は、ケーブルで通信装置と接続される有線通信インタフェースでもよいし、基地局と無線で接続される無線通信インタフェースでもよい。
なお、DBサーバ100は、媒体リーダ106を備えていなくてもよく、ユーザが操作する端末装置から制御可能である場合には画像信号処理部104や入力信号処理部105を備えていなくてもよい。また、ディスプレイ111や入力デバイス112が、DBサーバ100の筐体と一体に形成されていてもよい。
図4は、スイッチオーバを利用した保守作業の例を示す図である。
DBサーバ100は、データベース121とDBMS131を有する。データベース121は、HDD103またはRAM102に保存されている。DBMS131は、例えば、CPU101が実行するミドルウェアとして実装される。同様に、DBサーバ100aはデータベース121aとDBMS131aを有し、DBサーバ100bはデータベース121bとDBMS131bを有する。ここでは、DBサーバ100が現用状態として稼働し、DBサーバ100a,100bが待機状態として稼働しているとする。
業務サーバ20は、DBサーバ100,100a,100bそれぞれとコネクションを確立する。DBサーバ100,100a,100bによって管理されるデータにアクセスする場合、業務サーバ20は、検索要求や更新要求などの処理要求を示すメッセージを、DBサーバ100,100a,100bに送信する。待機状態のDBサーバ100a,100bは、業務サーバ20から受信したメッセージを破棄する。一方、現用状態のDBサーバ100は、受信したメッセージに応じて、データベース121からのデータの検索やデータベース121の更新などの処理を行い、処理結果を業務サーバ20に通知する。
ここで、DBサーバ100に対して保守作業が行われる場合、端末装置31はDBサーバ100に対して切替命令を送信する。これにより、現用状態のDBサーバ100と1つの待機状態のDBサーバ(ここでは、DBサーバ100a)の間でスイッチオーバが実行される。スイッチオーバ中も、業務サーバ20からDBサーバ100,100a,100bには処理要求が送信され得る。切替元のDBサーバ100は、業務サーバ20から受信したメッセージを破棄するようになる。スイッチオーバに関与しない待機状態のDBサーバ100bは、引き続き業務サーバ20から受信したメッセージを破棄する。一方、切替先のDBサーバ100aは、受信したメッセージに応じた処理を行い、処理結果を業務サーバ20に通知するようになる。なお、後述するように、切替元のDBサーバ100で実行中であったトランザクションは、切替先のDBサーバ100aに引き継がれる。
DBサーバ100からDBサーバ100aへのスイッチオーバが完了すると、切替元のDBサーバ100は、業務サーバ20との間のコネクションを切断し、DBMS131を停止させる。これにより、DBサーバ100は停止状態に遷移し、保守作業を行うことが可能となる。切替先のDBサーバ100aは、現用状態に遷移する。DBサーバ100の保守作業が終わると、DBMS131を起動させ、DBサーバ100を待機状態としてデータベースシステムに再び組み込むことが可能である。スイッチオーバによって現用状態のDBサーバを次々と切り替えていくことで、DBサーバ100,100a,100bに対して順に保守作業を行うことができる。このような方法で複数のコンピュータのソフトウェアおよびハードウェアをアップデートすることを「ローリングアップデート」と言うことがある。
次に、コネクションとトランザクションの関係について説明する。
図5は、コネクションとトランザクションの例を示す図である。
業務サーバ20は、業務サーバ20上でのアプリケーションソフトウェアの実行状況に応じて、DBサーバ100,100a,100bそれぞれとの間に1または2以上のコネクションを確立する。業務サーバ20は、異なるアプリケーションソフトウェアからの要求に応じて、同一のDBサーバとの間に複数のコネクションを確立することがある。
例えば、業務サーバ20は、DBサーバ100との間にコネクション#11,#13を確立し、DBサーバ100aとの間にコネクション#21,#23を確立する。各コネクションの識別情報として、コネクション#11にはセッションID=Aが付与され、コネクション#13にはセッションID=Cが付与される。これに対し、コネクション#21にはコネクション#11と同じセッションID=Aが付与され、コネクション#23にはコネクション#13と同じセッションID=Cが付与される。
DBサーバの異なる2つのコネクションに同じセッションIDが付与されるのは、要求元の業務サーバやアプリケーションソフトウェアが同じであり、且つ、同じDBMSプログラムに従ってDBサーバ100,100aがセッションIDを決定するためである。同様に、例えば、業務サーバ20aは、DBサーバ100との間にコネクション#12を確立し、DBサーバ100aとの間にコネクション#22を確立する。各コネクションの識別情報として、コネクション#12にはセッションID=Bが付与され、コネクション#22にはコネクション#12と同じセッションID=Bが付与される。
業務サーバ20,20aおよびDBサーバ100,100a,100bは、異なるタイミングで送信される複数の処理要求に応じた一連の更新処理を、1つのトランザクションとして扱うことがある。業務サーバ20,20aおよびDBサーバ100,100a,100bは、1つのセッションIDにつき同時に1つのトランザクションのみ発生させることができる。あるトランザクションがコミットまたはロールバックによって終了すると、同じコネクション上で次のトランザクションを発生させることが可能である。
例えば、業務サーバ20は、更新要求をコネクション#11上で送信し、同じ内容の更新要求をコネクション#21上で送信する。DBサーバ100は、コネクション#11上で更新要求を受信し、トランザクションIDを付与してトランザクション#1を発生させる。一方、DBサーバ100aは、コネクション#21で受信した更新要求を破棄する。以降、業務サーバ20は、トランザクション#1に属する処理要求をコネクション#11上で送信し、同じ内容の処理要求をコネクション#21上で送信する。業務サーバ20は、更新内容をデータベースに反映させる場合はコミット要求を送信し、取り消す場合はロールバック要求を送信する。これにより、トランザクション#1が終了する。
トランザクション#1が終了した後、業務サーバ20は、コネクション#11上でトランザクション#4に属する処理要求を送信することができる。このとき、業務サーバ20は、同じ内容の処理要求をコネクション#21上で送信する。また、例えば、業務サーバ20は、トランザクション#1と並行して、コネクション#13上でトランザクション#3に属する処理要求を送信する。このとき、業務サーバ20は、同じ内容の処理要求をコネクション#23上で送信する。また、業務サーバ20aは、トランザクション#1と並行して、コネクション#12上でトランザクション#2に属する処理要求を送信する。このとき、業務サーバ20aは、同じ内容の処理要求をコネクション#22上で送信する。
次に、DBサーバ100,100a,100bによるトランザクションの制御と、スイッチオーバ中のトランザクションの引き継ぎについて説明する。
図6は、トランザクション処理例を示す第1の図である。
トランザクション#0を発生させるような処理要求を業務サーバ20がDBサーバ100,100a,100bに送信すると、現用状態のDBサーバ100は、更新するデータの取得などデータベース121を更新する前までの処理を実行する。そして、DBサーバ100は、更新内容などトランザクション#0の状態を示すトランザクションログ150を生成して保持する。また、DBサーバ100は、DBサーバ100が保持する移行リスト141にトランザクション#0を登録し、その移行状態を「未移行」に設定する。一方、待機状態のDBサーバ100a,100bは、業務サーバ20から受信した処理要求を破棄する。なお、図6〜9では、DBサーバ100bの動作の記載を省略している。
その後、業務サーバ20がトランザクション#0のコミット要求をDBサーバ100,100a,100bに送信すると、DBサーバ100は、トランザクションログ150が示す更新内容をデータベース121に反映させる。また、DBサーバ100は、トランザクションログ150のコピーであるトランザクションログ150aを、待機状態のDBサーバ100a,100bに送信する。DBサーバ100aは、業務サーバ20から受信したコミット要求を破棄し、DBサーバ100から受信したトランザクションログ150aが示す更新内容をデータベース121aに反映させる。DBサーバ100bも、DBサーバ100aと同様の処理を行う。そして、DBサーバ100は、トランザクションログ150を削除し、移行リスト141からトランザクション#0の情報を消去する。
図7は、トランザクション処理例を示す第2の図である。
ここでは、図5で説明したトランザクション#1,#2,#3がDBサーバ100で実行中であるとする。DBサーバ100は、トランザクション#1に対応するトランザクションログ151と、トランザクション#2に対応するトランザクションログ152と、トランザクション#3に対応するトランザクションログ153を有する。また、DBサーバ100が有する移行リスト141には、トランザクション#1,#2,#3が登録されており、各トランザクションの移行状態が「未移行」に設定されている。
このとき、端末装置31がDBサーバ100に切替命令を送信したとする。すると、DBサーバ100からDBサーバ100aへのスイッチオーバが行われる。切替元のDBサーバ100は、移行リスト141のコピーである移行リスト141aをDBサーバ100aに送信する。その後、DBサーバ100は、移行リスト141に従って、トランザクションログ151,152,153を1つずつDBサーバ100aに送信していく。送信順序は、例えば、トランザクションが移行リスト141に登録された順(発生タイミングが早い順)とする。ただし、任意の順序で送信するようにしてもよい。
例えば、DBサーバ100は、移行リスト141の先頭に登録されているトランザクション#1を最初に選択する。すると、DBサーバ100は、トランザクション#1に対応するトランザクションログ151のコピーであるトランザクションログ151aを、DBサーバ100aに送信する。DBサーバ100は、移行リスト141に記載されたトランザクション#1の移行状態を「移行済」に更新し、DBサーバ100aは、移行リスト141aに記載されたトランザクション#1の移行状態を「移行済」に更新する。
図8は、トランザクション処理例を示す第3の図である。
スイッチオーバ中であっても、DBサーバ100,100a,100bは、業務サーバ20,20aから処理要求を受信する可能性がある。前述のようにトランザクション#1がDBサーバ100からDBサーバ100aに引き継がれた後、業務サーバ20がトランザクション#1に属する処理要求をDBサーバ100,100a,100bに送信したとする。切替元のDBサーバ100は、この処理要求を破棄する。切替先のDBサーバ100aは、移行リスト141aを参照して、トランザクション#1の移行状態が「移行済」であることを検知する。すると、DBサーバ100aは、DBサーバ100から受信したトランザクションログ151aを用いて、トランザクション#1の処理を進める。なお、DBサーバ100bは、業務サーバ20から受信した処理要求を破棄する。
次に、業務サーバ20がトランザクション#3に属する処理要求をDBサーバ100,100a,100bに送信したとする。DBサーバ100は、この処理要求を破棄する。また、DBサーバ100は、移行リスト141を参照して、トランザクション#3の移行状態が「未移行」であることを検知する。すると、DBサーバ100は、トランザクション#3に対応するトランザクションログ153の移行順位が早くなるように、移行リスト141を更新する。DBサーバ100aは、移行リスト141aを参照して、トランザクション#3の移行状態が「未移行」であることを検知する。すると、DBサーバ100aは、処理要求をバッファに格納して、移行状態が「移行済」になるのを待つ。なお、DBサーバ100bは、業務サーバ20から受信した処理要求を破棄する。
図9は、トランザクション処理例を示す第4の図である。
トランザクション#3の移行順位が繰り上がることで、DBサーバ100は、次にトランザクション#2をスキップしてトランザクション#3を選択する。トランザクション#3は、例えば、移行リスト141の中で、最も前方に登録されている「未移行」のトランザクションである。すると、DBサーバ100は、トランザクション#3に対応するトランザクションログ153のコピーであるトランザクションログ153aを、DBサーバ100aに送信する。DBサーバ100は、移行リスト141に記載されたトランザクション#3の移行状態を「移行済」に更新し、DBサーバ100aは、移行リスト141aに記載されたトランザクション#3の移行状態を「移行済」に更新する。
DBサーバ100aは、トランザクション#3の移行状態が「移行済」に変わったことを検知すると、バッファからトランザクション#3の処理要求を取り出す。DBサーバ100aは、トランザクション#3に対応するトランザクションログ153aを用いて、その処理要求に応じた処理を実行し、業務サーバ20に処理結果を通知する。このように、スイッチオーバが開始されると、業務サーバ20からのメッセージは切替先のDBサーバ100aによって処理され、DBサーバ100aから業務サーバ20に処理結果が通知される。このとき、当該メッセージが未移行のトランザクションに属するものである場合、切替元のDBサーバ100はそのトランザクションの移行順位を繰り上げ、DBサーバ100aはそのトランザクションが移行されてからメッセージを処理する。
次に、DBサーバ100の機能およびDBサーバ100が実行する処理について説明する。DBサーバ100a,100bも、同様の機能を有し同様の処理を行う。
図10は、業務サーバとDBサーバの機能例を示すブロック図である。
業務サーバ20は、プログラム記憶部21、ユーザプログラム制御部22、DBアクセス部23および通信制御部24を有する。プログラム記憶部21は、例えば、業務サーバ20が備えるRAMまたはHDDに確保した記憶領域として実現される。ユーザプログラム制御部22、DBアクセス部23および通信制御部24は、例えば、業務サーバ20が実行するソフトウェアのモジュールとして実現される。
プログラム記憶部21は、ユーザが作成したアプリケーションソフトウェアのプログラム(ユーザプログラム)を記憶する。ユーザプログラムが起動すると、ユーザプログラムの実行インスタンスである「プロセス」が生成される。ユーザプログラムの中には、1つのプロセスの中で、並行して実行可能な1または2以上の「スレッド」を生成するものもある。また、ユーザプログラムの中には、データベースとの間のコネクションを生成するよう要求し、そのコネクションを指定して処理要求を出力するものもある。データベースとの間のコネクションは、スレッド毎に生成することが可能である。
ユーザプログラム制御部22は、プログラム記憶部21に記憶されたユーザプログラムを起動し、業務サーバ20におけるユーザプログラムの実行を制御する。
DBアクセス部23は、ユーザプログラム制御部22によって起動されたプロセスまたはスレッドからの要求に応じて、データベースへのアクセスを実行する。コネクションの確立が要求された場合、DBアクセス部23は、3つのコネクション要求を生成してDBサーバ100,100a,100b宛てのメッセージとして出力する。複数のサーバへコネクションを確立する要求を生成するときは、1つのコネクション要求を生成して、マルチキャストに対応したネットワーク機器を使用して、DBサーバ100,100a,100b宛てのメッセージとして出力してもよい。データベースの検索や更新などが要求された場合、DBアクセス部23は、3つの処理要求を生成してDBサーバ100,100a,100b宛てのメッセージとして出力する。トランザクションのコミットまたはロールバックが要求された場合、DBアクセス部23は、3つのコミット要求またはロールバック要求を生成してDBサーバ100,100a,100b宛てのメッセージとして出力する。また、DBアクセス部23は、何れかのDBサーバから結果通知を受け取ると、その結果通知が指定するプロセスまたはスレッドに渡す。
通信制御部24は、ネットワーク30を介した通信を制御する。通信制御部24は、DBアクセス部23からメッセージを受け付け、DBアクセス部23から指定されたDBサーバにそのメッセージを送信する。また、通信制御部24は、何れかのDBサーバから結果通知を受信し、受信した結果通知をDBアクセス部23に渡す。
DBサーバ100は、データベース121、ログ記憶部122、サーバ情報記憶部123、移行リスト記憶部124、メッセージバッファ125、DBMS131および通信制御部135を有する。ログ記憶部122、サーバ情報記憶部123、移行リスト記憶部124およびメッセージバッファ125は、例えば、RAM102またはHDD103に確保した記憶領域として実現される。通信制御部135は、例えば、DBサーバ100が実行するソフトウェアのモジュールとして実現される。
データベース121は、前述のように、データを記憶する。データベース121が関係データベース(RDB)である場合、データベース121は、1または2以上のテーブルを記憶する。データベース121は、データ構造の定義情報を記憶していてもよい。
ログ記憶部122は、図6のトランザクションログ150や図7のトランザクションログ151〜153などのトランザクションログを記憶する。1つのトランザクションログは、1つのトランザクションに対応し、当該トランザクションの状態を示す。各トランザクションログは、処理要求を受け付けたコネクションを示すセッションIDや、データベースに未反映の更新内容を示す更新データなどを含んでいる。
サーバ情報記憶部123は、DBサーバ100を起動するときに参照される設定ファイルを記憶する。設定ファイルは、ユーザによって作成される。設定ファイルには、現用状態のDBサーバを決定するときに用いられる情報が記載される。
移行リスト記憶部124は、図6の移行リスト141を記憶する。前述のように、移行リスト141は、DBサーバ100において実行中のトランザクションを示す。移行リスト141は、トランザクションの生成や終了に応じて更新され、また、スイッチオーバ中に他のDBサーバにトランザクションを移行するときに参照される。
メッセージバッファ125は、業務サーバ20,20aから受信したメッセージのうち、すぐに処理できないメッセージを一時的に記憶する。例えば、メッセージバッファ125は、図8のトランザクション#3に属する処理要求を記憶する。
DBMS131は、業務サーバ20,20aからメッセージを受け付け、データベース121へのアクセスを制御する。また、DBMS131は、データベース121と他のDBサーバのデータベースとの間の同期を制御する。DBMS131は、クラスタ制御部132、切替部133およびメッセージ処理部134を有する。
クラスタ制御部132は、サーバ情報記憶部123に記憶された設定ファイルを参照して、DBMS131の起動処理を行う。また、クラスタ制御部132は、他のDBサーバの稼働状況を監視し、他のDBサーバの稼働状況に応じてDBサーバ100の状態(現用状態、待機状態または停止状態)を決定する。また、クラスタ制御部132は、端末装置31からコマンドを受け付け、コマンドに応じてDBサーバ100の状態を決定する。ただし、スイッチオーバを示すコマンドである切替命令は、端末装置31から切替命令を受信した他のDBサーバ経由で転送されることもある。切替命令を受け付けた場合は、クラスタ制御部132は、切替命令を切替部133に出力する。
切替部133は、クラスタ制御部132から切替命令を取得すると、トランザクションの引き継ぎを制御する。DBサーバ100が現用状態の場合、DBサーバ100はトランザクションを引き渡す切替元になり得る。DBサーバ100が待機状態の場合、DBサーバ100はトランザクションを受け入れる切替先になり得る。DBサーバ100が切替元である場合、切替部133は、移行リスト記憶部124に記憶された移行リスト141を参照して、ログ記憶部122に格納されたトランザクションログを切替先のDBサーバに順次送信していく。DBサーバ100が切替先である場合、切替部133は、切替元から移行リスト141を取得して移行リスト記憶部124に保存し、移行リスト141を参照して、切替元からトランザクションログを順次取得しログ記憶部122に保存する。
メッセージ処理部134は、業務サーバ20,20aから、検索要求・更新要求・コミット要求・ロールバック要求などのメッセージを取得する。DBサーバ100が待機状態である場合、メッセージ処理部134は、取得したメッセージを破棄し、要求されている処理を行わない。DBサーバ100が現用状態である場合、メッセージ処理部134は、取得したメッセージに応じた処理を行い、処理結果をメッセージの送信元に通知する。
ここで、更新要求によって新たなトランザクションが発生する場合、メッセージ処理部134は、そのトランザクションに対応するトランザクションログを生成してログ記憶部122に格納する。トランザクションに属する更新要求に対しては、メッセージ処理部134は、更新内容をデータベース121に反映させずにトランザクションログに記載しておく。その後、コミット要求を取得した場合、メッセージ処理部134は、ログ記憶部122に記憶されたトランザクションログに基づいてデータベース121を更新する。ロールバック要求を取得した場合、メッセージ処理部134は、ログ記憶部122に記憶されたトランザクションログを破棄することで、トランザクションの更新処理を取り消す。
ただし、DBサーバ100がスイッチオーバの切替先である場合、メッセージ処理部134は、業務サーバ20,20aから取得するメッセージを切替元のDBサーバに代わって処理する。移行済のトランザクションに関するメッセージを取得した場合、メッセージ処理部134は、ログ記憶部122に格納された当該トランザクションに対応するトランザクションログを用いてメッセージを処理する。未移行のトランザクションに関するメッセージを取得した場合、メッセージ処理部134は、そのメッセージをメッセージバッファ125に一時的に保存し、当該トランザクションが移行されるのを待つ。
通信制御部135は、ネットワーク30を介した通信を制御する。通信制御部135は、業務サーバ20,20aからメッセージを受信し、受信したメッセージをメッセージ処理部134に渡す。また、通信制御部135は、メッセージ処理部134から処理結果を受け付け、メッセージに対する応答として業務サーバ20,20aに送信する。また、通信制御部135は、端末装置31からコマンドを受信し、受信したコマンドをクラスタ制御部132に渡す。また、通信制御部135は、DBサーバ100a,100bとの間で、トランザクションログ、移行リスト141、コマンドなどを送受信する。
図11は、設定ファイルの例を示す図である。
設定ファイル142は、上記のサーバ情報記憶部123に記憶されている。設定ファイル142には、パラメータと値の組が記載される。設定ファイル142に記載されるパラメータには、ClusterServersおよびStartupTimerが含まれる。
パラメータClusterServersは、クラスタシステムに参加している複数のDBサーバを示す。パラメータClusterServersの値として、DBサーバを識別するサーバIDが列挙される。サーバIDは、優先度の高いサーバの順に列挙しておく。正常に稼働している(生存している)DBサーバのうち、最も優先度が高いものが現用状態として動作する。
パラメータStartupTimerは、生存確認メッセージに対する応答の最大待ち時間を示す。パラメータStartupTimerの値として、待ち時間の閾値である秒数が与えられる。DBMS131が起動すると、DBサーバ100の状態を決定するため、DBサーバ100は他のDBサーバに生存確認メッセージを送信する。DBサーバ100は、生存確認メッセージを送信してからStartupTimer秒経過する前に応答があったDBサーバを、生存していると判定する。一方、DBサーバ100は、生存確認メッセージを送信してからStartupTimer秒経過しても応答がないDBサーバを、生存していないと判定する。
図12は、生存サーバリストの例を示す図である。
生存サーバリスト143は、DBMS131が起動したときに生成され、上記のサーバ情報記憶部123に格納される。生存サーバリスト143は、サーバID、IP(Internet Protocol)アドレス、ポート番号および優先度の項目を含む。
サーバIDの項目には、生存を判断できたDBサーバ(DBサーバ100自身を含む)を識別するサーバIDが登録される。サーバIDは、各DBサーバに対して予め指定されている。例えば、DBサーバ100のサーバIDがSV1、DBサーバ100aのサーバIDがSV2、DBサーバ100bのサーバIDがSV3である。IPアドレスの項目には、生存を判断できたDBサーバが使用しているIPアドレスが登録される。ポート番号の項目には、生存を判断できたDBサーバがDBサーバ間のメッセージ通信に使用しているポート番号が登録される。優先度の項目には、生存を判断できたDBサーバの優先度が登録される。優先度は、設定ファイル142から判断できる。図12の例では、「1」が最も優先度が高く、「2」「3」はそれよりも優先度が低いことを示している。
図13は、メッセージの例を示す図である。
メッセージ144は、業務サーバ20からDBサーバ100,100a,100bに送信され得る。メッセージ144は、クライアントID、クライアントIPアドレス、クライアントポート番号、クライアントプロセスID、クライアントスレッドID、セッションID、要求時刻、要求種別、対象リソースおよび入力データの項目を含む。
クライアントIDの項目には、送信元の業務サーバの識別情報が登録される。クライアントIDは、各業務サーバに対して予め指定されている。クライアントIPアドレスの項目には、送信元の業務サーバが使用しているIPアドレスが登録される。クライアントポート番号の項目には、メッセージ144の送信に用いた送信元ポート番号が登録される。クライアントプロセスIDの項目には、メッセージ144の送信を指示したプロセスを識別するプロセスIDが登録される。クライアントスレッドIDの項目には、メッセージ144の送信を指示したスレッドを識別するスレッドIDが登録される。セッションIDの項目には、メッセージ144の送信に用いるコネクションの識別情報が登録される。
なお、セッションIDは、コネクション確立時に、クライアントID・クライアントIPアドレス・クライアントポート番号・クライアントプロセスID・クライアントスレッドIDから、所定のアルゴリズムに従って生成される。このため、同じスレッドがDBサーバ100,100a,100bそれぞれとコネクションを確立した場合、これら3つのコネクションに付与されるセッションIDは同一となる。
要求時刻の項目には、送信元の業務サーバが付与するタイムスタンプとして、メッセージ144の生成時刻が登録される。要求種別の項目には、処理の種別が登録される。例えば、要求種別として、データ検索を示す「SELECT」、データ挿入を示す「INSERT」、データ書換を示す「UPDATE」、データ消去を示す「DELETE」などが挙げられる。対象リソースの項目には、データベース名・スキーマ名・テーブル名・パーティション名など、処理対象のデータ領域を示す名称が登録される。入力データの項目には、検索条件・カーソル名など、処理対象のデータを特定するための情報が登録される。
DBサーバ100から業務サーバ20に返信される結果通知としてのメッセージも、メッセージ144と同様の項目を含み得る。ただし、結果通知のメッセージは、入力データの項目に代えて、出力データの項目を含む。出力データの項目には、メッセージ144に応じて実行された処理の結果が登録される。検索要求に対する応答の場合、検索されたデータが出力データに含まれる。更新要求に対する応答の場合、更新の成否を示す情報や書換または挿入されたレコードの行を示す情報が出力データに含まれる。
図14は、トランザクションログの例を示す図である。
トランザクションログ151は、トランザクションが発生したときに生成され、上記のログ記憶部122に格納される。トランザクションログ151は、トランザクションID、クライアントID、クライアントIPアドレス、クライアントポート番号、セッションID、開始時刻、トランザクション状態、トランザクション種別、対象リソース、排他競合相手、カーソル状態、カーソル位置および更新データの項目を含む。
トランザクションIDの項目には、新たなトランザクションが発生したときに付与される識別情報が登録される。新たなトランザクションは、例えば、何れのトランザクションにも属さない更新要求をDBサーバ100が処理したときに発生し得る。クライアントID・クライアントIPアドレス・クライアントポート番号・セッションIDの項目には、トランザクションが発生する契機となったメッセージに記載されたものが登録される。
開始時刻の項目には、DBサーバ100が付与するタイムスタンプとして、トランザクションの発生時刻が登録される。トランザクション状態の項目には、トランザクションが次の処理要求などを待っているとき、「CONTINUE」が設定される。トランザクション種別の項目には、読み込み専用(ReadOnly)または読み書き可能(ReadWrite)が設定される。トランザクション種別は、トランザクション開始時に業務サーバ20,20aから指定されることがある。対象リソースの項目には、データベース名・スキーマ名・テーブル名・パーティション名などのデータ領域を示す名称が登録される。
排他競合相手の項目には、トランザクションが他のトランザクションと同じリソースにアクセスしようとし、そのリソースの排他ロックが解放されるのを待っているとき、競合する他のトランザクションを特定する情報が登録される。例えば、排他競合相手の情報には、セッションIDとクライアントIDが含まれる。カーソル状態の項目には、処理対象のデータを特定するためにカーソルが使用されているとき、「OPEN」が設定される。カーソル位置の項目には、テーブル内のカーソルが指している行の番号が登録される。
更新データの項目には、データベース121に未反映の更新内容が登録される。更新データには、例えば、テーブル名・更新する列(カラム)の名称・更新前のデータ・更新後のデータが含まれる。DBサーバ100は、更新要求を受信すると、更新対象の取得などデータベース121を更新する直前までの処理を行い、データベース121を更新せずに更新データをトランザクションログ151に登録しておく。その後、コミット要求を受信すると、DBサーバ100は、更新データに従ってデータベース121を更新する。
図15は、移行リストの例を示す図である。
移行リスト141は、上記の移行リスト記憶部124に記憶されている。移行リスト141は、トランザクションID、セッションID、クライアントID、IPアドレス、ポート番号および移行状態の項目を含む。トランザクションIDの項目には、トランザクション発生時に生成された識別情報が登録される。セッションID・クライアントID・IPアドレス・ポート番号の項目には、トランザクションログと同様の情報が登録される。移行状態の項目には、トランザクションが移行されたか否かを示す値として、「0」(未移行)と「1」(移行中)と「2」(移行済)の何れかが登録される。
新たに発生したトランザクションの移行状態の初期値は「0」(未移行)である。DBサーバ100がスイッチオーバの切替元である場合、トランザクションログを切替先のDBサーバに送信すると、そのトランザクションログに対応するトランザクションの移行状態が「1」(移行中)になる。その後、切替先のDBサーバから応答があると、移行状態が「2」(移行済)になる。DBサーバ100がスイッチオーバの切替先である場合、トランザクションログを切替元のDBサーバから受信すると、そのトランザクションログに対応するトランザクションの移行状態が「2」(移行済)になる。
図16は、DBサーバ起動の手順例を示すフローチャートである。
(S100)クラスタ制御部132は、DBMS131が起動すると、DBサーバ100の初期状態を待機状態に設定する。(S101)クラスタ制御部132は、サーバ情報記憶部123に記憶された設定ファイル142のパラメータClusterServersを参照し、クラスタシステムに参加する他のDBサーバに生存確認メッセージを送信する。このとき、クラスタ制御部132は、生存確認メッセージの送信時刻を保持しておく。
(S102)クラスタ制御部132は、生存確認メッセージを送信してからの経過時間が、設定ファイル142のパラメータStartupTimerの値(閾値)を超えたか判断する。経過時間が閾値を超えた場合はステップS107に処理が進み、閾値を超えていない場合はステップS103に処理が進む。(S103)クラスタ制御部132は、生存確認メッセージの送信先の何れかのDBサーバから、応答メッセージを受信したか確認する。応答メッセージを受信した場合はステップS105に処理が進み、受信していない場合はステップS104に処理が進む。(S104)クラスタ制御部132は、一定時間(例えば、100ms。または、設定ファイル142にパラメータを追加して、その値を使用してもよい)待機する。その後、処理がステップS102に進む。
(S105)クラスタ制御部132は、応答メッセージの送信元のDBサーバを生存サーバリスト143に登録する。なお、DBサーバ100自身も生存サーバリスト143に登録される。(S106)クラスタ制御部132は、生存確認メッセージの送信先のDBサーバ全てから応答メッセージを受信したか判断する。全てのDBサーバから応答メッセージを受信した場合はステップS107に処理が進み、応答メッセージを受信していないDBサーバがある場合はステップS102に処理が進む。
(S107)クラスタ制御部132は、生存サーバリスト143に登録された生存している(DBMSが正常に稼働している)DBサーバの中で、DBサーバ100の優先度が最も高いか判断する。DBサーバ100の優先度が最も高い場合はステップS108に処理が進み、それ以外の場合はステップS109に処理が進む。(S108)クラスタ制御部132は、DBサーバ100の状態を待機状態から現用状態に遷移させる。
図17は、DBサーバ起動の手順例を示すフローチャート(続き)である。
(S109)クラスタ制御部132は、生存サーバリスト143に登録された生存サーバの数を保持する。また、クラスタ制御部132は、カウンタn=1に初期化する。(S110)クラスタ制御部132は、生存サーバリスト143に登録されたn番目のDBサーバに対する被監視スレッドを起動する。被監視スレッドの処理は後述する。(S111)クラスタ制御部132は、生存サーバリスト143に登録されたn番目のDBサーバに対する監視スレッドを起動する。監視スレッドの処理は後述する。
(S112)クラスタ制御部132は、カウンタnをインクリメント(1だけ加算)する。(S113)クラスタ制御部132は、カウンタnの値がステップS109で保持した生存サーバ数より大きいか判断する。条件を満たす場合、生存サーバリスト143に登録された全てのDBサーバを選択したため、ステップS114に処理が進む。条件を満たさない場合、生存している未選択のDBサーバがあるため、ステップS110に処理が進む。(S114)クラスタ制御部132は、コマンド受信スレッドを起動する。コマンド受信スレッドの処理は後述する。(S115)クラスタ制御部132は、メッセージ受信スレッドを起動する。メッセージ受信スレッドの処理は後述する。
なお、上記の被監視スレッド・監視スレッド・コマンド受信スレッド・メッセージ受信スレッドは、並行して実行することができる。被監視スレッド・監視スレッド・コマンド受信スレッド・メッセージ受信スレッドは、任意の順序で起動してよい。
図18は、生存被監視の手順例を示すフローチャートである。
この生存被監視の処理は、上記の被監視スレッドの中で実行される。
(S120)クラスタ制御部132は、DBサーバ100の停止フラグがONであるか判断する。停止フラグは、DBMS131が停止しようとしているか否かを示すフラグである。DBMS131が起動したときの停止フラグの初期値はOFFであり、後述するタイミングで停止フラグがOFFからONに変化する。停止フラグがONの場合、他のDBサーバがDBサーバ100の生存を判断しなくてよいため、生存被監視の処理が終了する。停止フラグがOFFの場合、ステップS121に処理が進む。
(S121)クラスタ制御部132は、上記のステップS110で指定された相手のDBサーバが現用状態または待機状態に安定しているか判断する。現用状態と待機状態以外の状態としては、例えば、DBMSが停止している停止状態が挙げられる。条件を満たす場合はステップS122に処理が進み、条件を満たさない場合はステップS123に処理が進む。(S122)クラスタ制御部132は、指定された相手のDBサーバに対して生存確認メッセージを送信する。生存確認メッセージは、例えば、設定ファイル142に記載されたサーバIDに基づいて生成される。(S123)クラスタ制御部132は、一定時間(例えば、1000ms。または、設定ファイル142にパラメータを追加して、その値を使用してもよい)待機する。その後、ステップS120に処理が進む。
図19は、生存監視の手順例を示すフローチャートである。
この生存監視の処理は、上記の監視スレッドの中で実行される。
(S130)クラスタ制御部132は、無反応カウンタ=0に初期化する。(S131)クラスタ制御部132は、DBサーバ100の停止フラグがONであるか判断する。停止フラグがONの場合、DBサーバ100が他のDBサーバの生存を判断しなくてよいため、生存監視の処理が終了する。停止フラグがOFFの場合、ステップS132に処理が進む。(S132)クラスタ制御部132は、上記のステップS111で指定された監視対象のDBサーバからの生存確認メッセージの受信状況を参照する。
(S133)クラスタ制御部132は、監視対象のDBサーバから生存確認メッセージを受信したか判断する。受信した場合はステップS130に処理が進み、受信していない場合はステップS134に処理が進む。(S134)クラスタ制御部132は、無反応カウンタが閾値を超えたか、すなわち、連続して生存確認メッセージを受信できなかった回数が閾値を超えたか判断する。閾値は、例えば、3回とする。条件を満たす場合はステップS137に処理が進み、条件を満たさない場合はステップS135に処理が進む。
(S135)クラスタ制御部132は、無反応カウンタをインクリメント(1だけ加算)する。(S136)クラスタ制御部132は、一定時間(例えば、1000ms。または、設定ファイル142にパラメータを追加して、その値を使用してもよい)待機し、次に生存確認メッセージが受信されると期待されるタイミングを待つ。その後、ステップS131に処理が進む。(S137)クラスタ制御部132は、上記の監視対象のDBサーバのDBMSが正常に動作していないと判断し、後述するクラスタ縮退の処理によって当該DBサーバをクラスタシステムから外す。
図20は、コマンド受信の手順例を示すフローチャートである。
このコマンド受信の処理は、上記のコマンド受信スレッドの中で実行される。
(S140)クラスタ制御部132は、コマンドの受信状況を参照する。端末装置31から受信し得るコマンドとしては、縮退命令・組込命令・切替命令・停止命令などが挙げられる。なお、切替命令は、他のDBサーバから受信することもある。
(S141)クラスタ制御部132は、縮退命令を受信したか判断する。縮退命令は、クラスタシステムに属するDBサーバを減らすことを指示するコマンドであり、除外するDBサーバを指定している。縮退命令を受信した場合はステップS142に処理が進み、縮退命令を受信していない場合はステップS143に処理が進む。(S142)クラスタ制御部132は、後述するクラスタ縮退の処理によって、指定されたDBサーバをクラスタシステムから外す。その後、ステップS140に処理が進む。
(S143)クラスタ制御部132は、組込命令を受信したか判断する。組込命令は、クラスタシステムに属するDBサーバを増やすことを指示するコマンドであり、組み込むDBサーバを指定している。組込命令を受信した場合はステップS144に処理が進み、組込命令を受信していない場合はステップS145に処理が進む。(S144)クラスタ制御部132は、後述するサーバ組込の処理によって、指定されたDBサーバをクラスタシステムに組み込む。その後、ステップS140に処理が進む。
(S145)クラスタ制御部132は、切替命令を受信したか判断する。切替命令は、現用状態のDBサーバを切り替えるスイッチオーバを指示するコマンドである。切替命令は、端末装置31から切替元のDBサーバに送信され、切替元のDBサーバから切替先のDBサーバに転送される。切替命令を受信した場合はステップS146に処理が進み、切替命令を受信していない場合はステップS147に処理が進む。(S146)切替部133は、後述するスイッチオーバの処理を行う。その後、ステップS140に処理が進む。
(S147)クラスタ制御部132は、停止命令を受信したか判断する。停止命令は、DBMSの停止を指示するコマンドである。停止命令を受信した場合はステップS148に処理が進み、停止命令を受信していない場合はステップS140に処理が進む。(S148)クラスタ制御部132は、停止フラグをONに設定する。(S149)クラスタ制御部132は、DBMS131を停止させ、DBサーバ100を停止状態にする。
なお、上記の縮退命令・組込命令・切替命令・停止命令を判定する順序は一例であり、任意の順序で判定してもよいし、並行して判定するようにしてもよい。
図21は、クラスタ縮退の手順例を示すフローチャートである。
このクラスタ縮退の処理は、上記のステップS137,S142および後述するステップS210においてそれぞれ実行される。
(S150)クラスタ制御部132は、サーバ情報記憶部123に記憶された生存サーバリスト143から、指定されたDBサーバの情報を削除する。(S151)クラスタ制御部132は、生存サーバリスト143に登録された生存サーバ(今回外すものを除く)の数を保持する。また、クラスタ制御部132は、カウンタn=1に初期化する。(S152)クラスタ制御部132は、生存サーバリスト143に登録されたn番目のDBサーバに対して縮退メッセージを送信する。縮退メッセージは、クラスタシステムから外すDBサーバを示す情報(例えば、当該DBサーバのサーバID)を含む。
(S153)クラスタ制御部132は、カウンタnをインクリメントする。(S154)クラスタ制御部132は、カウンタnの値がステップS151で保持した生存サーバ数より大きいか判断する。条件を満たす場合はステップS155に処理が進み、条件を満たさない場合はステップS152に処理が進む。(S155)クラスタ制御部132は、指定されたDBサーバを外した後の生存しているDBサーバの中で、DBサーバ100の優先度が最も高いか判断する。DBサーバ100の優先度が最も高い場合はステップS156に処理が進み、それ以外の場合はクラスタ縮退の処理が終了する。
(S156)クラスタ制御部132は、DBサーバ100の現在の状態が現用状態であるか判断する。現用状態である場合はクラスタ縮退の処理が終了し、それ以外の場合はステップS157に処理が進む。(S157)クラスタ制御部132は、DBサーバ100の状態を現用状態に遷移させる。これにより、DBサーバ100は、外したDBサーバに代わって、トランザクションを実行し業務サーバ20,20aに応答することになる。
図22は、サーバ組込の手順例を示すフローチャートである。
このサーバ組込の処理は、上記のステップS144において実行される。
(S160)クラスタ制御部132は、生存サーバリスト143に登録された生存サーバの数を保持する。また、クラスタ制御部132は、カウンタn=1に初期化する。(S161)クラスタ制御部132は、生存サーバリスト143に登録されたn番目のDBサーバに対して組込メッセージを送信する。組込メッセージは、クラスタシステムに組み込むDBサーバを示す情報(例えば、当該DBサーバのサーバID)を含む。(S162)クラスタ制御部132は、カウンタnをインクリメントする。
(S163)クラスタ制御部132は、カウンタnの値がステップS160で保持した生存サーバ数より大きいか判断する。条件を満たす場合はステップS164に処理が進み、条件を満たさない場合はステップS161に処理が進む。(S164)クラスタ制御部132は、生存サーバリスト143に新たなDBサーバを登録する。(S165)クラスタ制御部132は、新たなDBサーバを加えた後の生存しているDBサーバの中で、DBサーバ100の優先度が最も高いか判断する。DBサーバ100の優先度が最も高い場合はステップS166に処理が進み、それ以外の場合はステップS168に処理が進む。
(S166)クラスタ制御部132は、DBサーバ100の現在の状態が現用状態であるか判断する。現用状態である場合はサーバ組込の処理が終了し、現用状態でない場合はステップS167に処理が進む。(S167)クラスタ制御部132は、DBサーバの状態を現用状態へ遷移させる。そして、サーバ組込の処理が終了する。
(S168)クラスタ制御部132は、DBサーバ100の現在の状態が現用状態であるか判断する。現用状態である場合はステップS169に処理が進み、現用状態でない場合はサーバ組込の処理が終了する。(S169)クラスタ制御部132は、DBサーバ100の状態を現用状態から待機状態に遷移させる。これにより、DBサーバ100に代わって、追加されたDBサーバがトランザクションを実行し業務サーバ20,20aに応答することになる。なお、組み込むDBサーバの優先度は、例えば、端末装置31から指定される。組込命令に優先度を示す情報が含まれていてもよい。
図23は、スイッチオーバの手順例を示すフローチャートである。
このスイッチオーバの処理は、切替命令を受信したときに実行される。
(S200)切替部133は、DBサーバ100の切替中フラグをONに設定する。切替中フラグは、DBサーバ100が、切替元または切替先としてスイッチオーバを実行中であるか否かを示すフラグである。DBサーバ100が現用状態で切替フラグがONであることは、DBサーバ100から他のDBサーバにトランザクションを移行し、DBサーバ100をクラスタシステムから切り離す途中であることを示す。DBサーバ100が待機状態で切替フラグがONであることは、他のDBサーバからDBサーバ100にトランザクションを移行し、DBサーバ100を現用状態にする途中であることを示す。
(S201)切替部133は、DBサーバ100がスイッチオーバの切替先であるか、すなわち、DBサーバ100が待機状態であるか判断する。切替先である場合はステップS202に処理が進み、切替元である場合はステップS212に処理が進む。
(S202)切替部133は、切替元のDBサーバから受信した切替命令に付加されている移行リスト141を取得し、移行リスト記憶部124に格納する。(S203)切替部133は、切替元のDBサーバに対して、移行リスト141を受信したことを示す応答メッセージを返信する。このとき、切替部133は、応答メッセージの返信時刻を保持しておく。(S204)切替部133は、切替元のDBサーバからトランザクションログを受信したか判断する。トランザクションログを受信した場合はステップS205に処理が進み、受信していない場合はステップS208に処理が進む。なお、切替元のDBサーバから受信されたトランザクションログは、ログ記憶部122に格納される。
(S205)切替部133は、切替元のDBサーバに対して、トランザクションログを受信したことを示す応答メッセージを返信する。(S206)切替部133は、受信したトランザクションログに対応するエントリを移行リスト141から検索し、検索したエントリの移行状態を「2」(移行済)に更新する。受信したトランザクションログに対応するエントリは、例えば、トランザクションIDを用いて検索できる。(S207)切替部133は、移行リスト141に移行状態が「0」(未移行)のエントリが存在するか、すなわち、未移行のトランザクションがあるか判断する。未移行のトランザクションがある場合はステップS204に処理が進み、ない場合はステップS210に処理が進む。
(S208)切替部133は、ステップS203で応答メッセージを返信してからの経過時間が閾値を超えたか判断する。この閾値は、設定ファイル142にパラメータを追加して、その値を使用してもよい。条件を満たす場合はステップS210に処理が進み、条件を満たさない場合はステップS209に処理が進む。(S209)切替部133は、一定時間(例えば、10ms。または、設定ファイル142にパラメータを追加して、その値を使用してもよい)待機する。その後、ステップS204に処理が進む。
(S210)クラスタ制御部132は、クラスタシステムから外すDBサーバとして切替元のDBサーバを指定し、図21に示したクラスタ縮退の処理を実行する。これにより、業務サーバ20,20aと切替元のDBサーバとの間のコネクションが切断され、そのDBMSが停止する。(S211)クラスタ制御部132は、移行リスト141の全てのエントリの移行状態を「0」(未移行)に更新する。また、クラスタ制御部132は、DBサーバ100の切替中フラグをONからOFFに戻す。
図24は、スイッチオーバの手順例を示すフローチャート(続き)である。
(S212)切替部133は、サーバ情報記憶部123に記憶された生存サーバリスト143に登録されたDBサーバの中から、優先度が2番目に高い待機状態のDBサーバを検索し、検索したDBサーバを切替先として特定する。(S213)切替部133は、端末装置31から受信された切替命令に、移行リスト記憶部124に記憶された移行リスト141を付加し、ステップS212で特定した切替先のDBサーバに送信する。このとき、切替部133は、切替命令の送信時刻を保持しておく。
(S214)切替部133は、切替先のDBサーバから切替命令に対する応答メッセージを受信したか判断する。応答メッセージを受信した場合はステップS217に処理が進み、受信していない場合はステップS215に処理が進む。(S215)切替部133は、切替命令を送信してからの経過時間が閾値を超えたか判断する。この閾値は、上記のステップS208の値と同じでもよい。条件を満たす場合はステップS210に処理が進み、条件を満たさない場合はステップS216に処理が進む。(S216)切替部133は、一定時間(例えば、10ms。または、設定ファイル142にパラメータを追加して、その値を使用してもよい)待機する。その後、処理がステップS214に進む。
(S217)切替部133は、移行状態が「0」(未移行)である移行リスト141のエントリの中で最も順位の高いものを選択し、選択したエントリの移行状態を「1」(移行中)に更新する。順位の高いエントリは、移行リスト141の中で前方に登録されているものである。原則として、早く発生したトランザクションに対応するエントリほど、移行リスト141の前方に存在する。ただし、後述するように、スイッチオーバ中にエントリの順序が入れ替えられることがある。また、切替部133は、明示的に順序が繰り上げられたエントリを除き、任意の順序でエントリを選択するようにしてもよい。
(S218)切替部133は、ステップS217で選択したエントリに対応するトランザクションログをログ記憶部122から取得し、切替先のDBサーバに送信する。エントリに対応するトランザクションログは、例えば、トランザクションIDを用いて検索できる。このとき、切替部133は、トランザクションログの送信時刻を保持しておく。(S219)切替部133は、切替先のDBサーバから、トランザクションログに対する応答メッセージを受信したか判断する。応答メッセージを受信した場合はステップS222に処理が進み、受信していない場合はステップS220に処理が進む。
(S220)切替部133は、トランザクションログを送信してからの経過時間が閾値を超えたか判断する。この閾値は、上記のステップS208またはステップS215の値と同じでもよい。条件を満たす場合はステップS210に処理が進み、条件を満たさない場合はステップS221に処理が進む。(S221)切替部133は、一定時間(例えば、10ms。または、設定ファイル142にパラメータを追加して、その値を使用してもよい)待機する。その後、ステップS219に処理が進む。
(S222)切替部133は、ステップS217で選択した移行リスト141のエントリの移行状態を「2」(移行済)に更新する。(S223)切替部133は、移行リスト141に移行状態が「0」(未移行)のエントリが存在するか、すなわち、未移行のトランザクションがあるか判断する。未移行のトランザクションがある場合はステップS217に処理が進み、ない場合はステップS210に処理が進む。
図25は、メッセージ処理の手順例を示すフローチャート(第1の図)である。
このメッセージ処理は、上記のメッセージ受信スレッドの中で実行される。
(S230)メッセージ処理部134は、業務サーバ20,20aからのメッセージの受信状況を参照する。(S231)メッセージ処理部134は、何れかの業務サーバからメッセージを受信したか判断する。業務サーバ20,20aから受信し得るメッセージには、コネクション確立を要求するコネクション要求、検索または更新を示す処理要求、コミット要求およびロールバック要求が含まれる。メッセージを受信した場合はステップS232に処理が進み、受信していない場合はステップS239に処理が進む。
(S232)メッセージ処理部134は、DBサーバ100が現用状態であるか判断する。現用状態である場合はステップS233に処理が進み、現用状態でない場合はステップS254に処理が進む。(S233)メッセージ処理部134は、DBサーバ100の切替中フラグがONであるか判断する。切替中フラグがONである場合はステップS236に処理が進み、切替中フラグがOFFである場合はステップS234に処理が進む。
(S234)メッセージ処理部134は、DBサーバ100とメッセージの送信元の業務サーバとの間にコネクションが確立済であるか判断する。コネクションが確立されていない場合、受信したメッセージはコネクション要求である可能性がある。コネクションを確立済である場合はステップS241に処理が進み、コネクションが確立されていない場合はステップS235に処理が進む。(S235)メッセージ処理部134は、DBサーバ100と送信元の業務サーバとの間にコネクションを確立する。このとき、メッセージ処理部134は、コネクションに、クライアントID・クライアントIPアドレス・クライアントポート番号・クライアントプロセスID・クライアントスレッドIDから算出されるセッションIDを付与する。その後、ステップS241に処理が進む。
(S236)メッセージ処理部134は、DBサーバ100と送信元の業務サーバとの間にコネクションが確立済であるか判断する。コネクションを確立済である場合はステップS237に処理が進み、コネクションが確立されていない場合はステップS238に処理が進む。(S237)メッセージ処理部134は、メッセージがトランザクションIDを含む場合、移行リスト141から当該トランザクションIDを含むエントリを検索し、検索したエントリの順位を移行リスト141の中で繰り上げる。例えば、検索したエントリを、移行状態が「0」(未移行)のエントリのうちの最も前方に移動する。すなわち、メッセージ処理部134は、メッセージが属するトランザクションの移行順位を繰り上げる。(S238)メッセージ処理部134は、受信したメッセージを、当該メッセージが要求する処理を実行せずに破棄する。その後、ステップS230に処理が進む。
(S239)メッセージ処理部134は、DBサーバ100の停止フラグがONであるか判断する。停止フラグがONの場合はメッセージ処理が終了し、停止フラグがOFFの場合はステップS240に処理が進む。(S240)メッセージ処理部134は、一定時間(例えば、10ms。または、設定ファイル142にパラメータを追加して、その値を使用してもよい)待機する。その後、ステップS230に処理が進む。
図26は、メッセージ処理の手順例を示すフローチャート(第2の図)である。
(S241)メッセージ処理部134は、受信したメッセージがコミット要求であるか判断する。コミット要求の場合はステップS242に処理が進み、コミット要求でない場合はステップS244に処理が進む。(S242)メッセージ処理部134は、コミット要求が指定するトランザクションに対応するトランザクションログをログ記憶部122から取得し、当該トランザクションログに含まれる更新データをデータベース121に反映させる。データベース121は、当該更新データに従って更新される。(S243)メッセージ処理部134は、生存サーバリスト143を参照して、待機状態のDBサーバ(例えば、DBサーバ100a,100b)を特定し、全ての待機状態のDBサーバに上記のトランザクションログを送信する。その後、ステップS252に処理が進む。
(S244)メッセージ処理部134は、受信したメッセージがロールバック要求であるか判断する。ロールバック要求の場合はステップS252に処理が進み、ロールバック要求でない場合はステップS245に処理が進む。後者の場合、主に、メッセージは検索要求や更新要求などの処理要求であることが想定される。(S245)メッセージ処理部134は、受信したメッセージに対応するトランザクションが存在するか判断する。例えば、メッセージがトランザクションIDを含み、当該トランザクションIDが移行リスト141に登録されている場合、トランザクションが存在すると判断される。存在する場合はステップS246に処理が進み、存在しない場合はステップS248に処理が進む。
(S246)メッセージ処理部134は、メッセージが指定するトランザクションに対応するトランザクションログをログ記憶部122から取得し、当該トランザクションログとメッセージに含まれる入力データとに応じてデータ処理を仮実行する。メッセージが検索要求である場合、メッセージ処理部134は、データベース121からのデータの検索を最後まで実行してよい。メッセージが更新要求である場合、メッセージ処理部134は、データベース121を更新せずに更新内容をトランザクションログに保存しておく。(S247)メッセージ処理部134は、データ処理が成功したか判断する。成功した場合はステップS253に処理が進み、失敗した場合はステップS252に処理が進む。
(S248)メッセージ処理部134は、メッセージに含まれる入力データに応じてデータ処理を仮実行する。(S249)メッセージ処理部134は、データ処理が成功したか判断する。成功した場合はステップS250に処理が進み、失敗した場合はステップS253に処理が進む。(S250)メッセージ処理部134は、データ処理によってトランザクションが発生するか判断する。データベース121を更新する直前までの更新処理が成功した場合は、トランザクションが発生し得る。参照処理でもトランザクション処理が発生し得るが、データ更新を伴わない。トランザクションが発生する場合はステップS251に処理が進み、発生しない場合はステップS253に処理が進む。
(S251)メッセージ処理部134は、新たなトランザクションIDやデータベース121に未反映の更新内容などを含むトランザクションログを生成し、ログ記憶部122に格納する。また、メッセージ処理部134は、新たなトランザクションIDなどを含むエントリを移行リスト141に登録する。その後、ステップS253に処理が進む。
(S252)メッセージ処理部134は、ステップS242のトランザクションログをログ記憶部122から削除し、移行リスト141から当該トランザクションログに対応するエントリを削除する。(S253)メッセージ処理部134は、処理結果をメッセージの送信元の業務サーバに通知する。検索要求に対する結果通知には、検索されたデータが含まれ得る。更新要求に対する結果通知には、更新の成否を示す情報が含まれ得る。コミット要求やロールバック要求に対する結果通知には、コミットやロールバックの成否を示す情報が含まれる。その後、ステップS230に処理が進む。
図27は、メッセージ処理の手順例を示すフローチャート(第3の図)である。
(S254)メッセージ処理部134は、DBサーバ100の切替中フラグがONであるか判断する。切替中フラグがONの場合はステップS255に処理が進み、切替中フラグがOFFの場合はステップS262に処理が進む。(S255)メッセージ処理部134は、受信したメッセージがトランザクションIDを含む場合、移行リスト141から当該トランザクションIDを含むエントリを検索する。すなわち、メッセージ処理部134は、メッセージが指定するトランザクションを検索する。(S256)メッセージ処理部134は、メッセージがトランザクションを指定しており、かつ、指定されたトランザクションが移行リスト141に登録されているか判断する。条件を満たす場合はステップS257に処理が進み、条件を満たさない場合はステップS261に処理が進む。
(S257)メッセージ処理部134は、ステップS255で検索されたエントリの移行状態が「2」(移行済)であるか判断する。トランザクションが移行済の場合はステップS241に処理が進み、移行済でない場合(未移行の場合)はステップS258に処理が進む。(S258)スイッチオーバにおける切替元のDBサーバが異常なく生存しているか判断する。異常なく生存している場合はステップS259に処理が進み、それ以外の場合はステップS260に処理が進む。(S259)メッセージ処理部134は、受信したメッセージをメッセージバッファ125に保持させておき、一定時間(例えば、10ms。または、設定ファイル142にパラメータを追加して、その値を使用してもよい)待機する。その後、ステップS257に処理が進む。
(S260)メッセージ処理部134は、メッセージの送信元の業務サーバに対し、エラーを示す処理結果を通知する。その後、ステップS230に処理が進む。(S261)メッセージ処理部134は、DBサーバ100とメッセージの送信元の業務サーバとの間にコネクションを確立する。その後、ステップS241に処理が進む。(S262)メッセージ処理部134は、受信したメッセージが要求する処理を実行せずに当該メッセージを破棄する。その後、ステップS230に処理が進む。
次に、他のデータベースシステムによるトランザクション処理の例を挙げ、前述のDBサーバ100,100a,100bによるトランザクション処理と比較する。
図28は、第1の他のトランザクション処理例を示すシーケンス図である。
第1の他のトランザクション処理例では、データベースシステムは、業務サーバ41と現用状態のDBサーバ42と待機状態のDBサーバ43を含む。
(S300)業務サーバ41は、処理要求をDBサーバ42に送信する。(S301)DBサーバ42は、更新内容をデータベースに反映させずトランザクションログに記載しておく。(S302)DBサーバ42は、処理結果を業務サーバ41に通知する。
(S303)業務サーバ41は、コミット要求をDBサーバ42に送信する。(S304)DBサーバ42は、トランザクションログを用いてDBサーバ42のデータベースを更新する。(S305)DBサーバ42は、トランザクションログをDBサーバ43に送信する。(S306)DBサーバ43は、トランザクションログを用いてDBサーバ43のデータベースを更新する。(S307)DBサーバ43は、処理結果をDBサーバ42に通知する。(S308)DBサーバ42は、処理結果を業務サーバ41に通知する。
(S309)業務サーバ41は、処理要求をDBサーバ42に送信する。(S310)DBサーバ42は、更新内容をトランザクションログに記載しておく。(S311)DBサーバ42は、処理結果を業務サーバ41に通知する。(S312)DBサーバ42,43に切替命令が入力される。(S313)DBサーバ42は、実行中のトランザクションをロールバックし、保持しているトランザクションログを破棄する。これにより、DBサーバ42は停止可能になり、DBサーバ43は待機状態から現用状態に遷移する。
(S314)業務サーバ41は、切替を検知すると、実行中であったトランザクションを最初から実行し直すため、ステップS309と同じ処理を示す処理要求をDBサーバ43に送信する。(S315)DBサーバ43は、更新内容をトランザクションログに記載しておく。(S316)DBサーバ43は、処理結果を業務サーバ41に通知する。(S317)業務サーバ41は、コミット要求をDBサーバ43に送信する。(S318)DBサーバ43は、トランザクションログを用いてDBサーバ43のデータベースを更新する。(S319)DBサーバ43は、処理結果を業務サーバ41に通知する。
このように、第1の他のトランザクション処理例では、DBサーバ42でトランザクションがコミットされたときに、DBサーバ43のデータベースがDBサーバ42と同期される。DBサーバ43は、DBサーバ42で実行中のトランザクションについてのトランザクションログを保持しない。また、DBサーバ42からDBサーバ43へのスイッチオーバが指示されると、データベースシステムからDBサーバ42が即時に切り離され、DBサーバ42で実行中のトランザクションはDBサーバ43に引き継がれない。
しかし、第1の他のトランザクション処理例では、スイッチオーバ直後に、ロールバックされたトランザクションを最初から実行し直すための処理要求がDBサーバ43に集中することになる。このため、スイッチオーバ直後は、切替先のDBサーバ43の負荷が高くなり、処理要求に対する応答が一時的に遅くなるおそれがある。これに対し、前述のDBサーバ100,100a,100bによるトランザクション処理によれば、スイッチオーバ時にトランザクションが引き継がれ、切替先のDBサーバの負荷を低減できる。よって、業務サーバ20,20aを停止させなくても、スイッチオーバを円滑に行える。
図29は、第2の他のトランザクション処理例を示すシーケンス図である。
第2の他のトランザクション処理例では、データベースシステムは、業務サーバ51と現用状態のDBサーバ52と待機状態のDBサーバ53を含む。
(S320)業務サーバ51は、処理要求をDBサーバ52に送信する。(S321)DBサーバ52は、更新内容をデータベースに反映させずトランザクションログに記載しておく。(S322)DBサーバ52は、トランザクションログの差分をDBサーバ53に通知する。(S323)DBサーバ53は、通知された差分に基づいてトランザクションログを生成または更新する。(S324)DBサーバ53は、処理結果をDBサーバ52に通知する。(S325)DBサーバ52は、処理結果を業務サーバ51に通知する。
(S326)業務サーバ51は、コミット要求をDBサーバ52に送信する。(S327)DBサーバ52は、トランザクションログを用いてDBサーバ52のデータベースを更新する。(S328)DBサーバ52は、コミット要求をDBサーバ53に転送する。(S329)DBサーバ53は、DBサーバ53が保持するトランザクションログを用いてデータベースを更新する。(S330)DBサーバ53は、処理結果をDBサーバ52に通知する。(S331)DBサーバ52は、処理結果を業務サーバ51に通知する。
(S332)業務サーバ51は、処理要求をDBサーバ52に送信する。(S333)DBサーバ52は、更新内容をトランザクションログに記載しておく。(S334)DBサーバ52は、トランザクションログの差分をDBサーバ53に通知する。(S335)DBサーバ53は、通知された差分に基づいてトランザクションログを生成または更新する。(S336)DBサーバ53は、処理結果をDBサーバ52に通知する。(S337)DBサーバ52は、処理結果を業務サーバ51に通知する。
(S338)DBサーバ52,53に切替命令が入力される。(S339)DBサーバ52は、実行中のトランザクションをロールバックし、保持しているトランザクションログを破棄する。これにより、DBサーバ52は停止可能になり、DBサーバ53は待機状態から現用状態に遷移する。(S340)業務サーバ51は、切替を検知すると、実行中のトランザクションの状態がDBサーバ52,53間で同期されていたため、トランザクションの続きとしてコミット要求をDBサーバ53に送信する。(S341)DBサーバ53は、トランザクションログを用いてDBサーバ53のデータベースを更新する。(S342)DBサーバ53は、処理結果を業務サーバ51に通知する。
このように、第2の他のトランザクション処理例では、DBサーバ52でトランザクションログが更新されると、これと同期してDBサーバ53でもトランザクションログが更新される。よって、データベースシステムからDBサーバ52を即時に切り離しても、切替先のDBサーバ53がトランザクションを引き継ぐことができる。
しかし、第2の他のトランザクション処理例では、DBサーバ52,53間でトランザクションログを継続的に同期しているため、待機状態であってもDBサーバ53の負荷が高くなるおそれがある。このため、DBサーバ53をデータ検索に利用するなどDBサーバ53の計算リソースをトランザクション以外の処理に活用することが難しくなる。また、DBサーバ52,53間で継続的に通信が発生するため、業務サーバ51への応答が遅くなるおそれがある。これに対し、前述のDBサーバ100,100a,100bによるトランザクション処理によれば、通常時では、待機状態のDBサーバは現用状態のDBサーバで実行中のトランザクションについてトランザクションログを保持しない。よって、待機状態のDBサーバの負荷を低減でき、また、応答速度が向上する。
図30は、第3の他のトランザクション処理例を示すシーケンス図である。
第3の他のトランザクション処理例では、データベースシステムは、業務サーバ61と現用状態のDBサーバ62と待機状態のDBサーバ63を含む。
(S350)業務サーバ61は、処理要求をDBサーバ62,63の両方に送信する。(S351)DBサーバ62は、更新内容をデータベースに反映させずトランザクションログに記載しておく。(S352)DBサーバ63は、DBサーバ62と同様に、トランザクションログの生成または更新を行う。(S353)DBサーバ62は、処理結果を業務サーバ61に通知する。DBサーバ63は、処理結果を業務サーバ61に通知する。
(S354)業務サーバ61は、コミット要求をDBサーバ62,63の両方に送信する。(S355)DBサーバ62は、DBサーバ62が保持するトランザクションを用いてDBサーバ62のデータベースを更新する。(S356)DBサーバ63は、DBサーバ62とは独立に、DBサーバ63が保持するトランザクションを用いてDBサーバ63のデータベースを更新する。(S357)DBサーバ62は、処理結果を業務サーバ61に通知する。DBサーバ63は、処理結果を業務サーバ61に通知する。
(S358)業務サーバ61は、処理要求をDBサーバ62,63の両方に送信する。(S359)DBサーバ62は、更新内容をトランザクションログに記載しておく。(S360)DBサーバ63は、DBサーバ62と同様に、トランザクションログの生成または更新を行う。(S361)DBサーバ62は、処理結果を業務サーバ61に通知する。DBサーバ63は、処理結果を業務サーバ61に通知する。
(S362)DBサーバ62,63に切替命令が入力される。(S363)DBサーバ62は、実行中のトランザクションをロールバックし、保持しているトランザクションログを破棄する。これにより、DBサーバ62は停止可能になり、DBサーバ63は待機状態から現用状態に遷移する。(S364)業務サーバ61は、切替を検知すると、DBサーバ62,63それぞれで独立にトランザクションが実行されていたため、トランザクションの続きとしてコミット要求をDBサーバ63に送信する。(S365)DBサーバ63は、トランザクションログを用いてDBサーバ63のデータベースを更新する。(S366)DBサーバ63は、処理結果を業務サーバ61に通知する。
このように、第3の他のトランザクション処理例では、業務サーバ61からDBサーバ62,63の両方に処理要求が送信され、DBサーバ62,63の両方から業務サーバ61に処理結果が通知される。DBサーバ62,63の両方で、同様のトランザクションが実行される。よって、データベースシステムからDBサーバ62を即時に切り離しても、切替先のDBサーバ63がトランザクションの続きを実行することができる。
しかし、第3の他のトランザクション処理例では、待機状態のDBサーバ63が現用状態とDBサーバ62と同様のトランザクションを継続的に実行するため、DBサーバ63の負荷が高くなるおそれがある。このため、DBサーバ63の計算リソースをトランザクション以外の処理に活用することが難しくなる。これに対し、前述のDBサーバ100,100a,100bによるトランザクション処理によれば、通常時では、待機状態のDBサーバはトランザクションを直接は実行しないため、その負荷を低減できる。
図31は、第4の他のトランザクション処理例を示すシーケンス図である。
第4の他のトランザクション処理例では、データベースシステムは、業務サーバ71と現用状態のDBサーバ72と待機状態のDBサーバ73を含む。また、このデータベースシステムは、業務サーバ71とDBサーバ72,73が共通にアクセス可能なキュー74と、DBサーバ72,73が共通にアクセス可能なキュー75とを含む。キュー74,75は、業務サーバ71やDBサーバ72,73と異なる装置に実装されてもよい。
(S370)業務サーバ71は、処理要求#1−1をキュー74に格納する。(S371)業務サーバ71は、処理要求#1−2をキュー74に格納する。(S372)業務サーバ71は、コミット要求#1をキュー74に格納する。(S373)業務サーバ71は、処理要求#2−1をキュー74に格納する。(S374)業務サーバ71は、コミット要求#2をキュー74に格納する。キュー74はFIFO(First In First Out)型の記憶領域であり、上記のメッセージを到着順に並べて保持している。
(S375)DBサーバ72は、キュー74の先頭から処理要求#1−1を取り出す。(S376)DBサーバ72は、更新内容をデータベースに反映させずにトランザクションログに記載しておく。(S377)DBサーバ72は、処理結果を業務サーバ71に通知する。(S378)DBサーバ72,73に切替命令が入力される。
(S379)DBサーバ72は、DBサーバ72で実行中のトランザクションを完了させるため、キュー74の先頭から処理要求#1−2を取り出す。(S380)DBサーバ72は、更新内容をトランザクションログに記載しておく。(S381)DBサーバ72は、処理結果を業務サーバ71に通知する。(S382)DBサーバ72は、キュー74の先頭からコミット要求#1を取り出す。(S383)DBサーバ72は、トランザクションログを用いてデータベースを更新する。(S384)DBサーバ72は、トランザクションログをキュー75に格納する。(S385)DBサーバ72は、処理結果を業務サーバ71に送信する。そして、DBサーバ72は、実行中のトランザクションがなくなったことを検知すると、キュー74からメッセージを取り出すことを停止する。
(S386)DBサーバ73は、キュー75の先頭からトランザクションログを取り出す。(S387)DBサーバ73は、トランザクションログを用いてDBサーバ73のデータベースを更新する。(S388)DBサーバ73は、DBサーバ72で実行中のトランザクションがなくなると、新たなトランザクションを開始するため、キュー74の先頭から処理要求#2−1を取り出す。(S389)DBサーバ73は、更新内容をトランザクションログに記載しておく。(S390)DBサーバ73は、処理結果を業務サーバ71に通知する。(S391)DBサーバ73は、キュー74の先頭からコミット要求#2を取り出す。(S392)DBサーバ73は、トランザクションログを用いてデータベースを更新する。(S393)DBサーバ73は、業務サーバ71に処理結果を通知する。
このように、第4の他のトランザクション処理例では、DBサーバ72からDBサーバ73へのスイッチオーバが指示されると、DBサーバ72で実行中のトランザクションが完了するまで、そのトランザクションに属する処理要求が取り出される。その間に到着した新たなトランザクションを発生させる処理要求は、キュー74に蓄積される。実行中のトランザクションがなくなると、DBサーバ73が処理要求を取り出し始める。
しかし、第4の他のトランザクション処理例では、切替元のDBサーバ72で実行中のトランザクションが全て完了するまで、切替先のDBサーバ73は処理を開始しない。このため、DBサーバ73が処理を開始する時点でキュー74には多くの処理要求が蓄積されているおそれがあり、DBサーバ73の負荷が大きくなるおそれがある。これに対し、前述のDBサーバ100,100a,100bによるトランザクション処理によれば、実行中の複数のトランザクションが切替先のDBサーバに順次引き継がれ、切替先のDBサーバでは引き継がれたトランザクションから順に処理を再開できる。よって、切替先のDBサーバの負荷を低減でき、スイッチオーバを円滑に行える。
第2の実施の形態のデータベースシステムによれば、トランザクションを実行する現用状態のDBサーバが切り替わるとき、実行中のトランザクションを示す移行リスト141が切替元のDBサーバと切替先のDBサーバで共有される。そして、移行リスト141に基づいて、実行中のトランザクションに対応するトランザクションログが切替先のDBサーバに移行される。このため、実行中のトランザクションを一旦ロールバックして切替先のDBサーバに引き継がない場合と比べて、スイッチオーバ直後の切替先のDBサーバの負荷を低減できる。よって、データベースシステムの応答時間の悪化を抑え、業務サーバ20,20aを停止させずにスイッチオーバを行うことが可能となる。
また、コミット前のトランザクションに対応するトランザクションログをDBサーバ間で継続的に同期する場合と比べて、待機状態のDBサーバの負荷を低減できる。よって、待機状態のDBサーバの計算リソースを、データベースの検索などデータベースを更新するトランザクション以外の処理に利用でき、計算リソースを有効活用できる。また、切替元のDBサーバに、あるトランザクションに属するメッセージが到着すると、そのトランザクションの移行が他のトランザクションよりも早くなるように移行順位が繰り上がる。これにより、業務サーバ20,20aへの応答時間を短縮することができる。
なお、前述のように、第1の実施の形態の情報処理は、情報処理装置10,10aにプログラムを実行させることで実現することができる。第2の実施の形態の情報処理は、業務サーバ20,20a、端末装置31およびDBサーバ100,100a,100bにプログラムを実行させることで実現することができる。
プログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体113)に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVDおよびDVD−R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からHDDなどの他の記録媒体(例えば、HDD103)にプログラムを複製して(インストールして)実行してもよい。
10,10a 情報処理装置
11 データベース
12 記憶部
13 制御部
14−1,14−2 トランザクション
15−1,15−2 更新データ
16 リスト

Claims (6)

  1. データベースを管理する情報処理装置であって、
    実行中の1または2以上のトランザクションに対応する、前記データベースに未反映の更新処理を示す1または2以上の更新データを記憶する記憶部と、
    前記1または2以上のトランザクションを示すリストを生成し、トランザクションを実行する装置を前記情報処理装置から他の情報処理装置に切り替えるとき、前記リストを前記他の情報処理装置に送信し、前記リストに基づいて前記1または2以上の更新データを前記他の情報処理装置に移行する制御部と、
    を有する情報処理装置。
  2. 前記制御部は、2以上のトランザクションに対応する2以上の更新データが前記記憶部に記憶されているとき、前記リストに基づいて前記2以上の更新データについて前記他の情報処理装置に移行する順序を決定する、
    請求項1記載の情報処理装置。
  3. 前記制御部は、前記2以上のトランザクションのうち一の未移行の更新データに対応する一のトランザクションに属する処理要求が前記情報処理装置で受信されたときは、当該一の未移行の更新データの移行順位を繰り上げる、
    請求項2記載の情報処理装置。
  4. 前記情報処理装置に対して一のトランザクションに属する第1の処理要求が送信されたときは、前記他の情報処理装置に対して前記第1の処理要求と同じ処理を示す第2の処理要求が送信されており、
    前記制御部は、前記1または2以上の更新データの移行を開始した後は、前記情報処理装置で受信された前記第1の処理要求を破棄する、
    請求項1乃至3の何れか一項に記載の情報処理装置。
  5. データベースを管理するコンピュータが実行する制御方法であって、
    実行中の1または2以上のトランザクションを示すリストを生成し、
    トランザクションを実行する装置を前記コンピュータから他のコンピュータに切り替えるとき、前記リストを前記他のコンピュータに送信し、前記リストに基づいて、前記データベースに未反映の更新処理を示す前記1または2以上のトランザクションに対応する1または2以上の更新データを前記他のコンピュータに移行する、
    制御方法。
  6. データベースを管理するコンピュータに、
    実行中の1または2以上のトランザクションを示すリストを生成し、
    トランザクションを実行する装置を前記コンピュータから他のコンピュータに切り替えるとき、前記リストを前記他のコンピュータに送信し、前記リストに基づいて、前記データベースに未反映の更新処理を示す前記1または2以上のトランザクションに対応する1または2以上の更新データを前記他のコンピュータに移行する、
    処理を実行させる制御プログラム。
JP2014068221A 2014-03-28 2014-03-28 情報処理装置、制御方法および制御プログラム Active JP6248747B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014068221A JP6248747B2 (ja) 2014-03-28 2014-03-28 情報処理装置、制御方法および制御プログラム
US14/658,284 US9715522B2 (en) 2014-03-28 2015-03-16 Information processing apparatus and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014068221A JP6248747B2 (ja) 2014-03-28 2014-03-28 情報処理装置、制御方法および制御プログラム

Publications (2)

Publication Number Publication Date
JP2015191451A true JP2015191451A (ja) 2015-11-02
JP6248747B2 JP6248747B2 (ja) 2017-12-20

Family

ID=54190703

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014068221A Active JP6248747B2 (ja) 2014-03-28 2014-03-28 情報処理装置、制御方法および制御プログラム

Country Status (2)

Country Link
US (1) US9715522B2 (ja)
JP (1) JP6248747B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017097791A (ja) * 2015-11-27 2017-06-01 株式会社三菱東京Ufj銀行 データ処理装置
JP2018013899A (ja) * 2016-07-20 2018-01-25 富士通株式会社 情報処理装置、情報処理方法、情報処理システム及びプログラム
JP2018056633A (ja) * 2016-09-26 2018-04-05 日本電気株式会社 クラスタシステム、サーバ、サーバの動作方法、及びプログラム
WO2018235348A1 (ja) * 2017-06-20 2018-12-27 株式会社東芝 データベースサーバ、データベース管理方法、および記憶媒体
JP2019168807A (ja) * 2018-03-22 2019-10-03 日本電気株式会社 制御装置、制御方法、制御プログラム、及び制御システム
JP2021521570A (ja) * 2018-04-10 2021-08-26 オーエスアイソフト リミテッド ライアビリティ カンパニー 分散コンピューティングシステムにおける共有リソースの管理

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2754099T3 (es) 2009-12-10 2020-04-15 Royal Bank Of Canada Tratamiento sincronizado de datos mediante recursos informáticos en red
US9940670B2 (en) 2009-12-10 2018-04-10 Royal Bank Of Canada Synchronized processing of data by networked computing resources
CA2965177C (en) * 2014-10-20 2023-07-18 Solution Technology Incorporated Throttling solutions into a legacy inventory system during a service disruption
US11947489B2 (en) 2017-09-05 2024-04-02 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US10846001B2 (en) 2017-11-08 2020-11-24 Robin Systems, Inc. Allocating storage requirements in a distributed storage system
US10782887B2 (en) 2017-11-08 2020-09-22 Robin Systems, Inc. Window-based prority tagging of IOPs in a distributed storage system
US11582168B2 (en) 2018-01-11 2023-02-14 Robin Systems, Inc. Fenced clone applications
US10896102B2 (en) 2018-01-11 2021-01-19 Robin Systems, Inc. Implementing secure communication in a distributed computing system
US11099937B2 (en) 2018-01-11 2021-08-24 Robin Systems, Inc. Implementing clone snapshots in a distributed storage system
US11392363B2 (en) 2018-01-11 2022-07-19 Robin Systems, Inc. Implementing application entrypoints with containers of a bundled application
US11748203B2 (en) 2018-01-11 2023-09-05 Robin Systems, Inc. Multi-role application orchestration in a distributed storage system
US10845997B2 (en) 2018-01-12 2020-11-24 Robin Systems, Inc. Job manager for deploying a bundled application
US10846137B2 (en) 2018-01-12 2020-11-24 Robin Systems, Inc. Dynamic adjustment of application resources in a distributed computing system
US20200034475A1 (en) * 2018-07-30 2020-01-30 Robin Systems, Inc. Relocation Of A Primary Copy Of A Replicated Volume
US10976938B2 (en) 2018-07-30 2021-04-13 Robin Systems, Inc. Block map cache
US11023328B2 (en) 2018-07-30 2021-06-01 Robin Systems, Inc. Redo log for append only storage scheme
US10817380B2 (en) 2018-07-31 2020-10-27 Robin Systems, Inc. Implementing affinity and anti-affinity constraints in a bundled application
US10908848B2 (en) 2018-10-22 2021-02-02 Robin Systems, Inc. Automated management of bundled applications
US11036439B2 (en) 2018-10-22 2021-06-15 Robin Systems, Inc. Automated management of bundled applications
WO2020177850A1 (en) * 2019-03-04 2020-09-10 Huawei Technologies Co., Ltd. Database updates
US11086725B2 (en) 2019-03-25 2021-08-10 Robin Systems, Inc. Orchestration of heterogeneous multi-role applications
US11256434B2 (en) 2019-04-17 2022-02-22 Robin Systems, Inc. Data de-duplication
US10831387B1 (en) 2019-05-02 2020-11-10 Robin Systems, Inc. Snapshot reservations in a distributed storage system
US10877684B2 (en) 2019-05-15 2020-12-29 Robin Systems, Inc. Changing a distributed storage volume from non-replicated to replicated
US11226847B2 (en) 2019-08-29 2022-01-18 Robin Systems, Inc. Implementing an application manifest in a node-specific manner using an intent-based orchestrator
US11249851B2 (en) 2019-09-05 2022-02-15 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US11520650B2 (en) 2019-09-05 2022-12-06 Robin Systems, Inc. Performing root cause analysis in a multi-role application
US11347684B2 (en) 2019-10-04 2022-05-31 Robin Systems, Inc. Rolling back KUBERNETES applications including custom resources
US11113158B2 (en) 2019-10-04 2021-09-07 Robin Systems, Inc. Rolling back kubernetes applications
US11403188B2 (en) 2019-12-04 2022-08-02 Robin Systems, Inc. Operation-level consistency points and rollback
US20210342317A1 (en) 2020-04-29 2021-11-04 Oracle International Corporation Techniques for efficient migration of key-value data
US11108638B1 (en) 2020-06-08 2021-08-31 Robin Systems, Inc. Health monitoring of automatically deployed and managed network pipelines
US11528186B2 (en) 2020-06-16 2022-12-13 Robin Systems, Inc. Automated initialization of bare metal servers
US11615022B2 (en) * 2020-07-30 2023-03-28 Arm Limited Apparatus and method for handling accesses targeting a memory
US11740980B2 (en) 2020-09-22 2023-08-29 Robin Systems, Inc. Managing snapshot metadata following backup
US11743188B2 (en) 2020-10-01 2023-08-29 Robin Systems, Inc. Check-in monitoring for workflows
US11271895B1 (en) 2020-10-07 2022-03-08 Robin Systems, Inc. Implementing advanced networking capabilities using helm charts
US11456914B2 (en) 2020-10-07 2022-09-27 Robin Systems, Inc. Implementing affinity and anti-affinity with KUBERNETES
US11750451B2 (en) 2020-11-04 2023-09-05 Robin Systems, Inc. Batch manager for complex workflows
US11556361B2 (en) 2020-12-09 2023-01-17 Robin Systems, Inc. Monitoring and managing of complex multi-role applications

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11265322A (ja) * 1998-03-18 1999-09-28 Fujitsu Ltd バックアップ機能付オンラインデータベース情報処理システム
JP2002183088A (ja) * 2000-12-15 2002-06-28 Hitachi Ltd オンラインシステム回復方法及びその実施装置並びにその処理プログラムを記録した記録媒体
US20030163755A1 (en) * 2002-02-22 2003-08-28 Fung Priscilla C. System for highly available transaction recovery for transaction processing systems
JP2006011848A (ja) * 2004-06-25 2006-01-12 Nec Corp レプリケーションシステム、装置、方法、およびプログラム
US20060253575A1 (en) * 2002-01-23 2006-11-09 Novell, Inc. Transparent network connection takeover
JP2010033398A (ja) * 2008-07-30 2010-02-12 Internatl Business Mach Corp <Ibm> トランザクションを処理する本番システムと該本番システムのバックアップ・システムである代行システムとを含む本番−代行システム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4320067B2 (ja) 1998-09-10 2009-08-26 株式会社三菱東京Ufj銀行 正副ホストの切替方法、及び、オンライン取引システム
US6295610B1 (en) * 1998-09-17 2001-09-25 Oracle Corporation Recovering resources in parallel
US7065541B2 (en) * 2001-10-10 2006-06-20 International Business Machines Corporation Database migration
US7143307B1 (en) * 2002-03-15 2006-11-28 Network Appliance, Inc. Remote disaster recovery and data migration using virtual appliance migration
JP4291060B2 (ja) * 2003-07-01 2009-07-08 富士通株式会社 トランザクション処理方法,トランザクション制御装置およびトランザクション制御プログラム
JP4484618B2 (ja) 2004-07-30 2010-06-16 株式会社日立製作所 ディザスタリカバリシステム、プログラム及びデータの複製方法
JP4277873B2 (ja) * 2006-05-23 2009-06-10 日本電気株式会社 トランザクション処理装置、トランザクション処理方法
EP2221733A1 (en) * 2009-02-17 2010-08-25 AMADEUS sas Method allowing validation in a production database of new entered data prior to their release
US8924273B2 (en) * 2010-10-28 2014-12-30 Oracle International Corporation Simplifying migration from one financial consolidation application to another
US8587136B2 (en) * 2010-12-20 2013-11-19 Solar Turbines Inc. Mobile power system
JP5640767B2 (ja) 2011-01-25 2014-12-17 富士通株式会社 情報処理装置、データ管理方法およびデータベースシステム
JP5686034B2 (ja) * 2011-04-28 2015-03-18 富士通株式会社 クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11265322A (ja) * 1998-03-18 1999-09-28 Fujitsu Ltd バックアップ機能付オンラインデータベース情報処理システム
JP2002183088A (ja) * 2000-12-15 2002-06-28 Hitachi Ltd オンラインシステム回復方法及びその実施装置並びにその処理プログラムを記録した記録媒体
US20060253575A1 (en) * 2002-01-23 2006-11-09 Novell, Inc. Transparent network connection takeover
US20030163755A1 (en) * 2002-02-22 2003-08-28 Fung Priscilla C. System for highly available transaction recovery for transaction processing systems
JP2006011848A (ja) * 2004-06-25 2006-01-12 Nec Corp レプリケーションシステム、装置、方法、およびプログラム
JP2010033398A (ja) * 2008-07-30 2010-02-12 Internatl Business Mach Corp <Ibm> トランザクションを処理する本番システムと該本番システムのバックアップ・システムである代行システムとを含む本番−代行システム

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017097791A (ja) * 2015-11-27 2017-06-01 株式会社三菱東京Ufj銀行 データ処理装置
JP2018013899A (ja) * 2016-07-20 2018-01-25 富士通株式会社 情報処理装置、情報処理方法、情報処理システム及びプログラム
JP2018056633A (ja) * 2016-09-26 2018-04-05 日本電気株式会社 クラスタシステム、サーバ、サーバの動作方法、及びプログラム
WO2018235348A1 (ja) * 2017-06-20 2018-12-27 株式会社東芝 データベースサーバ、データベース管理方法、および記憶媒体
JP2019003584A (ja) * 2017-06-20 2019-01-10 株式会社東芝 データベースサーバ、データベース管理方法、およびプログラム
US11269922B2 (en) 2017-06-20 2022-03-08 Kabushiki Kaisha Toshiba Database server, database management method, and storage medium
JP2019168807A (ja) * 2018-03-22 2019-10-03 日本電気株式会社 制御装置、制御方法、制御プログラム、及び制御システム
JP7013988B2 (ja) 2018-03-22 2022-02-01 日本電気株式会社 制御装置、制御方法、制御プログラム、及び制御システム
JP2021521570A (ja) * 2018-04-10 2021-08-26 オーエスアイソフト リミテッド ライアビリティ カンパニー 分散コンピューティングシステムにおける共有リソースの管理
JP7183384B2 (ja) 2018-04-10 2022-12-05 オーエスアイソフト リミテッド ライアビリティ カンパニー 分散コンピューティングシステムにおける共有リソースの管理

Also Published As

Publication number Publication date
US9715522B2 (en) 2017-07-25
US20150278333A1 (en) 2015-10-01
JP6248747B2 (ja) 2017-12-20

Similar Documents

Publication Publication Date Title
JP6248747B2 (ja) 情報処理装置、制御方法および制御プログラム
WO2020224374A1 (zh) 数据复制方法、装置、计算机设备及存储介质
US20230273937A1 (en) Conditional master election in distributed databases
US11899688B2 (en) System for live-migration and automated recovery of applications in a distributed system
US11176172B2 (en) Methods and apparatus for automatic database failover in a master-replica replication configuration
US7900085B2 (en) Backup coordinator for distributed transactions
JP6248523B2 (ja) データ処理管理方法、情報処理装置およびデータ処理管理プログラム
US7440977B2 (en) Recovery method using extendible hashing-based cluster logs in shared-nothing spatial database cluster
US11016941B2 (en) Delayed asynchronous file replication in a distributed file system
EP2653986B1 (en) Client-side caching of a database transaction token.
JP5686034B2 (ja) クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム
CN105493474B (zh) 用于支持用于同步分布式数据网格中的数据的分区级别日志的系统及方法
US10180812B2 (en) Consensus protocol enhancements for supporting flexible durability options
US9367261B2 (en) Computer system, data management method and data management program
JP4671399B2 (ja) データ処理システム
JP5308403B2 (ja) データ処理の障害回復方法、システムおよびプログラム
US20220114164A1 (en) System and method for high performance multi-statement interactive transactions with snapshot isolation in a scale-out database
WO2010144739A2 (en) Distributed cache availability during garbage collection
US9477739B2 (en) System for live-migration and automated recovery of applications in a distributed system
WO2020025049A1 (zh) 数据同步的方法、装置、数据库主机及存储介质
US20210182246A1 (en) Efficient transaction log and database processing
TW201124842A (en) Method for presenting tab contents in IM software,system and device thereof
JP5480046B2 (ja) 分散トランザクション処理システム、装置、方法およびプログラム
US11347564B2 (en) Synchronizing batch job status across nodes on a clustered system
US9489269B2 (en) Global backup lock manager

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170908

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171024

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171106

R150 Certificate of patent or registration of utility model

Ref document number: 6248747

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150