JP6556851B2 - データベースシステム、サーバ装置、プログラムおよび情報処理方法 - Google Patents

データベースシステム、サーバ装置、プログラムおよび情報処理方法 Download PDF

Info

Publication number
JP6556851B2
JP6556851B2 JP2017538762A JP2017538762A JP6556851B2 JP 6556851 B2 JP6556851 B2 JP 6556851B2 JP 2017538762 A JP2017538762 A JP 2017538762A JP 2017538762 A JP2017538762 A JP 2017538762A JP 6556851 B2 JP6556851 B2 JP 6556851B2
Authority
JP
Japan
Prior art keywords
operation information
identifier
database
storage unit
log
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.)
Active
Application number
JP2017538762A
Other languages
English (en)
Other versions
JPWO2017042890A1 (ja
Inventor
服部 雅一
雅一 服部
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.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Digital Solutions 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 Toshiba Corp, Toshiba Digital Solutions Corp filed Critical Toshiba Corp
Publication of JPWO2017042890A1 publication Critical patent/JPWO2017042890A1/ja
Application granted granted Critical
Publication of JP6556851B2 publication Critical patent/JP6556851B2/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/2358Change logging, detection, and notification
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication

Description

本発明の実施形態は、データベースシステム、サーバ装置、プログラムおよび情報処理方法に関する。
近年、24時間、365日、運用を停止できないサービス等に、データベースを多重化することにより高可用化したデータベースシステムが利用されている。高可用化したデータベースシステムとして、例えば、複数のサーバ装置のそれぞれが別個のデータベースを有するシステムが知られている。このシステムでは、1つのサーバ装置がマスターとして動作し、他のサーバ装置がスレーブとして動作する。
マスターは、クライアント装置から直接データベースの更新を受け付けるサーバ装置である。スレーブは、マスターの複製のデータベースを有するサーバ装置である。マスターのサーバ装置がデータベースを更新した場合、スレーブのサーバ装置は、マスターと同一の更新処理を実行する。これにより、データベースシステムでは、マスターとスレーブとの間でデータベースを同期させて、データの整合性を保つことができる。マスターとスレーブとの間でデータの同期を取る処理をレプリケーションと呼ぶ。
また、スレーブは、マスターのバックアップとして機能する。マスターのサーバ装置に障害が発生した場合、何れかのスレーブがマスターに変更される。これにより、データベースシステムは、一部のサーバ装置が故障しても、サービスを停止することなく、サービスを継続することができる。マスターのサーバが故障した場合に、スレーブのサーバ装置をマスターに変更する処理をフェイルオーバと呼ぶ。
また、フェイルオーバが発生した場合、クライアント装置は、マスターのサーバ装置との接続にエラーが発生するので、フェイルオーバの完了後に新たなマスターのサーバ装置と再接続しなければならない。この場合、クライアント装置は、上位階層のアプリケーションに対して、接続のエラーを隠ぺいしたり、中断を最小限にしたりする処理を実行する。これにより、クライアント装置は、再接続のための処理をアプリケーションに実行させなくてよいので、アプリケーションの開発負担を軽減させることができる。
フェイルオーバが発生した場合、クライアント装置は、新たなマスターのサーバ装置に自動的に再接続する。自動的に再接続する方法として、トランザクション毎にIDを付加し、マスターおよびスレーブのそれぞれが実行済みのトランザクションのIDをキャッシュする方法が知られている。この方法では、フェイルオーバによりトランザクションが中断された場合、クライアント装置は、フェイルオーバ完了後において、中断したトランザクションの実行要求を新しいマスターのサーバ装置に同一のIDを付加して再送信する。新たなマスターのサーバ装置は、同一のIDをキャッシュしている場合には、再送信された要求を無視し、同一のIDをキャッシュしていない場合には、再送信された要求に応じてトランザクションを実行する。これにより、データベースシステムでは、フェイルオーバが発生した場合に、同一のトランザクションの重複実行を無くすことができる。
特開平08−249281号公報
HornetQ, a multi-protocol, embeddable, very high performance, clustered, asynchronous messaging system. [online]. [retrieved on 2015-05-13]. Retrieved from the Internet:<URL: http:hornetq.jboss.org/>.
ところで、このようなデータベースシステムでは、マスターのサーバ装置が、例えばネットワークのエラー等により再起動した場合、再起動後に、同一のサーバ装置が再度マスターに選択される場合がある。この場合、マスターのサーバ装置は、キャッシュしていたIDがクリアされる。従って、この場合、マスターのサーバ装置は、クライアント装置から同一の要求が再送信された場合、要求を無視できずにトランザクションを重複実行してしまう。
特に、近年、サーバ装置の仮想化の技術が進んでいる。仮想化されたサーバ装置は、物理サーバの負荷の増大またはメンテナンス等により、再起動が生じやすい。従って、データベースシステムのサーバ装置に仮想化されたサーバ装置を用いた場合には、操作情報を重複実行してしまう可能性がより高い。
実施形態のデータベースシステムは、それぞれがデータベースを記憶し、1つがマスターとして動作し、少なくとも1つが前記マスターをバックアップするスレーブとして動作する複数のサーバ装置と、前記データベースに対する操作を指示する操作情報を前記マスターのサーバ装置に送信するクライアント装置と、を備えるデータベースシステムであって、前記クライアント装置は、前記操作情報に、前記操作情報を識別する識別子を付加し、前記複数のサーバ装置のそれぞれは、前記データベースを記憶するデータ保存部と、前記識別子のリストを記憶する識別子記憶部と、前記データベースの変更のログを記憶するログ保存部と、前記クライアント装置から受信した前記操作情報に応じて、前記データ保存部に記憶されている前記データベースを変更し、前記操作情報に応じて前記データベースを変更する場合、前記操作情報の前記識別子を前記識別子記憶部に記憶させる操作部と、前記操作情報に応じて前記データベースを変更する場合、前記操作情報の前記識別子を付加したログを前記ログ保存部に記憶させるログ処理部と、再起動がされた場合、前記ログ保存部に記憶されたログに基づき、前記データ保存部に記憶された前記データベースを復元するとともに、前記ログ保存部に記憶されたログに付加された前記識別子に基づき、前記識別子記憶部に記憶された前記識別子のリストを復元するリカバリ部と、を備え、前記操作部は、前記クライアント装置から受信した前記操作情報の前記識別子が、前記識別子記憶部に記憶されている場合、受信した前記操作情報に応じた前記データベースの変更を実行しない。
図1は、実施形態に係るデータベースシステムの構成を示す図である。 図2は、調停装置によるマスターおよびスレーブの設定の処理の流れを示す図である。 図3は、クライアント装置によるデータベースの操作およびレプリケーションの処理の流れを示す図である。 図4は、マスターのサーバ装置が故障した状態を示す図である。 図5は、マスターのサーバ装置が故障した後の処理の流れを示す図である。 図6は、クライアント装置の構成を示す図である。 図7は、サーバ装置の構成を示す図である。 図8は、クライアント装置の処理を示すフローチャートである。 図9は、マスターのサーバ装置の処理を示すフローチャートである。 図10は、スレーブのサーバ装置の処理を示すフローチャートである。 図11は、リカバリ時のサーバ装置の処理を示すフローチャートである。 図12は、データベースの操作時の処理の流れを示す図である。 図13は、故障時の処理の流れを示す図である。 図14は、未処理の操作情報をスレーブからマスターに変更されたサーバ装置に再送信した場合の処理の流れを示す図である。 図15は、処理済みの操作情報をスレーブからマスターに変更されたサーバ装置に再送信した場合の処理の流れを示す図である。 図16は、マスターのサーバ装置が再起動して、再度マスターに設定された場合の処理の流れを示す図である。 図17は、処理済みの操作情報を、再起動後に再度マスターに設定されたサーバ装置に再送信した場合の処理の流れを示す図である。 図18は、情報処理装置のハードウェア構成を示す図である。
以下、図面を参照しながら実施形態に係るデータベースシステムについて詳細に説明する。本実施形態に係るデータベースシステムは、クライアント装置から同一の操作情報が再送信された場合に重複実行を無くすことを目的とする。
図1は、実施形態に係るデータベースシステムの構成を示す図である。データベースシステム10は、複数のサーバ装置30と、調停装置40と、クライアント装置50とを備える。複数のサーバ装置30、調停装置40およびクライアント装置50は、それぞれが情報処理装置であって、ネットワークを介して互いに接続可能である。
複数のサーバ装置30は、それぞれがデータベースを記憶する。複数のサーバ装置30は、1つがマスターとして動作し、他の少なくとも1つのサーバ装置30がマスターをバックアップするスレーブとして動作する。
マスターのサーバ装置30は、クライアント装置50からデータベースの操作を指示する操作情報を受信する。データベースの操作とは、例えば、レコードの参照、検索、更新、削除、新規登録等のことをいう。
スレーブのサーバ装置30は、マスターのサーバ装置30との間でレプリケーションを実行して、マスターのサーバ装置30が有するデータベースと同一の変更処理を実行する。より具体的には、マスターのサーバ装置30は、データベースの変更(更新、削除、新規登録等)のログをスレーブのサーバ装置30に送信する。スレーブのサーバ装置30は、データベースの変更のログを受信すると、ログに従って自身が有するデータベースを変更する。これにより、それぞれのスレーブのサーバ装置30は、データベースをマスターのサーバ装置30に同期させることができる。なお、スレーブのサーバ装置30が複数個設定されている場合、マスターのサーバ装置30は、それぞれのスレーブのサーバ装置30との間でレプリケーションを実行する。
調停装置40は、複数のサーバ装置30のうちの1つをマスターのサーバ装置30に設定する。また、調停装置40は、複数のサーバ装置30のうちマスター以外の他の少なくとも1つをスレーブのサーバ装置30に設定する。また、調停装置40は、それぞれのサーバ装置30が故障をしたか否かを監視する。調停装置40は、マスターのサーバ装置30が故障した場合、何れかのスレーブのサーバ装置30をマスターのサーバ装置30に設定する。また、調停装置40は、クライアント装置50から問い合わせを受信した場合、何れがマスターのサーバ装置30であるかを回答する。
クライアント装置50は、データベースの操作を指示する操作情報をマスターのサーバ装置30に送信する。また、クライアント装置50は、マスターのサーバ装置30が不明である場合、調停装置40に問い合わせて、マスターのサーバ装置30の通知を受ける。これにより、クライアント装置50は、マスターのサーバ装置30に操作情報を送信することができる。
図2は、調停装置40によるマスターおよびスレーブの設定の処理の流れを示す図である。調停装置40は、サービスを開始する場合、何れかのサーバ装置30が故障した場合および新たなサーバ装置30が追加された場合等に、それぞれのサーバ装置30に対してマスターまたはスレーブの役割を設定する。この場合、調停装置40は、複数のサーバ装置30が同時にマスターに設定されないように役割を設定する。
なお、データベースシステム10は、何れかのサーバ装置30が故障した場合等に、故障していない複数のサーバ装置30のうちの1つがマスターとして動作し、残りの少なくとも1つがスレーブとして動作すれば、調停装置40を備えない構成であってもよい。例えば、マスターの故障を検知したり、新たなサーバ装置30の追加を検知したりしたタイミングにおいて、それぞれのサーバ装置30は、特定のディスクロックを取得する。そして、それぞれのサーバ装置30は、特定のディスクロックが取得できた場合にマスターとして動作し、取得できなかった場合にスレーブとして動作する。これにより、データベースシステム10は、調停装置40を備えない構成において、それぞれのサーバ装置30に適切に役割を設定できる。
また、例えば、マスターの故障を検知したり、新たなサーバ装置30の追加を検知したりしたタイミングにおいて、複数のサーバ装置30は、互いに、マスターとなるサーバ装置30を投票する投票処理を実行する。そして、複数のサーバ装置30は、マスターが決定するまで投票処理を繰り返す。このようにしても、データベースシステム10は、調停装置40を備えない構成において、それぞれのサーバ装置30に適切に役割を設定できる。
図3は、クライアント装置50によるデータベースの操作およびレプリケーションの処理の流れを示す図である。
クライアント装置50は、上位階層のアプリケーションからデータベースの操作の指示を受けた場合、操作情報を生成して、マスターのサーバ装置30に送信する。操作情報は、例えば、複数の更新処理等をまとめたトランザクションの実行要求であってよい。また、操作情報は、SQL文によるデータベースの操作要求であってもよい。また、操作情報は、1つのレコードの更新、削除または新規登録等の要求であってもよい。また、操作情報は、クライアント装置50がマスターのサーバ装置30に接続してから、少なくとも1つのトランザクションの実行をし、接続を終了するまでのセッションに含まれる全ての情報であってもよい。
マスターのサーバ装置30は、クライアント装置50から操作情報を受信した場合、操作情報に従ってデータベースを操作する。マスターのサーバ装置30は、操作情報に従ったデータベースの操作が成功すると、クライアント装置50に成功したことを表す情報を返信する。なお、マスターのサーバ装置30は、操作情報に従った処理が失敗した場合には、クライアント装置50に失敗したことを表す情報を返信する。
また、マスターのサーバ装置30は、操作情報に従ってデータベースを変更する場合、スレーブのサーバ装置30との間でレプリケーションを実行する。具体的には、マスターのサーバ装置30は、データベースの変更のログをスレーブのサーバ装置30に送信する。データベースの変更のログは、データベースの更新、削除または登録等の履歴を伝達できる情報であれば、どのような情報であってもよい。例えば、データベースの変更のログは、データベースの操作を表すSQL文であってもよいし、レコードレベルの変更データであってもよい。
スレーブのサーバ装置30は、データベースの変更のログを受信する。そして、スレーブのサーバ装置30は、受信したログと同一の変更がされるように、データベースを変更する。なお、スレーブのサーバ装置30が複数存在する場合、マスターのサーバ装置30は、それぞれのスレーブのサーバ装置30との間でレプリケーションを実行する。
また、レプリケーションは、同期処理、非同期処理または準同期処理に分けることができる。同期処理では、スレーブのサーバ装置30がデータベースを変更した後に、マスターのサーバ装置30のデータベースを変更する。非同期処理では、マスターのサーバ装置30がデータベースを変更してから、ログをスレーブのサーバ装置30に送信する。準同期処理では、スレーブのサーバ装置30がログを受信したことを確認してから、マスターのサーバ装置30がデータベースを変更する。
本実施形態においては、サーバ装置30は、同期処理によりレプリケーションを実行する。しかし、サーバ装置30は、非同期処理または準同期処理によりレプリケーションを実行してもよい。
図4は、マスターのサーバ装置30が故障した状態を示す図である。調停装置40は、サービスの運用中において、それぞれのサーバ装置30から定期的にハートビート(正常に動作していることを示すパケット)を受信して、それぞれのサーバ装置30の動作を監視する。調停装置40は、ハートビートが受信できなくなった場合、そのサーバ装置30が故障したと判断する。
また、マスターのサーバ装置30が故障している場合、クライアント装置50は、操作情報を送信しても、結果を受信することができない。クライアント装置50は、操作情報を送信してから所定時間を経過しても結果を受信できない場合、フェイルオーバが発生したと判断する。
図5は、マスターのサーバ装置30が故障した後の処理の流れを示す図である。マスターのサーバ装置30が故障したと判断した場合、調停装置40は、何れかのスレーブのサーバ装置30をマスターのサーバ装置30に変更するフェイルオーバを実行する。
また、クライアント装置50は、操作情報を送信してから所定時間を経過しても結果を受信できないので、フェイルオーバが発生したと判断した場合、調停装置40にマスターのサーバ装置30を問い合わせる。クライアント装置50は、一例として、マスターのサーバ装置30のネットワークアドレス等を回答として取得する。そして、クライアント装置50は、同一の操作情報を、新しいマスターのサーバ装置30に再送信する。
図6は、クライアント装置50の構成を示す図である。クライアント装置50は、操作情報生成部51と、識別子生成部52と、操作送信部53と、結果受信部54とを有する。
操作情報生成部51は、アプリケーションからデータベースの操作指示を受け付ける。そして、操作情報生成部51は、操作指示に応じた処理をサーバ装置30に実行させるための操作情報を生成する。
識別子生成部52は、操作情報生成部51が生成した操作情報毎に、ユニークな識別子を生成する。識別子生成部52は、一例として、UUID(Universally Unique Identifier)等に基づく識別子を生成する。なお、識別子は、サーバ装置30に送信されて、サーバ装置30より少なくとも一定期間保持される。識別子は、サーバ装置30が保持している期間の範囲でユニークであればよい。ここで、一定期間は、マスターのサーバ装置30が故障してから、新たなマスターのサーバ装置30が動作を開始するまでの期間であり、フェイルオーバタイムと呼ぶ。
また、識別子生成部52は、他の装置から受信した情報に基づき識別子を生成してもよい。識別子生成部52は、例えば、マスターのサーバ装置30または他の装置から識別子を受信し、受信した識別子を出力してもよい。また、識別子生成部52は、例えば、マスターのサーバ装置30または他の装置から識別子の元となる情報を受信し、受信した情報に基づき識別子を生成してもよい。
操作送信部53は、操作情報生成部51により生成された操作情報に、識別子生成部52により生成された識別子を付加する。そして、操作送信部53は、識別子を付加した操作情報をマスターのサーバ装置30に送信する。
結果受信部54は、マスターのサーバ装置30から、送信した操作情報に従ったデータベースの操作の結果を受信する。結果受信部54は、成功したことを表す結果を受信した場合、操作情報生成部51に結果を返す。操作情報生成部51は、成功したことを表す結果が返された場合、その結果をアプリケーションに返す。
また、結果受信部54は、失敗したことを表す結果を受信した場合、または、操作情報を送信してから所定期間が経過しても結果を受信できない場合(タイムアウトした場合)、その旨を操作送信部53に通知する。この場合、操作送信部53は、調停装置40に新しいマスターのサーバ装置30を問い合わせる。そして、操作送信部53は、問い合わせて得られた新しいマスターのサーバ装置30に対して同一の操作情報を再送信する。この場合において、操作送信部53は、同一の識別子を操作情報に付加する。
なお、結果受信部54は、操作送信部53が最初に操作情報を送信してから、フェイルオーバタイムを経過した後も、失敗したことを表す結果を受信するかまたはタイムアウトした場合には、操作情報生成部51に操作情報を再送信させず、失敗したことを表す結果をアプリケーションに返す。
図7は、サーバ装置30の構成を示す図である。サーバ装置30は、データ保存部61と、識別子記憶部62と、ログ保存部63と、情報処理部64とを有する。
データ保存部61は、データベースを記憶する。データ保存部61は、ハードディスク等の不揮発性の記憶装置であってもよいし、RAM(Random Access Memory)等の揮発性の記憶装置であってもよい。
識別子記憶部62は、識別子のリストを記憶する。識別子記憶部62は、RAM等の揮発性の記憶装置である。従って、識別子記憶部62は、サーバ装置30が再起動した場合、記憶している識別子のリストをクリアする。
ログ保存部63は、データベースの変更のログを記憶する。ログ保存部63は、ハードディスク等の不揮発性の記憶装置である。従って、ログ保存部63は、サーバ装置30が再起動した場合にも、記憶しているログを記憶し続ける。
情報処理部64は、CPU等のプロセッサがプログラムを実行することにより実現される機能ブロックである。情報処理部64は、一部の機能構成がハードウェアにより実現されていてもよい。
情報処理部64は、操作受信部71と、操作部72と、ログ処理部73と、第1レプリケーション部74と、結果送信部75と、第2レプリケーション部76と、リカバリ部77とを有する。操作受信部71、操作部72、ログ処理部73、第1レプリケーション部74および結果送信部75は、サーバ装置30をマスターとして動作させるための機能ブロックである。第2レプリケーション部76は、サーバ装置30をスレーブとして動作させるための機能ブロックである。
操作受信部71は、クライアント装置50から、識別子が付加された操作情報を受信する。操作部72は、クライアント装置50から受信した操作情報に応じて、データ保存部61からデータベースを読み出して操作する。例えば、操作部72は、クライアント装置50から受信した操作情報に応じて、データ保存部61に記憶されているデータベースを変更する。
また、操作部72は、クライアント装置50から受信した操作情報に応じてデータベースを変更する場合、操作情報の識別子を識別子記憶部62に記憶させる。さらに、操作部72は、クライアント装置50から操作情報を受信した場合、クライアント装置50から受信した操作情報の識別子が、識別子記憶部62に記憶されているか否かをチェックする。そして、操作部72は、クライアント装置50から受信した操作情報の識別子が、識別子記憶部62に記憶されている場合、受信した操作情報に応じたデータベースの変更を実行しない。また、操作部72は、現時点から一定時間前の時点より前に受信した操作情報の識別子を、識別子記憶部62から削除する。ここで、一定時間は、フェイルオーバタイムである。
ログ処理部73は、操作部72による操作情報に応じたデータベースの変更のログを生成する。そして、ログ処理部73は、操作情報に応じたデータベースの変更のログに、操作情報の識別子を付加する。また、ログ処理部73は、識別子が付加されたログをログ保存部63に記憶させる。
第1レプリケーション部74は、スレーブのサーバ装置30との間でレプリケーションを実行する。具体的には、第1レプリケーション部74は、識別子が付加されたログをスレーブのサーバ装置30に送信する。
結果送信部75は、操作情報に応じた処理結果をクライアント装置50に送信する。結果送信部75は、例えば、レプリケーションおよび操作情報に応じたデータベースの変更が完了した後に、受信した操作情報に応じた処理が成功したことを表す結果をクライアント装置50に送信する。また、結果送信部75は、例えば、レプリケーション、または、操作情報に応じたデータベースの変更が失敗した場合、受信した操作情報に応じた処理が失敗したことを表す結果をクライアント装置50に送信する。
また、結果送信部75は、クライアント装置50から受信した操作情報の識別子が、識別子記憶部62に記憶されている場合、受信した操作情報に応じた処理が成功したことを表す結果をクライアント装置50に送信する。
第2レプリケーション部76は、マスターのサーバ装置30との間でレプリケーションを実行する。具体的には、第2レプリケーション部76は、マスターのサーバ装置30から識別子が付加されたログを受信する。続いて、第2レプリケーション部76は、マスターのサーバ装置30から受信したログに応じて、データ保存部61に記憶されているデータベースを変更する。また、第2レプリケーション部76は、ログをログ保存部63に記憶させる。さらに、第2レプリケーション部76は、ログの識別子を識別子記憶部62に記憶させる。
リカバリ部77は、サーバ装置30が再起動された場合、ログ保存部63に記憶されたログに基づき、データ保存部61に記憶されたデータベースを復元する。例えば、リカバリ部77は、通常の動作時において、データ保存部61に記憶されたデータベースのイメージを定期的に取得して例えば不揮発性の記憶装置に記憶させる。再起動がされた場合、リカバリ部77は、障害発生点から最も近い時点のデータベースのイメージを読み出してデータ保存部61に記憶させる。続いて、リカバリ部77は、そのイメージを取得した時点から後のログをログ保存部63から読み出し、読み出したログに基づきデータベースを障害発生の直前の時点まで復元する。
また、リカバリ部77は、再起動がされてデータベースが復元された場合、ログ保存部63に記憶されたログの識別子に基づき、識別子記憶部62に記憶された識別子のリストを復元する。
図8は、クライアント装置50の処理を示すフローチャートである。クライアント装置50は、アプリケーションからデータベースの操作の指示を受けた場合、図8に示す処理を実行する。
まず、クライアント装置50は、操作情報を生成する(ステップS31)。続いて、クライアント装置50は、識別子を生成する(ステップS32)。続いて、クライアント装置50は、操作情報に識別子を付加したメッセージを生成する(ステップS33)。続いて、クライアント装置50は、マスターのサーバ装置30にメッセージを送信する(ステップS34)。
続いて、クライアント装置50は、マスターのサーバ装置30から、操作情報に応じた処理が成功したことを表す結果を受信したか否かを判断する(ステップS35)。クライアント装置50は、成功したことを表す結果を受信していない場合(S35のNo)、操作情報を送信してから所定時間を経過してタイムアウトしたか、または、操作情報に応じた処理が失敗したことを表す結果を受信したかを判断する(ステップS36)。クライアント装置50は、タイムアウトもしておらず、失敗したことを表す結果も受信していない場合(S36のNo)、ステップS35に処理を戻して、ステップS35とステップS36の処理を繰り返す。
成功したことを表す結果を受信した場合(S35のYes)、クライアント装置50は、アプリケーションにデータベースの操作が成功したことを通知して(ステップS37)、本フローを終了する。
タイムアウトまたは失敗したことを表す結果を受信した場合(S36のYes)、クライアント装置50は、最初に操作情報を送信してから、フェイルオーバタイムを経過したか否かを判断する(ステップS38)。フェイルオーバタイムを経過した場合(S38のYes)、クライアント装置50は、アプリケーションにデータベースの操作が失敗したことを通知して(ステップS39)、本フローを終了する。
フェイルオーバタイムを経過していない場合(S38のNo)、クライアント装置50は、調停装置40にマスターのサーバ装置30を問い合わせる(ステップS40)。続いて、クライアント装置50は、問い合わせをして得られたマスターのサーバ装置30に、同一のメッセージ、すなわち、同一の識別子が付加された同一の操作情報を送信する(ステップS41)。クライアント装置50は、ステップS41を終えると、処理をステップS35に戻し、処理を繰り返す。
図9は、マスターのサーバ装置30の処理を示すフローチャートである。マスターのサーバ装置30は、クライアント装置50からメッセージ(識別子が付加された操作情報)を受信した場合、図9に示す処理を実行する。
まず、操作部72は、識別子記憶部62に記憶されている識別子のリストから、フェイルオーバタイム前の時点より前の識別子を削除する(ステップS51)。これにより、操作部72は、識別子記憶部62から不要な識別子を削除してメモリ容量を効率良く使用することができる。
続いて、操作部72は、クライアント装置50から受信した操作情報の識別子が、識別子記憶部62に記憶されているか否かをチェックする(ステップS52)。操作情報の識別子が、識別子記憶部62に記憶されている場合(S52のYes)、操作部72は、何ら処理を実行しない。そして、この場合(S52のYes)、結果送信部75は、受信した操作情報に応じた処理が成功したことを表す結果をクライアント装置50に送信して(ステップS58)、本フローを終了する。
受信した操作情報の識別子が識別子記憶部62に記憶されていない場合(S52のNo)、操作部72は、受信した操作情報の識別子を識別子記憶部62に記憶させる(ステップS53)。この場合において、操作部72は、時刻情報を識別子に付加する。時刻は、例えば、操作情報を受信した時刻である。これにより、操作部72は、フェイルオーバタイム前の時点より前に受信した識別子を、識別子記憶部62から削除することができる。
続いて、操作部72は、受信した操作情報に応じて、データ保存部61に記憶されたデータベースを操作する(ステップS54)。
続いて、ログ処理部73は、データベースの操作によって生じたデータベースの変更のログを生成する(ステップS55)。この場合、ログ処理部73は、データベースの変更のログに、操作情報の識別子を付加する。そして、ログ処理部73は、識別子が付加されたログをログ保存部63に記憶させる。
続いて、第1レプリケーション部74は、スレーブのサーバ装置30との間でレプリケーションを実行する(ステップS56)。具体的には、第1レプリケーション部74は、スレーブのサーバ装置30に識別子が付加されたログを送信して、スレーブのサーバ装置30からレプリケーションが成功したことを表す結果を受信する。
続いて、操作部72は、データ保存部61に記憶されているデータベースを書き換えて、データベースの操作により生じたデータベースの変更を確定する(ステップS57)。そして、結果送信部75は、操作情報に応じた処理が成功したことを表す結果をクライアント装置50に送信して(ステップS58)、本フローを終了する。
なお、ステップS52からステップS58までの何れかの処理が成功しなかった場合、結果送信部75は、操作情報に応じた処理が失敗したことを表す結果をクライアント装置50に送信して、本フローを終了する。この場合、操作部72およびログ処理部73は、実行した処理をロールバックして、データ保存部61およびログ保存部63を操作情報の受信前の状態に戻す。
図10は、スレーブのサーバ装置30の処理を示すフローチャートである。スレーブのサーバ装置30は、マスターのサーバ装置30からレプリケーションの実行要求を受信した場合、図10に示す処理を実行する。
まず、第2レプリケーション部76は、マスターのサーバ装置30から識別子が付加されたログを受信する(ステップS61)。続いて、第2レプリケーション部76は、マスターのサーバ装置30から受信したログを、識別子が付加された状態でログ保存部63に記憶させる(ステップS62)。続いて、第2レプリケーション部76は、識別子記憶部62に記憶されている識別子のリストから、フェイルオーバタイム前の時点より前の識別子を削除する(ステップS63)。
続いて、第2レプリケーション部76は、マスターのサーバ装置30から受信したログに付加されていた識別子を、識別子記憶部62に記憶させる(ステップS64)。この場合において、第2レプリケーション部76は、時刻情報を識別子に付加する。時刻情報は、例えば、識別子が付加されていた操作情報の受信時刻である。これにより、第2レプリケーション部76は、フェイルオーバタイム前の時点より前に受信した識別子を、識別子記憶部62から削除することができる。
続いて、第2レプリケーション部76は、マスターのサーバ装置30から受信したログに応じて、データ保存部61に記憶されているデータベースを変更する(ステップS65)。データベースの変更が成功した場合、第2レプリケーション部76は、マスターのサーバ装置30にレプリケーションが成功したことを表す結果を返信して(ステップS66)、本フローを終了する。
図11は、リカバリ時のサーバ装置30の処理を示すフローチャートである。サーバ装置30は、例えば、ネットワークのエラー等により再起動した場合、図11に示すリカバリ処理を実行する。
まず、リカバリ部77は、ログ保存部63から、データベースの変更のログを読み出す(ステップS71)。なお、リカバリ部77は、データ保存部61に記憶されたデータベースのイメージを定期的に取得して例えば不揮発性の記憶装置に記憶させている場合には、最新のデータベースのイメージも読み出す。この場合、リカバリ部77は、最新のデータベースのイメージを取り込んだ時点から後のログを読み出せばよい。
続いて、リカバリ部77は、読み出したログに基づき、データ保存部61に記憶されたデータベースを障害発生時の状態に復元する(ステップS72)。リカバリ部77は、一例として、最新のデータベースのイメージをログに基づき順次に更新することにより、データベースを障害発生時の状態に復元する。
続いて、リカバリ部77は、ログ保存部63に記憶されたログの識別子に基づき、識別子記憶部62に記憶された識別子のリストを復元する(ステップS73)。そして、ステップS73の処理が完了した場合、リカバリ部77は、本フローを終了する。
図12は、データベースの操作時の処理の流れを示す図である。データベースシステム10は、データベースを操作する場合、図12に示す流れで処理を進める。
まず、クライアント装置50は、識別子(例えば#11)を付加した操作情報をマスターのサーバ装置30に送信する(ステップS111)。続いて、マスターのサーバ装置30の情報処理部64は、受信した操作情報の識別子が、識別子記憶部62に記憶されているか否かをチェックする(ステップS112)。操作情報の識別子が、識別子記憶部62に記憶されていない場合、情報処理部64は、受信した操作情報の識別子を識別子記憶部62に記憶させる(ステップS113)。
続いて、マスターのサーバ装置30の情報処理部64は、操作情報に応じて、データ保存部61に記憶されたデータベースを操作する(ステップS114)。続いて、マスターのサーバ装置30の情報処理部64は、データベースの変更のログを生成して、ログ保存部63に記憶させる(ステップS115)。この場合、情報処理部64は、ログに操作情報の識別子を付加する。
続いて、マスターのサーバ装置30の情報処理部64は、スレーブのサーバ装置30の情報処理部64に、識別子が付加されたログを送信する(ステップS116)。続いて、スレーブのサーバ装置30の情報処理部64は、受信したログを、識別子が付加された状態でログ保存部63に記憶させる(ステップS117)。続いて、スレーブのサーバ装置30の情報処理部64は、受信したログに付加されていた識別子を、識別子記憶部62に記憶させる(ステップS118)。続いて、スレーブのサーバ装置30の情報処理部64は、受信したログに応じて、データ保存部61に記憶されているデータベースを変更する(ステップS119)。そして、スレーブのサーバ装置30の情報処理部64は、マスターのサーバ装置30にレプリケーションが成功したことを表す処理結果を送信する(ステップS120)。
続いて、マスターのサーバ装置30の情報処理部64は、データ保存部61内のデータベースに変更内容を書き込むことにより、データベースの操作により生じたデータベースの変更を確定する(ステップS121)。そして、マスターのサーバ装置30の情報処理部64は、操作情報に応じた処理が成功したこと表す結果をクライアント装置50に送信する(ステップS122)。
図13は、故障時の処理の流れを示す図である。データベースシステム10は、マスターのサーバ装置30が故障した場合、図13に示す流れで処理を進める。
マスターのサーバ装置30が故障した場合、調停装置40は、何れか1つのスレーブのサーバ装置30を、マスターに変更する(ステップS131)。続いて、クライアント装置50は、識別子(例えば#12)を付加した操作情報を、元のマスターのサーバ装置30に送信する(ステップS132)。しかし、元のマスターのサーバ装置30は、故障しているので、処理結果を返信できない。
クライアント装置50は、操作情報を送信してから所定時間が経過することによりタイムアウトすると、調停装置40にマスターのサーバ装置30を問い合わせる(ステップS133)。調停装置40は、クライアント装置50に対して、新たなマスターのサーバ装置30を回答する(ステップS134)。
図14は、未処理の操作情報を、スレーブからマスターに変更されたサーバ装置30に再送信した場合の処理の流れを示す図である。クライアント装置50が未処理の操作情報をスレーブからマスターに変更されたサーバ装置30に再送信する場合、データベースシステム10は、図13の処理に続いて、図14に示す流れで処理を進める。
まず、クライアント装置50は、識別子(例えば#12)を付加した操作情報を、新たなマスターのサーバ装置30に再送信する(ステップS135)。この場合において、クライアント装置50は、元のマスターのサーバ装置30へと送信した操作情報および識別子と同一の操作情報および識別子を再送信する。
続いて、新たなマスターのサーバ装置30の情報処理部64は、受信した操作情報の識別子が、識別子記憶部62に記憶されているか否かをチェックする(ステップS136)。本例では、サーバ装置30が未処理であるので、識別子記憶部62は、操作情報の識別子(#12)を記憶していない。
続いて、新たなマスターのサーバ装置30の情報処理部64は、受信した操作情報の識別子を識別子記憶部62に記憶させる(ステップS137)。続いて、新たなマスターのサーバ装置30の情報処理部64は、操作情報に応じて、データ保存部61に記憶されたデータベースを操作する(ステップS138)。続いて、新たなマスターのサーバ装置30の情報処理部64は、データベースの変更のログを生成して、ログ保存部63に記憶させる(ステップS139)。
続いて、新たなマスターのサーバ装置30の情報処理部64は、データベースの操作により生じたデータベースの変更を確定する(ステップS140)。そして、マスターのサーバ装置30の情報処理部64は、操作情報に応じた処理が成功したことを表す結果をクライアント装置50に送信する(ステップS141)。なお、スレーブのサーバ装置30が設定されている場合には、マスターのサーバ装置30およびスレーブのサーバ装置30は、レプリケーションを実行する。
図15は、処理済みの操作情報を、スレーブからマスターに変更されたサーバ装置30に再送信した場合の処理の流れを示す図である。
レプリケーションが完了した場合、スレーブのサーバ装置30のデータ保存部61には、操作情報に応じた変更が完了した後のデータベースが記憶されている。また、スレーブのサーバ装置30の識別子記憶部62には、クライアント装置50が送信した操作情報の識別子(例えば#12)が記憶されている。
しかし、レプリケーションが完了した後、クライアント装置50に成功の返信をする前に、マスターのサーバ装置30が故障したとする。この場合、クライアント装置50は、新たなマスターのサーバ装置30に、同一の識別子(例えば#12)を付加した同一の操作情報を再送信する(ステップS151)。
この場合、元はスレーブであった新たなマスターのサーバ装置30の識別子記憶部62には、操作情報の識別子(#12)が既に記憶されている(ステップS152)。従って、情報処理部64は、データ保存部61に記憶されているデータベースに対しては、何ら処理を実行しない。そして、新たなマスターのサーバ装置30の情報処理部64は、受信した操作情報に応じた処理が成功したことを表す結果をクライアント装置50に送信する(ステップS153)。
図16は、マスターのサーバ装置30が再起動して、再度マスターに設定された場合の処理の流れを示す図である。
ログの生成および記憶が完了した場合、マスターのサーバ装置30のログ保存部63には、操作情報に応じたデータベースの変更のログが記憶されている。しかし、ログの記憶が完了した後、クライアント装置50に成功したことを表す結果を送信する前に、マスターのサーバ装置30のネットワークが例えば一時的に切断されたとする。この場合、マスターのサーバ装置30は、シャットダウンした後に再起動をする。
サーバ装置30の情報処理部64は、再起動をした場合、ログ保存部63に記憶されているログを読み出して、データ保存部61に記憶されているデータベースを再起動直前の状態に復元する(ステップS161)。さらに、サーバ装置30の情報処理部64は、再起動をした場合、ログ保存部63に記憶されているログに付加されている識別子を読み出して、識別子記憶部62に記憶されている識別子のリストを、再起動の直前の状態に復元する(ステップS162)。
また、調停装置40は、マスターのサーバ装置30が再起動した場合、再度、マスターおよびスレーブの設定を行う。この場合において、調停装置40は、同一のサーバ装置30をマスターとして設定してもよい。
図17は、処理済みの操作情報を、再起動後に再度マスターに設定されたサーバ装置30に再送信した場合の処理の流れを示す図である。
例えば、ある識別子(#14)の操作情報に応じたデータベースの変更のログの生成および記憶が完了した場合、マスターのサーバ装置30のログ保存部63には、そのログが記憶されている。また、マスターのサーバ装置30の識別子記憶部62には、クライアント装置50が送信した操作情報の識別子(例えば#14)が記憶されている。
しかし、ログの記憶が完了した後、成功したことを表す結果を送信する前に、マスターのサーバ装置30がシャットダウンし、その後、再起動し、再度マスターに設定されたとする。この場合、クライアント装置50は、マスターのサーバ装置30に、同一の識別子(例えば#14)を付加した同一の操作情報を再送信する(ステップS163)。
この場合、マスターのサーバ装置30の識別子記憶部62には、操作情報の識別子(#14)が復元により記憶されている(ステップS164)。従って、情報処理部64は、データ保存部61に記憶されているデータベースに対しては、何ら処理を実行しない。そして、マスターのサーバ装置30の情報処理部64は、受信した操作情報に応じた処理が成功したことを表す結果をクライアント装置50に送信する(ステップS165)。
以上のように、本実施形態に係るデータベースシステム10によれば、操作情報に付加された識別子をデータベースの変更のログに付加して記憶させておくので、クライアント装置50から同一の操作情報が再送信された場合に重複実行を無くすことができる。例えば、データベースシステム10によれば、サーバ装置30がスレーブからマスターに変更された場合、または、マスターのサーバ装置30が再起動した後に再度マスターに設定された場合であっても、操作情報に付加された識別子をログから復元することができるので、クライアント装置50から同一の操作情報が再送信された場合に重複実行を無くすことができる。
図18は、実施形態に係る情報処理装置200のハードウェア構成を示す図である。サーバ装置30、調停装置40およびクライアント装置50は、例えば図18に示すようなハードウェア構成の情報処理装置200により実現される。
この情報処理装置200は、CPU(Central Processing Unit)201と、RAM(Random Access Memory)202と、ROM(Read Only Memory)203と、操作入力装置204と、表示装置205と、記憶装置206と、通信装置207とを備える。そして、これらの各部は、バスにより接続される。
CPU201は、プログラムに従って演算処理および制御処理等を実行するプロセッサである。CPU201は、RAM202の所定領域を作業領域として、ROM203および記憶装置206等に記憶されたプログラムとの協働により各種処理を実行する。
RAM202は、SDRAM(Synchronous Dynamic Random Access Memory)等のメモリである。RAM202は、CPU201の作業領域として機能する。ROM203は、プログラムおよび各種情報を書き換え不可能に記憶するメモリである。
操作入力装置204は、マウスおよびキーボード等の入力デバイスである。操作入力装置204は、ユーザから操作入力された情報を指示信号として受け付け、指示信号をCPU201に出力する。
表示装置205は、LCD(Liquid Crystal Display)等の表示デバイスである。表示装置205は、CPU201からの表示信号に基づいて、各種情報を表示する。
記憶装置206は、フラッシュメモリ等の半導体による記憶媒体、または、磁気的若しくは光学的に記録可能な記憶媒体等にデータを書き込みおよび読み出しをする装置である。記憶装置206は、CPU201からの制御に応じて、記憶媒体にデータの書き込みおよび読み出しをする。通信装置207は、CPU201からの制御に応じて外部の機器とネットワークを介して通信する。
サーバ装置30で実行されるプログラムは、操作受信モジュール、操作モジュール、ログ処理モジュール、第1レプリケーションモジュール、結果送信モジュール、第2レプリケーションモジュールおよびリカバリモジュールを含むモジュール構成となっている。このプログラムは、CPU201(プロセッサ)によりRAM202上に展開して実行されることにより、情報処理装置200を、操作受信部71、操作部72、ログ処理部73、第1レプリケーション部74、結果送信部75、第2レプリケーション部76およびリカバリ部77として機能させる。なお、サーバ装置30は、このような構成に限らず、操作受信部71、操作部72、ログ処理部73、第1レプリケーション部74、結果送信部75、第2レプリケーション部76およびリカバリ部77の少なくとも一部をハードウェア回路(例えば半導体集積回路)により実現した構成であってもよい。
クライアント装置50で実行されるプログラムは、操作情報生成モジュール、識別子生成モジュール、操作送信モジュールおよび結果受信モジュールを含むモジュール構成となっている。このプログラムは、CPU201(プロセッサ)によりRAM202上に展開して実行されることにより、情報処理装置200を操作情報生成部51、識別子生成部52、操作送信部53および結果受信部54として機能させる。なお、クライアント装置50は、このような構成に限らず、操作情報生成部51、識別子生成部52、操作送信部53および結果受信部54の少なくとも一部をハードウェア回路(例えば半導体集積回路)により実現した構成であってもよい。
また、サーバ装置30またはクライアント装置50で実行されるプログラムは、コンピュータにインストール可能な形式または実行可能な形式のファイルで、CD−ROM、フレキシブルディスク、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
また、サーバ装置30またはクライアント装置50で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、サーバ装置30またはクライアント装置50で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。また、サーバ装置30またはクライアント装置50で実行されるプログラムを、ROM等に予め組み込んで提供するように構成してもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。

Claims (13)

  1. それぞれがデータベースを記憶し、1つがマスターとして動作し、少なくとも1つが前記マスターをバックアップするスレーブとして動作する複数のサーバ装置と、
    前記データベースに対する操作を指示する操作情報を前記マスターのサーバ装置に送信するクライアント装置と、
    を備えるデータベースシステムであって、
    前記クライアント装置は、前記操作情報に、前記操作情報を識別する識別子を付加し、
    前記複数のサーバ装置のそれぞれは、
    前記データベースを記憶するデータ保存部と、
    前記識別子のリストを記憶する識別子記憶部と、
    前記データベースの変更のログを記憶するログ保存部と、
    前記クライアント装置から受信した前記操作情報に応じて、前記データ保存部に記憶されている前記データベースを変更し、前記操作情報に応じて前記データベースを変更する場合、前記操作情報の前記識別子を前記識別子記憶部に記憶させる操作部と、
    前記操作情報に応じて前記データベースを変更する場合、前記操作情報の前記識別子を付加したログを前記ログ保存部に記憶させるログ処理部と、
    再起動がされた場合、前記ログ保存部に記憶されたログに基づき、前記データ保存部に記憶された前記データベースを復元するとともに、前記ログ保存部に記憶されたログに付加された前記識別子に基づき、前記識別子記憶部に記憶された前記識別子のリストを復元するリカバリ部と、
    を備え、
    前記操作部は、前記クライアント装置から受信した前記操作情報の前記識別子が、前記識別子記憶部に記憶されている場合、受信した前記操作情報に応じた前記データベースの変更を実行しない
    データベースシステム。
  2. 前記複数のサーバ装置のそれぞれは、
    前記識別子が付加された前記ログを前記スレーブのサーバ装置に送信する第1レプリケーション部と、
    前記マスターのサーバ装置から前記識別子が付加された前記ログを受信し、前記マスターのサーバ装置から受信した前記ログに応じて、前記データ保存部に記憶されている前記データベースを変更する第2レプリケーション部と、
    をさらに有し、
    前記第2レプリケーション部は、前記ログに応じて前記データベースを変更する場合、前記ログの前記識別子を前記識別子記憶部に記憶させる
    請求項1に記載のデータベースシステム。
  3. 前記クライアント装置は、同一の前記操作情報を前記マスターのサーバ装置に再送信する場合、同一の前記識別子を前記操作情報に付加する
    請求項1または2に記載のデータベースシステム。
  4. 前記操作部は、現時点から一定時間前の時点より前に受信した前記操作情報の前記識別子を、前記識別子記憶部から削除する
    請求項3に記載のデータベースシステム。
  5. 前記クライアント装置は、送信した前記操作情報に応じた前記データベースの変更が成功しなかった場合、前記操作情報を送信してから前記一定時間を経過していないことを条件として、同一の前記操作情報を前記マスターのサーバ装置に再送信する
    請求項4に記載のデータベースシステム。
  6. 前記複数のサーバ装置のうちの1つを前記マスターのサーバ装置に設定する調停装置をさらに備え、
    前記クライアント装置は、送信した前記操作情報に応じた変更が成功しなかった場合、前記調停装置から通知された前記マスターのサーバ装置に同一の前記操作情報を再送信する
    請求項5に記載のデータベースシステム。
  7. 前記ログ保存部は、前記マスターのサーバ装置から受信した前記ログを記憶する
    請求項2から6の何れか1項に記載のデータベースシステム。
  8. 前記複数のサーバ装置のそれぞれは、前記クライアント装置から受信した前記操作情報の前記識別子が、前記識別子記憶部に記憶されている場合、受信した前記操作情報に応じた処理が成功したことを表す結果を前記クライアント装置に送信する結果送信部をさらに有する
    請求項2から7の何れか1項に記載のデータベースシステム。
  9. 前記クライアント装置は、前記操作情報を生成する毎にユニークな前記識別子を生成する
    請求項1から8の何れか1項に記載のデータベースシステム。
  10. 前記クライアント装置は、他の装置から受信した情報に基づく前記識別子を前記操作情報に付加する
    請求項1から8の何れか1項に記載のデータベースシステム。
  11. それぞれがデータベースを記憶し、1つがマスターとして動作し、少なくとも1つが前記マスターをバックアップするスレーブとして動作する複数のサーバ装置と、
    前記データベースに対する操作を指示する操作情報を前記マスターのサーバ装置に送信するクライアント装置と、
    を備えるデータベースシステムにおいて用いられる前記サーバ装置であって、
    前記クライアント装置は、前記操作情報に、前記操作情報を識別する識別子を付加し、
    前記サーバ装置は、
    前記データベースを記憶するデータ保存部と、
    前記識別子のリストを記憶する識別子記憶部と、
    前記データベースの変更のログを記憶するログ保存部と、
    前記クライアント装置から受信した前記操作情報に応じて、前記データ保存部に記憶されている前記データベースを変更し、前記操作情報に応じて前記データベースを変更する場合、前記操作情報の前記識別子を前記識別子記憶部に記憶させる操作部と、
    前記操作情報に応じて前記データベースを変更する場合、前記操作情報の前記識別子を付加したログを前記ログ保存部に記憶させるログ処理部と、
    再起動がされた場合、前記ログ保存部に記憶されたログに基づき、前記データ保存部に記憶された前記データベースを復元するとともに、前記ログ保存部に記憶されたログに付加された前記識別子に基づき、前記識別子記憶部に記憶された前記識別子のリストを復元するリカバリ部と、
    を備え、
    前記操作部は、前記クライアント装置から受信した前記操作情報の前記識別子が、前記識別子記憶部に記憶されている場合、受信した前記操作情報に応じた前記データベースの変更を実行しない
    サーバ装置。
  12. 情報処理装置を、請求項11に記載の前記サーバ装置として機能させるためのプログラム。
  13. それぞれがデータベースを記憶し、1つがマスターとして動作し、少なくとも1つが前記マスターをバックアップするスレーブとして動作する複数のサーバ装置と、
    前記データベースに対する操作を指示する操作情報を前記マスターのサーバ装置に送信するクライアント装置と、
    を備えるデータベースシステムにおいて実行される情報処理方法であって、
    前記クライアント装置が、前記操作情報に、前記操作情報を識別する識別子を付加し、
    前記サーバ装置が、前記クライアント装置から受信した前記操作情報に応じて、データ保存部に記憶されている前記データベースを変更し、前記操作情報に応じて前記データベースを変更する場合、前記操作情報の前記識別子を識別子記憶部に記憶させ、
    前記サーバ装置が、前記操作情報に応じて前記データベースを変更する場合、前記操作情報の前記識別子を付加したログをログ保存部に記憶させ、
    前記サーバ装置が、再起動がされた場合、前記ログ保存部に記憶されたログに基づき、前記データ保存部に記憶された前記データベースを復元するとともに、前記ログ保存部に記憶されたログに付加された前記識別子に基づき、前記識別子記憶部に記憶された前記識別子のリストを復元し、
    前記サーバ装置が、前記クライアント装置から受信した前記操作情報の前記識別子が、前記識別子記憶部に記憶されている場合、受信した前記操作情報に応じた前記データベースの変更を実行しない
    情報処理方法。
JP2017538762A 2015-09-08 2015-09-08 データベースシステム、サーバ装置、プログラムおよび情報処理方法 Active JP6556851B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/075507 WO2017042890A1 (ja) 2015-09-08 2015-09-08 データベースシステム、サーバ装置、プログラムおよび情報処理方法

Publications (2)

Publication Number Publication Date
JPWO2017042890A1 JPWO2017042890A1 (ja) 2018-02-15
JP6556851B2 true JP6556851B2 (ja) 2019-08-07

Family

ID=58239214

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017538762A Active JP6556851B2 (ja) 2015-09-08 2015-09-08 データベースシステム、サーバ装置、プログラムおよび情報処理方法

Country Status (4)

Country Link
US (1) US20180150501A1 (ja)
JP (1) JP6556851B2 (ja)
CN (1) CN107924362B (ja)
WO (1) WO2017042890A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107229455B (zh) * 2016-03-24 2019-09-17 阿里巴巴集团控股有限公司 一种业务处理方法、装置及系统
CN106897338A (zh) * 2016-07-04 2017-06-27 阿里巴巴集团控股有限公司 一种针对数据库的数据修改请求处理方法及装置
JP2019145925A (ja) * 2018-02-16 2019-08-29 株式会社bitFlyer ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法及び当該ネットワークを構成するためのノード
JP6467540B1 (ja) * 2018-03-10 2019-02-13 株式会社bitFlyer ブロックチェーン・ネットワークにおいてトランザクションを検証するための方法及び当該ネットワークを構成するためのノード
US11645261B2 (en) * 2018-04-27 2023-05-09 Oracle International Corporation System and method for heterogeneous database replication from a remote server
JP7179487B2 (ja) * 2018-05-10 2022-11-29 キヤノン株式会社 サーバ装置、制御方法及びプログラム
CN108958991B (zh) * 2018-07-26 2022-05-06 郑州云海信息技术有限公司 集群节点故障业务快速恢复方法、装置、设备及存储介质
CN109032849B (zh) 2018-08-30 2021-03-23 百度在线网络技术(北京)有限公司 热备份系统、热备份方法和计算机设备
JP7363049B2 (ja) * 2019-02-18 2023-10-18 日本電気株式会社 業務サービス提供システム、業務サービス復旧方法及び業務サービス復旧プログラム
US10812320B2 (en) * 2019-03-01 2020-10-20 At&T Intellectual Property I, L.P. Facilitation of disaster recovery protection for a master softswitch
EP4066443A1 (en) * 2019-11-29 2022-10-05 Telefonaktiebolaget Lm Ericsson (Publ) Server management
CN111414403B (zh) * 2020-03-20 2023-04-14 腾讯科技(深圳)有限公司 数据访问方法和装置、数据存储方法和装置
CN113515317A (zh) * 2020-03-25 2021-10-19 华为技术有限公司 数据恢复的方法、装置
CN112764996B (zh) * 2021-01-27 2023-01-17 上海英方软件股份有限公司 一种数据库容灾环境下对目标库的会话监控的方法及装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4945474A (en) * 1988-04-08 1990-07-31 Internatinal Business Machines Corporation Method for restoring a database after I/O error employing write-ahead logging protocols
JPH06259397A (ja) * 1993-03-04 1994-09-16 Hitachi Ltd 分散トランザクション処理システム
JP2941779B1 (ja) * 1998-05-07 1999-08-30 三菱電機株式会社 複数計算機間のデータベースレプリケーション制御方法
US6625750B1 (en) * 1999-11-16 2003-09-23 Emc Corporation Hardware and software failover services for a file server
JP4452533B2 (ja) * 2004-03-19 2010-04-21 株式会社日立製作所 システムおよび記憶装置システム
TWI416901B (zh) * 2005-11-30 2013-11-21 Ibm 故障容忍之異動處理系統
CN101459503A (zh) * 2007-12-12 2009-06-17 华为技术有限公司 一种实现数据同步的方法和装置
CN102033930A (zh) * 2010-12-17 2011-04-27 北京世纪互联工程技术服务有限公司 分布式内存数据库系统
CN102802143B (zh) * 2011-05-26 2015-05-27 华为软件技术有限公司 一种业务恢复方法、相关装置以及系统
JP2013191187A (ja) * 2012-03-15 2013-09-26 Fujitsu Ltd 処理装置,プログラム及び処理システム
JP2014038564A (ja) * 2012-08-20 2014-02-27 International Business Maschines Corporation データベースに対する処理を行うシステム及び方法
CN103838757B (zh) * 2012-11-26 2017-06-09 腾讯科技(深圳)有限公司 对用户的长关系链数据的处理系统和方法
US9628345B2 (en) * 2012-12-13 2017-04-18 Level 3 Communications, Llc Framework supporting content delivery with collector services network
CN103729300B (zh) * 2013-12-25 2017-11-28 华为技术有限公司 非易失内存的管理方法和相关装置
CN104516959B (zh) * 2014-12-18 2018-01-02 杭州华为数字技术有限公司 一种管理数据库日志的方法及装置

Also Published As

Publication number Publication date
WO2017042890A1 (ja) 2017-03-16
US20180150501A1 (en) 2018-05-31
CN107924362B (zh) 2022-02-15
CN107924362A (zh) 2018-04-17
JPWO2017042890A1 (ja) 2018-02-15

Similar Documents

Publication Publication Date Title
JP6556851B2 (ja) データベースシステム、サーバ装置、プログラムおよび情報処理方法
CN111258822B (zh) 数据处理方法、服务器和计算机可读存储介质
JP6748638B2 (ja) マルチテナントアプリケーションサーバ環境においてパッチングをサポートするためのシステムおよび方法
US9311199B2 (en) Replaying jobs at a secondary location of a service
EP2434729A2 (en) Method for providing access to data items from a distributed storage system
US8533525B2 (en) Data management apparatus, monitoring apparatus, replica apparatus, cluster system, control method and computer-readable medium
WO2014076838A1 (ja) 仮想マシン同期システム
CN112100005B (zh) 一种Redis副本集的实现方法及装置
CN106605217B (zh) 用于将应用从一个站点移动到另一站点的方法和系统
US8612799B2 (en) Method and apparatus of backing up subversion repository
US20190095189A1 (en) System and method for managed server independence for deployment of software applications and libraries
US9043283B2 (en) Opportunistic database duplex operations
JP2011210107A (ja) メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム
US9830263B1 (en) Cache consistency
CN111752488A (zh) 存储集群的管理方法、装置、管理节点及存储介质
CN111708668A (zh) 集群故障的处理方法、装置及电子设备
JPWO2014147817A1 (ja) 情報処理装置、プログラム更新方法、及びプログラム
CN113326251B (zh) 数据管理方法、系统、设备和存储介质
JP5900094B2 (ja) データ整合システム、データ整合方法およびデータ整合プログラム
CN106951443B (zh) 基于分布式系统的副本同步的方法、设备和系统
JP7355778B2 (ja) ストレージシステム、ストレージノード仮想計算機復旧方法、及び復旧プログラム
CN114968656A (zh) 一种数据回滚方法、装置、设备及介质
JP2015153285A (ja) 冗長化データベースシステム、データベース装置及びマスタ交代方法
JP6093320B2 (ja) 分散処理システム
CN115297129B (zh) 数据通信网络建立方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181211

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190206

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: 20190611

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190710

R150 Certificate of patent or registration of utility model

Ref document number: 6556851

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150