JP2012234333A - クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム - Google Patents

クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム Download PDF

Info

Publication number
JP2012234333A
JP2012234333A JP2011102109A JP2011102109A JP2012234333A JP 2012234333 A JP2012234333 A JP 2012234333A JP 2011102109 A JP2011102109 A JP 2011102109A JP 2011102109 A JP2011102109 A JP 2011102109A JP 2012234333 A JP2012234333 A JP 2012234333A
Authority
JP
Japan
Prior art keywords
information
record
log
unit
update
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
JP2011102109A
Other languages
English (en)
Other versions
JP5686034B2 (ja
Inventor
Koichi Miura
浩一 三浦
Kiyoshi Nakanouchi
清志 中野内
Daisuke Shimabayashi
大祐 島林
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 JP2011102109A priority Critical patent/JP5686034B2/ja
Priority to US13/364,527 priority patent/US20120278429A1/en
Publication of JP2012234333A publication Critical patent/JP2012234333A/ja
Application granted granted Critical
Publication of JP5686034B2 publication Critical patent/JP5686034B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2041Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2048Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share neither address space nor persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Abstract

【課題】新たにクラスタシステムに組み込んだサーバのデータ同期が完了するまでの時間を短縮することを課題とする。
【解決手段】クラスタシステムは、現用系サーバと組み込みサーバとを有し、クライアントのデータと該データの所在を示す情報とレコードの状況を示す情報とをレコードとして記憶するDBを各サーバが有する。現用系サーバは、DBが有するレコードを第1の情報として第1の情報を示す種別の情報と共に組み込みサーバに送信するとともに、レコードの更新が発生した場合には、更新されたレコードを第2の情報として第2の情報を示す種別の情報と共に組み込みサーバに送信する。組み込みサーバは、現用系サーバから第1の情報または第2の情報を受信する。そして、組み込みサーバは、受信した種別の情報と、前記受信した情報によって特定されるDBのレコードの状況とに応じて、受信した情報に基づいたレコードをDBに生成する。
【選択図】図1

Description

本発明は、クラスタシステム、同期制御方法、サーバ装置および同期制御プログラムに関する。
従来、クライアントなどにサービスを提供するシステムでは、サービスを提供する現用系サーバで故障等が発生した場合に、待機系サーバでサービスを継続的に提供する。このようなシステムの一例としては、現用系サーバと待機系サーバで共有する共有ディスクを用いずに、各サーバでディスクを保持してデータをミラーリングするクラスタシステム(以下、ミラーリングクラスタと表記する)が知られている。
例えば、ミラーリングクラスタでは、待機系サーバが新たな現用系サーバとして起動した場合に、新たな待機系サーバ(以下、組み込みサーバと表記する)をクラスタに組み込む。この場合、新たな現用系サーバが保持するデータと組み込みサーバが保持するデータとを同期する必要がある。
データを同期する手法としては、現用系サーバのデータを外部の記録媒体にバックアップしておき、組み込みサーバにリストアする手法が知られている。また、レプリケーションやデュプリケーション等の手法も知られている。ところが、これらの手法は、データの同期が完了するまでの間、アプリケーションを停止させることになるので、24時間サービスを停止できないシステムには適用できない。
そして、アプリケーションを停止させることなくデータ同期させる手法としては、データを同期させる同期フェーズと、同期フェーズ中に更新されたデータを更新する更新フェーズとの2フェーズで、データ同期を実行する手法が知られている。
例えば、同期フェーズでは、データが空である組み込みサーバに対して、現用系サーバからデータを送信する。この同期フェーズ実行中に更新されたデータについては、各サーバに適用せずに、現用系サーバまたは組み込みサーバに蓄積させておく。そして、同期フェーズ完了後、更新データを蓄積するサーバが、自サーバに更新データを適用するとともに他のサーバに更新データを送信して、データの同期を完了する。
また、別の手法としては、データベースのデータ構造に依存することなく、実用上オンラインサービスを停止させずにデータベースを移行するデータベースの再編成技術も知られている。このデータベースの再編成技術は、データのコピー中にコピー済のデータに対する物理位置を指定したデータ更新アクセスがあると、現用データベースと切替先データベースとに対してデータ更新処理を行う。そして、データベースの再編成技術は、コピー完了後にオンライン電文の振り分け先を切替先データベースアクセス手段に切り替える。
特開2009−199197号公報 特開2005−327015号公報 特開2009−157785号公報 特開2005−316624号公報 特開2007−41888号公報
しかしながら、従来の技術では、新たにクラスタシステムに組み込んだサーバのデータ同期が完了するまでに時間がかかるという問題がある。
例えば、上述した2フェーズでデータ同期する手法やデータベースの再編成技術を銀行や証券などの大規模システムに適用した場合について説明する。具体的には、管理対象のデータ数が膨大なクラスタシステムや、待機系サーバが複数台存在するような大規模クラスタシステムに組み込みサーバを追加する例で説明する。
2フェーズ手法の場合、管理対象のデータ数が膨大なクラスタシステムでは、現用系サーバから組み込みサーバに全データを送信して同期させるだけでも時間がかかる。さらに、この手法では、管理対象のデータ同期後に、同期中に更新されたデータの同期を続けて実行する。したがって、現用系サーバが管理するデータ数に加えて、データ送信中に更新された件数分のデータを同期することになるので、管理対象のデータ数が膨大なシステムやデータ更新頻度が多いシステムの場合には、同期完了までに時間がかかる。
また、再編成技術の場合、現用系サーバが、各待機系サーバが保持するデータベースおよび組み込みサーバが保持するデータベース各々に対して、同期対象のデータを書き込む。そして、現用系サーバは、各データベースへのデータ書き込みが完了すると、書き込み処理をコミットして、次のデータの書き込みを実行する。つまり、再編成技術の場合、データ1つずつに対して、データの複写状態の確認、データの書き込み、コミットなどを実行することで、データ同期を実行することになる。すなわち、待機系サーバの台数が多い場合には、現用系サーバの処理負荷が高くなる。また、1データずつデータ書き込み処理を実行する、つまり1トランザクションずつコミットした上で各データの同期処理を実行するので、データ書き込み処理に時間がかかる。したがって、これらの場合には、組み込みサーバの同期完了までに時間がかかる。
1つの側面では、新たにクラスタシステムに組み込んだサーバのデータ同期が完了するまでの時間を短縮できるクラスタシステム、同期制御方法、サーバ装置および同期制御プログラムを提供することを目的とする。
第1の案では、クラスタシステムは、第1のサーバ装置と第2のサーバ装置とを有し、クライアントのデータを記憶する記憶部を各サーバ装置が有する。前記第1のサーバ装置は、前記記憶部が有するレコードを第1の情報として第1の情報を示す種別の情報と共に前記第2のサーバ装置に送信するとともに、前記レコードの更新が発生した場合には、更新されたレコードを第2の情報として第2の情報を示す種別の情報と共に前記第2のサーバ装置に送信する送信部を有する。前記第2のサーバ装置は、前記第1のサーバ装置から前記第1の情報または前記第2の情報を受信する受信部を有する。そして、前記第2のサーバ装置は、前記受信部によって受信した種別の情報と、前記受信した情報によって特定される前記記憶部のレコードの状況とに応じて、前記受信した情報のレコードを前記記憶部に生成する生成部を有する。
新たにクラスタシステムに組み込んだサーバのデータ同期が完了するまでの時間を短縮できる。
図1は、実施例1に係るクラスタシステムの全体構成例を示す図である。 図2は、実施例2に係る現用系サーバの構成を示す機能ブロック図である。 図3は、記憶部が有するレコードのデータ構造例を示す図である。 図4は、現用系サーバが送信するログのデータ構造例を示す図である。 図5は、実施例2に係る待機系サーバの構成を示す機能ブロック図である。 図6は、待機系サーバの更新ログおよび同期ログの適用判定基準の例を示す図である。 図7は、実施例2に係る組み込みサーバの構成を示す機能ブロック図である。 図8は、組み込みサーバの更新ログおよび同期ログの適用判定基準の例を示す図である。 図9は、実施例2に係る現用系サーバが実行する更新ログ送信処理の流れを示すフローチャートである。 図10は、実施例2に係る現用系サーバが実行する同期ログ送信処理の流れを示すフローチャートである。 図11は、実施例2に係る待機系サーバが実行する処理の流れを示すフローチャートである。 図12は、実施例2に係る組み込みサーバが実行する処理の流れを示すフローチャートである。 図13は、同期制御プログラムを実行するコンピュータのハードウェア構成の例を示す図である。
以下に、本願の開示するクラスタシステム、同期制御方法、サーバ装置および同期制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、実施例1に係るクラスタシステムの全体構成例を示す図である。図1に示すように、このシステムは、クライアント装置1、クライアント装置2、クライアント装置3、クラスタシステム5、組み込みサーバ50がインターネットなどのネットワーク等で通信可能に接続されている。
クライアント装置1、クライアント装置2、クライアント装置3は、エンドユーザが使用するコンピュータ装置であり、クラスタシステム5の現用系サーバ10に対して、データの書き込みやデータの読み出しを実行する。また、ここでは、各クライアント装置がエンドユーザのコンピュータ装置である例を示したが、これに限定されるものではなく、例えばWebサーバやアプリケーションサーバなどのサーバ装置であってもよい。
クラスタシステム5は、現用系サーバ10と、複数の待機系サーバ20−1から20−n(n:自然数)とを有し、無停止運転を実現して、各クライアント装置のデータを記憶するシステムである。このクラスタシステム5は、現用系サーバ10が保持するデータベースと各待機系サーバが保持するデータベースとがミラー化されている。例えば、現用系サーバ10は、データ更新された場合には、更新データを各待機系サーバに送信し、各待機系サーバは、更新データで自装置のデータベースを更新する。
また、クラスタシステム5では、現用系サーバ10でハードウェア故障やネットワーク障害等が発生した場合に、自動で待機系サーバに切り替り、クライアント装置へのサービスを継続する。例えば、現用系サーバ10で障害が発生した場合には、待機系サーバ20−1が現用系サーバに昇格する。なお、障害の検出、待機系サーバの現用系サーバへの昇格等の手法については、クラスタシステムに利用される一般的なソフトウェア等を用いることができる。
また、本実施例では、クラスタシステム5が有する各サーバは、クライアントのデータを管理するデータベースサーバとして説明するが、これに限定されるものではなく、データベースの同期を実行するWebサーバやアプリケーションサーバであってもよい。
現用系サーバ10は、クライアントのデータと該データの所在を示す情報とレコードの状況を示す情報とをレコードとしてDB10aを有し、各クライアント装置から各種要求を受信して応答するデータベースサーバである。例えば、現用系サーバ10は、クライアント装置1からデータ検索要求を受信した場合に、DB10aから該当するデータを検索し、検索結果をクライアント装置1に応答する。また、現用系サーバ10は、クライアント装置1からデータ更新要求を受信した場合に、DB10aから該当するデータを検索してデータを更新し、更新結果をクライアント装置1に応答する。
この現用系サーバ10は、送信部10bを有し、クラスタシステム5に新たなサーバである組み込みサーバ50が組み込まれた場合に、データベースの同期を実行する。具体的には、送信部10bは、DB10aが有するレコードを第1の情報として第1の情報を示す種別の情報と共に組み込みサーバ装置50に送信するとともに、レコードの更新が発生した場合には、更新されたレコードを第2の情報として第2の情報を示す種別の情報と共に第2の情報を組み込みサーバ装置50に送信する。
待機系サーバ20−1から待機系サーバ20−n各々は、現用系サーバ10の待機系として動作するデータベースサーバである。この待機系サーバ20−1から待機系サーバ20−n各々は、現用系サーバ10と同期の取れたデータベースを有する。なお、待機系サーバが現用系サーバに昇格する順番等についてはユーザが任意に設定できる。また、このクラスタシステム5の信頼性を向上させるために、2台以上の待機系サーバを有することが好ましい。
組み込みサーバ50は、クラスタシステム5に新たに組み込まれたサーバであり、DB50aと受信部50bと生成部50cとを有し、クラスタシステム5に組み込まれるとデータベースの同期処理を実行する。
DB50aは、クラスタシステム5への組み込み時には空のデータベースであり、同期処理の実行後に、現用系サーバ10のデータベース10aと同期の取れたデータを記憶する。受信部50bは、現用系サーバ10から第1の情報または第2の情報を受信する。生成部50cは、受信部50bによって受信した種別の情報と、受信した情報によって特定されるDB50aのレコードの状況とに応じて、受信した情報を破棄するまたは受信した情報をDB50aに適用する。
このように、現用系サーバ10は、クラスタシステム5に新たに組み込まれた組み込みサーバ50とのDB同期に関して、DBの情報である第1の情報とDBの更新情報である第2の情報とをシリアライズなしに、並行して送信する。組み込みサーバ50では、受信したログからDB50aへの適用可否を判断して処理する。この結果、新たにシステムに組み込んだ待機系サーバのデータ同期が完了するまでの時間を短縮できる。
次に、図1に示したクラスタシステム5が有する各装置の構成例、各装置が実行する処理の流れ等について説明する。なお、待機系サーバ20−1から待機系サーバ20−nは、同様の構成を有するので、ここでは待機系サーバ20として説明する。
[現用系サーバの構成]
図2は、実施例2に係る現用系サーバの構成を示す機能ブロック図である。図2に示すように、現用系サーバ10は、通信インタフェース部11と記憶部12と制御部13とを有する。なお、現用系サーバ10が有する処理部は、図2に示したものに限定されるものではなく、例えばディスプレイなどの表示部やキーボードなどの入力部を有していてもよい。
通信インタフェース部11は、ネットワークインターフェースカードなどの通信モジュールであり、他の装置との間の通信を制御する。例えば、通信インタフェース部11は、各クライアント装置からデータ検索やデータ更新などの要求を受信して制御部13に出力し、制御部13から出力された応答をクライアント装置に送信する。また、通信インタフェース部11は、同期ログや更新ログを各待機系サーバと組み込みサーバ50に送信し、各サーバから応答を受信する。
記憶部12は、クライアントのデータが格納されるデータベースを少なくとも1つ保持する半導体メモリ素子やハードディスクなどの記憶装置である。図3は、記憶部12が有するデータベースが記憶するレコードのデータ構造例を示す図である。図3に示すように、記憶部12が有するデータベースは、「レコードID、管理領域、データ領域」を有するレコードで形成される。この「レコードID」は、DB12内のレコードを一意に特定する識別子であり、例えば位置情報やアドレスなどの情報である。
「管理領域」は、更新適用フラグとレコード情報とを有し、レコードの状態を示す管理情報である。「更新適用フラグ」は、更新ログが適用済みであるか否か、言い換えると、更新ログに基づいてレコード操作が実行されたか否かを示す情報であり、例えば適用済みの場合には「ON」、未適用の場合には「OFF」が格納される。「レコード情報」は、レコードすなわちユーザデータの存在を示す情報であり、例えばユーザデータが存在する場合には「レコード有り」、ユーザデータが存在しない場合には「レコード無し」が格納される。「データ領域」は、ユーザデータが格納されるデータ領域である。
制御部13は、送信制御部14とレコード更新部15とを有し、これらによってデータベースの同期処理を実行するFPGA(Field−Programmable Gate Array)などの集積回路やCPU(Central Processing Unit)などの電子回路である。この制御部13は、クラスタリングを実現するソフトウェアや、クラスタリングを実現するハードウェアを有する。また、制御部13は、クライアント装置から受信した各要求に対応した処理を実行する。例えば、制御部13は、クライアント装置からデータ読み出し要求を受信した場合には、当該読み出し要求に含まれるレコードIDやアドレス等を用いて、記憶部12が保持するデータベースから該当するレコードを取得してクライアント装置に応答する。
送信制御部14は、排他制御部14aと同期ログ送信部14bと更新ログ送信部14cとを有し、これらによってデータベースの同期処理を実行する処理部である。また、送信制御部14は、ネットワークを介して管理者から同期処理の開始指示を受信した場合や、クラスタシステム5に組み込みサーバ50が組み込まれたことを検出した場合に、同期処理を開始する。
排他制御部14aは、同期処理が開始されたタイミングでレコードの更新や追加が発生した場合に、同期ログの送信と更新処理とを排他させる処理部である。例えば、排他制御部14aは、同期ログ送信部14bが同期ログを生成するために記憶部12のデータベースからレコードを読み出すタイミングで、レコード更新部15によるレコード更新が発生したとする。この場合には、排他制御部14aは、同期ログ送信部14bの処理を一時的に停止させて排他制御を実行する。
その後、排他制御部14aは、レコード更新部15によるレコード更新が終了すると、同期ログ送信部14bの処理を再開させて排他制御を解放する。このとき、排他制御部14aは、記憶部12の同期対象のデータベースを参照し、レコード更新処理終了後のレコード数を計数する。そして、排他制御部14aは、計数したレコード数を同期対象のレコード数と特定し、特定したレコード数を同期ログ送信部14bに通知してもよい。
同期ログ送信部14bは、送信制御部14が同期処理を開始し、排他制御部14aが排他を解放した場合に、記憶部12のデータベースのレコードの情報である同期ログを各待機系サーバと組み込みサーバ50とに送信する。例えば、同期ログ送信部14bは、同期対象のデータベースの先頭のレコードを読み出す。そして、同期ログ送信部14bは、読み出したレコードに含まれるユーザデータを抽出して同期ログを生成する。その後、同期ログ送信部14bは、生成した同期ログを各待機系サーバと組み込みサーバ50とにマルチキャストで送信する。
この同期ログ送信部14bは、同期ログを送信した後に、当該同期ログを受信した旨の応答を送信先の各サーバから受信すると、次のレコードを読み出して同期ログを生成し、生成した同期ログを各待機系サーバと組み込みサーバ50とにマルチキャストで送信する。このように、同期ログ送信部14bは、送信した同期ログに対応する応答を受信するたびに、次のレコードについて同期ログを生成して送信を実行する。なお、同期ログ送信部14bは、同期対象のデータベースの最終レコードまで同期ログの送信を繰り返す、または、排他制御部14aから通知されたレコード数に到達するまで同期ログの送信を繰り返す。
更新ログ送信部14cは、記憶部12のデータベースが更新された場合に、更新されたレコードの情報に基づいて更新ログを生成して、各待機系サーバと組み込みサーバ50とに送信する。例えば、更新ログ送信部14cは、更新ログ生成部15bによって更新ログが生成された場合に、生成された更新ログを各待機系サーバと組み込みサーバ50とにマルチキャストで送信する。
ここで、同期ログ送信部14bや更新ログ送信部14cが送信するログの情報について説明する。図4は、現用系サーバが送信するログのデータ構造例を示す図である。図4に示すように、ログは、「ログ管理領域」と「データ領域」とを有する。「ログ管理領域」は、ログの管理情報を示す情報であり、「ログ種別、処理種別、レコードID」を有する。このうち「ログ種別」は、当該ログが同期ログか更新ログかを示す情報であり、例えば「同期ログ」または「更新ログ」が格納される。「処理種別」は、当該ログによって実行される処理内容を示し、例えば「更新、削除、追加」が格納される。「レコードID」は、図3と同様、レコードを一意に特定する識別子である。「データ領域」は、図3と同様、ユーザデータが格納される。
例えば、同期ログ送信部14bは、データベースから読み出したレコードAのデータ領域からユーザデータを読み出す。そして、同期ログ送信部14bは、ログ種別を「同期ログ」、処理種別を「追加」、レコードIDを「レコードA」とする「ログ管理領域」を生成する。その後、同期ログ送信部14bは、生成した「ログ管理領域」に、読み出したユーザデータを格納した「データ領域」を付加して同期ログを生成する。そして、同期ログ送信部14bは、生成した同期ログを送信する。なお、更新ログの生成については後述する。
図2に戻り、レコード更新部15は、コミット要求受信部15aと更新ログ生成部15bと更新適用部15cとコミット応答部15dとを有し、これらによって記憶部12のデータベースのレコードを更新し、更新データの同期を実行する処理部である。このレコード更新部15によって、クラスタシステム5の各サーバのデータベースの同期を取り、ミラーリングを実現できる。
コミット要求受信部15aは、クライアント装置のアプリケーションがトランザクションを実行している状態で、トランザクションのコミット要求をクライアント装置から受信する処理部である。例えば、コミット要求受信部15aは、レコードの追加、更新、削除などのレコード更新をコミット要求として受信し、受信した情報を更新ログ生成部15bに出力する。
更新ログ生成部15bは、コミット要求受信部15aから入力されたコミット要求に基づいて更新ログを生成し、更新ログ送信部14cや更新適用部15cに出力する処理部である。ここで、コミット要求がレコードを追加または更新または削除を示す例を用いて、更新ログの生成について説明する。
例えば、更新ログ生成部15bは、コミット要求に含まれるレコードID=レコードBが記憶部12のデータベースに存在しない場合やレコードBに対応するユーザデータがデータベースに存在しないとする。この場合、更新ログ生成部15bは、レコードBを追加したトランザクションのコミット時にレコードBに対して、ログ種別を「更新ログ」、処理種別を「追加」、レコードIDを「レコードB」とする「ログ管理領域」を生成する。その後、更新ログ生成部15bは、生成した「ログ管理領域」に、レコードBのユーザデータを格納した「データ領域」を付加して更新ログを生成する。
また、更新ログ生成部15bは、コミット要求に含まれるレコードID=レコードCに対応するユーザデータが記憶部12のデータベースに存在し、コミット要求にユーザデータが含まれているとする。この場合、更新ログ生成部15bは、レコードCを更新したトランザクションのコミット時にレコードCに対して、ログ種別を「更新ログ」、処理種別を「更新」、レコードIDを「レコードC」とする「ログ管理領域」を生成する。その後、更新ログ生成部15bは、生成した「ログ管理領域」に、レコードCのユーザデータを格納した「データ領域」を付加して更新ログを生成する。
また、更新ログ生成部15bは、コミット要求に含まれるレコードID=レコードDに対応するユーザデータが記憶部12のデータベースに存在し、コミット要求にユーザデータが含まれていないとする。この場合、更新ログ生成部15bは、レコードDを削除したトランザクションのコミット時にレコードDに対して、ログ種別を「更新ログ」、処理種別を「削除」、レコードIDを「レコードD」とする「ログ管理領域」を生成する。その後、更新ログ生成部15bは、生成した「ログ管理領域」に、空の「データ領域」を付加して更新ログを生成する。
更新適用部15cは、更新ログ送信部14cによって送信された更新ログの受信応答を各サーバから受信した場合に、更新ログ生成部15bが生成した更新ログに基づいてデータベースを操作する処理部である。
例えば、更新適用部15cは、更新ログが「処理種別=追加、レコードID=レコードB、ユーザデータ=XXX」である場合には、記憶部12のデータベースに、データ領域にXXXを格納した新たなレコードBを生成する。また、更新適用部15cは、更新ログが「処理種別=更新、レコードID=レコードC、ユーザデータ=YYY」である場合には、記憶部12のデータベースのレコードCのデータ領域をYYYに更新する。また、更新適用部15cは、更新ログが「処理種別=削除、レコードID=レコードD、ユーザデータ=(空白)」である場合には、レコードDに対応付けられたデータ領域を削除する。
図2に戻り、コミット応答部15dは、各サーバから更新ログが受信されたことを示す応答を受信するとともに、更新適用部15cによるレコード更新が終了した場合に、受信されたコミット要求に対するコミット応答をクライアント装置に送信する。ここで送信されたコミット応答をクライアント装置が受信することで、クライアント装置で実行されたトランザクションが完了する。
[待機系サーバの構成]
図5は、実施例2に係る待機系サーバの構成を示す機能ブロック図である。図5に示すように、待機系サーバ20は、通信インタフェース部21と、記憶部22と、制御部23とを有する。なお、待機系サーバ20についても現用系サーバ10と同様、図2に示した処理部に限定されるものではなく、例えばディスプレイなどの表示部やキーボードなどの入力部を有していてもよい。
通信インタフェース部21は、ネットワークインターフェースカードなどの通信モジュールであり、他の装置との間の通信を制御する。例えば、通信インタフェース部21は、現用系サーバ10から同期ログや更新ログを受信し、受信したことを示す応答を現用系サーバ10に送信する。
記憶部22は、現用系サーバの記憶部12とミラーリングされるデータベースを保持する半導体メモリ素子やハードディスクなどの記憶装置である。なお、記憶部22が保持するデータベースを形成するレコードのデータ構造例は、図3と同様なので、詳細な説明は省略する。
制御部23は、受信部24と格納制御部25とを有し、これらによってデータベースの同期処理を実行するFPGAなどの集積回路やCPUなどの電子回路である。この制御部23は、クラスタリングを実現するソフトウェアや、クラスタリングを実現するハードウェアを有する。また、制御部23は、当該待機系サーバ20が現用系サーバに昇格した場合に、図2に示した現用系サーバ10の制御部13が実行する各処理部と同様の動作を実行する。
受信部24は、現用系サーバ10から同期ログまたは更新ログを受信する処理部である。例えば、受信部24は、通信インタフェース部21を介して、現用系サーバ10がマルチキャストで送信した同期ログまたは更新を受信し、受信した各ログを格納制御部25に出力する。また、受信部24は、現用系サーバ10から更新ログまたは同期ログを受信した場合に、通信インタフェース部21を介して、現用系サーバ10に受信したことを示す応答を送信する。なお、更新ログ適用部25aや同期ログ適用部25bなどの他の処理部が応答を送信してもよい。
格納制御部25は、受信部24によって受信されたログの種別と、受信されたログによって特定されるデータベースのレコードの状況とに応じて、受信したログに基づいたレコードを記憶部22に生成する処理部である。格納制御部25は、更新ログ適用部25aと同期ログ適用部25bとを有し、これらによって同期処理を実行する。
更新ログ適用部25aは、受信された更新ログに基づいて、記憶部22がデータベースにレコードを生成する処理部である。ここで、更新ログ適用部25aが更新ログの適用可否を判定する判定基準の例を説明する。図6は、待機系サーバの更新ログおよび同期ログの適用判定基準の例を示す図である。ここでは、図6に示すうち、更新ログについて説明する。なお、図6の判定基準は、制御部23が有する内部メモリ等に格納しておき、各適用部が参照するようにしてもよく、プログラム等で実装してもよい。
図6は、受信ログの種別である「更新ログ」に「レコード状態」と「処理種別」とを対応付けている。「レコード状態」は、図3に示したレコードのデータ構造例の管理領域に該当し、「処理種別」は、図4に示したログ管理領域に該当する。図6では、「受信ログ、レコード状態(有無情報、更新適用フラグ)、処理種別(更新、追加、削除)」として「更新ログ、有り、ON、レコード更新、−、レコード削除」、「更新ログ、有り、OFF、レコード更新、−、レコード削除」を対応付けている。また、「受信ログ、レコード状態(有無情報、更新適用フラグ)、処理種別(更新、追加、削除)」として「更新ログ、無し、−、−、レコード追加、−」を対応付けている。なお、ここで示した「−」は、該当するものがないことを示す。
したがって、更新ログ適用部25aは、「ログ種別が「更新ログ」、処理種別が「更新」、レコードIDが「001」」である更新ログを受信した場合に、レコードID=001に該当するレコードを記憶部22から検索する。続いて、更新ログ適用部25aは、検索で得られたレコードID=001に該当するレコードの「更新適用フラグ」を参照する。そして、更新ログ適用部25aは、「更新適用フラグ」が「ON」の場合、図6の「受信ログ=更新ログ、レコード状態(有無情報=有り、更新適用フラグ=ON)、処理種別=更新」に該当すると判定する。その後、更新ログ適用部25aは、受信した更新ログのデータ領域に格納される「ユーザデータ」を、レコードID=001のデータ領域に格納してレコードID=001のレコードを更新する。
同様に、更新ログ適用部25aは、「更新適用フラグ」が「OFF」の場合も、図6の「受信ログ=更新ログ、レコード状態(有無情報=有り、更新適用フラグ=OFF)、処理種別=更新」に該当すると判定する。その後、更新ログ適用部25aは、受信した更新ログのデータ領域に格納される「ユーザデータ」を、レコードID=001のデータ領域に格納してレコードID=001のレコードを更新する。このとき、更新ログ適用部25aは、レコードID=001の管理領域の更新適用フラグを「OFF」から「ON」に変更する。
また、更新ログ適用部25aは、「ログ種別が「更新ログ」、処理種別が「削除」、レコードIDが「001」」である更新ログを受信した場合に、レコードID=001に該当するレコードを記憶部22から検索する。続いて、更新ログ適用部25aは、検索で得られたレコードID=001に該当するレコードの「有無情報」と「更新適用フラグ」とを参照する。
そして、更新ログ適用部25aは、レコードID=001の「有無情報」が「有り」かつ「更新適用フラグ」が「ON」の場合には、図6の「受信ログ=更新ログ、レコード状態(有無情報=有り、更新適用フラグ=ON)、処理種別=削除」に該当すると判定する。その後、更新ログ適用部25aは、レコードID=001に対応付けられた「データ領域」を削除する。
同様に、更新ログ適用部25aは、レコードID=001の「有無情報」が「有り」かつ「更新適用フラグ」が「OFF」の場合、図6の「受信ログ=更新ログ、レコード状態(有無情報=有り、更新適用フラグ=OFF)、処理種別=削除」に該当すると判定する。その後、更新ログ適用部25aは、レコードID=001に対応付けられた「データ領域」を削除する。このとき、更新ログ適用部25aは、レコードID=001の管理領域の更新適用フラグを「OFF」から「ON」に変更する。なお、更新ログ適用部25aは、レコードID=001のレコード自体を削除するようにしてもよい。
また、更新ログ適用部25aは、「ログ種別が「更新ログ」、処理種別が「追加」、レコードIDが「011」」である更新ログを受信したとする。この場合、更新ログ適用部25aは、当該更新ログのデータ領域に格納される「ユーザデータ」を抽出する。そして、更新ログ適用部25aは、レコードID=011に対応付けられた「更新適用フラグ」を「ON」にするとともに「レコード情報」を「有り」に変更する。その後、更新ログ適用部25aは、当該レコードIDに対応付けられた「データ領域」に、更新ログから抽出した「ユーザデータ」を格納する。このようにして、更新ログ適用部25aは、記憶部22が保持するデータベースに新たなレコードすなわち新たなデータ領域を生成する。
同期ログ適用部25bは、受信された同期ログに基づいて、記憶部22がデータベースにレコードを生成する処理部である。ここで、図6を用いて、同期ログ適用部25bが同期ログの適用可否を判定する判定基準の例を説明する。図6に示すように、「受信ログ、レコード状態(有無情報、更新適用フラグ)、処理種別(更新、追加、削除)」として「同期ログ、有り、−、受信ログ破棄」、「同期ログ、無し、−、受信ログ破棄」を対応付けている。なお、ここで示した「−」は該当するものがないことを示す。つまり、同期ログ適用部25bは、現用系サーバ10から同期ログを受信した場合には、レコードの状態に関係なく、記憶部22への適用を行わずに破棄する。
[組み込みサーバの構成]
図7は、実施例2に係る組み込みサーバの構成を示す機能ブロック図である。図7に示すように、組み込みサーバ50は、通信インタフェース部51と、記憶部52と、制御部53とを有する。なお、組み込みサーバ50についても現用系サーバ10と同様、図2に示した処理部に限定されるものではなく、例えばディスプレイなどの表示部やキーボードなどの入力部を有していてもよい。
通信インタフェース部51は、ネットワークインターフェースカードなどの通信モジュールであり、他の装置との間の通信を制御する。例えば、通信インタフェース部51は、現用系サーバ10から同期ログや更新ログを受信し、受信したことを示す応答を現用系サーバ10に送信する。
記憶部52は、半導体メモリ素子やハードディスクなどの記憶装置であり、組み込み時にはデータおよびレコードが存在しない状態である。なお、記憶部22のデータベースに生成されるレコードのデータ構造例は、図3と同様なので、詳細な説明は省略する。
制御部53は、受信部54と生成部55とを有し、これらによってデータベースの同期処理を実行するFPGAなどの集積回路やCPUなどの電子回路である。この制御部53は、クラスタリングを実現するソフトウェアや、クラスタリングを実現するハードウェアを有する。また、制御部53は、組み込みサーバ50が現用系サーバに昇格した場合に、図2に示した現用系サーバ10の制御部13が実行する各処理部と同様の動作を実行する。また、制御部53は、組み込みサーバ50が待機系サーバとなった場合に、図5に示した待機系サーバ20の制御部23が実行する各処理部と同様の動作を実行する。
受信部54は、現用系サーバ10から同期ログまたは更新ログを受信する処理部である。例えば、受信部54は、通信インタフェース部51を介して、現用系サーバ10がマルチキャストで送信した同期ログまたは更新を受信し、受信した各ログを生成部55に出力する。また、受信部54は、現用系サーバ10から更新ログまたは同期ログを受信した場合に、通信インタフェース部51を介して、現用系サーバ10に受信したことを示す応答を送信する。なお、ここで送信される応答は、第1生成部55aや判定部55b等の他の処理部が送信してもよい。
生成部55は、受信部54によって受信されたログの種別と、受信されたログによって特定されるデータベースのレコードの状況とに応じて、受信したログに基づいたレコードを記憶部52に生成する処理部である。生成部55は、第1生成部55aと判定部55bと第2生成部55cとを有し、これらによって上記処理を実行する。
ここで、生成部55の各処理部が受信ログの適用可否を判定する判定基準の例を説明する。図8は、組み込みサーバの更新ログおよび同期ログの適用判定基準の例を示す図である。なお、図8の判定基準は、制御部23が有する内部メモリ等に格納しておき、各処理部が参照ようにしてもよく、プログラム等で実装してもよい。
図8は、受信ログの種別である「更新ログ」および「同期ログ」各々に「レコード状態」と「処理種別」とを対応付けている。「レコード状態」は、図3に示したレコードのデータ構造例の管理領域に該当し、「処理種別」は、図4に示したログ管理領域に該当する。図8では、「受信ログ、レコード状態(有無情報、更新適用フラグ)、処理種別(更新、追加、削除)」として「更新ログ、有り、ON、レコード更新、−、レコード削除」、「更新ログ、有り、OFF、レコード更新、−、レコード削除」を対応付けている。また、「受信ログ、レコード状態(有無情報、更新適用フラグ)、処理種別(更新、追加、削除)」として「更新ログ、無し、−、レコード追加、レコード追加、レコード削除」を対応付けている。
同様に、図8では、「受信ログ、レコード状態(有無情報、更新適用フラグ)、処理種別(更新、追加、削除)」として「同期ログ、有り、−、受信ログ破棄」を対応付けている。また、「受信ログ、レコード状態(有無情報、更新適用フラグ)、処理種別(更新、追加、削除)」として「同期ログ、無し、ON、受信ログ破棄」、「同期ログ、無し、OFF、レコード追加」を対応付けている。なお、ここで示した「−」が、該等するものがないことを示す。
第1生成部55aは、現用系サーバ10から更新ログを受信した場合に、受信された更新ログに基づいたレコードを記憶部52に生成する。例えば、第1生成部55aは、「ログ種別が「更新ログ」、処理種別が「更新」、レコードIDが「100」」である更新ログを受信した場合に、レコードID=100に該当するレコードを記憶部52から検索する。続いて、第1生成部55aは、検索で得られたレコードID=100に該当するレコードの「有無情報」を参照する。
そして、第1生成部55aは、レコードID=100の「有無情報」が「有り」である場合に、レコードID=100に該当するレコードの「更新適用フラグ」を参照する。第1生成部55aは、「更新適用フラグ」が「ON」の場合、図8の「受信ログ=更新ログ、レコード状態(有無情報=有り、更新適用フラグ=ON)、処理種別=更新」に該当すると判定する。その後、第1生成部55aは、受信した更新ログのデータ領域に格納される「ユーザデータ」を、レコードID=100のデータ領域に格納してレコードID=100のレコードを更新する。
同様に、第1生成部55aは、「更新適用フラグ」が「OFF」の場合も、図8の「受信ログ=更新ログ、レコード状態(有無情報=有り、更新適用フラグ=OFF)、処理種別=更新」に該当すると判定する。その後、第1生成部55aは、受信した更新ログのデータ領域に格納される「ユーザデータ」を、レコードID=100のデータ領域に格納してレコードID=100のレコードを更新する。このとき、第1生成部55aは、レコードID=100の管理領域の更新適用フラグを「OFF」から「ON」に変更する。
一方、第1生成部55aは、レコードID=100の「有無情報」が「無し」である場合にも、レコードID=100に該当するレコードの「更新適用フラグ」を参照する。第1生成部55aは、「更新適用フラグ」が「ON」の場合、図8の「受信ログ=更新ログ、レコード状態(有無情報=無し、更新適用フラグ=ON)、処理種別=更新」に該当すると判定する。その後、第1生成部55aは、受信した更新ログのデータ領域に格納される「ユーザデータ」を、レコードID=100のデータ領域に格納してレコードID=100のレコードを更新する。
同様に、第1生成部55aは、「更新適用フラグ」が「OFF」の場合も、図8の「受信ログ=更新ログ、レコード状態(有無情報=無し、更新適用フラグ=OFF)、処理種別=更新」に該当すると判定する。その後、第1生成部55aは、受信した更新ログのデータ領域に格納される「ユーザデータ」を、レコードID=100のデータ領域に格納してレコードID=100のレコードを更新する。このとき、第1生成部55aは、レコードID=100の管理領域の更新適用フラグを「OFF」から「ON」に変更する。
さらに、第1生成部55aは、「ログ種別が「更新ログ」、処理種別が「追加」、レコードIDが「101」」である更新ログを受信した場合に、レコードID=101に該当するレコードを記憶部52から検索する。続いて、第1生成部55aは、検索で得られたレコードID=101に該当するレコードの「有無情報」を参照する。
そして、第1生成部55aは、レコードID=101の「有無情報」が「無し」である場合に、レコードID=101に該当するレコードの「更新適用フラグ」を参照する。第1生成部55aは、「更新適用フラグ」が「OFF」の場合、図8の「受信ログ=更新ログ、レコード状態(有無情報=無し、更新適用フラグ=OFF)、処理種別=追加」に該当すると判定する。その後、第1生成部55aは、当該更新ログのデータ領域に格納される「ユーザデータ」を抽出する。そして、第1生成部55aは、レコードID=101に対応付けられた「更新適用フラグ」を「ON」にするとともに「レコード情報」を「有り」に変更する。その後、第1生成部55aは、当該レコードIDに対応付けられた「データ領域」に、更新ログから抽出した「ユーザデータ」を格納する。このようにして、第1生成部55aは、記憶部52が保持するデータベースに新たなレコードを生成する。
一方、第1生成部55aは、レコードID=101の「更新適用フラグ」が「ON」の場合、図8の「受信ログ=更新ログ、レコード状態(有無情報=無し、更新適用フラグ=ON)、処理種別=追加」に該当すると判定する。この場合も、第1生成部55aは、上述した手法で新たなレコードを生成する。
また、第1生成部55aは、「ログ種別が「更新ログ」、処理種別が「削除」、レコードIDが「102」」である更新ログを受信した場合に、「有無情報」や「更新適用フラグ」に関係なく、レコードID=101に対応する「データ領域」を削除する。ただし、第1生成部55aは、「更新適用フラグ」が「OFF」であった場合には、「データ領域」を削除するとともに「更新適用フラグ」を「ON」にする。
判定部55bは、現用系サーバ10から同期ログを受信した場合に、同期ログで特定される記憶部52のレコード位置に、更新ログに基づいたレコードが生成済みか否かを判定する。第2生成部55cは、生成済みであると判定された場合には同期ログを破棄し、生成済みでないと判定された場合には同期ログに基づいたレコードを記憶部52に生成する。
例えば、判定部55bは、レコードIDが「200」の「同期ログ」を受信したとする。そして、判定部55bは、レコードID=200に該当するレコードを記憶部52から検索し、検索されたレコードの「レコード状態」の「レコード情報」が「有り」であったとする。この場合、第2生成部55cは、検索で得られたレコードID=200に該当するレコードの「更新適用フラグ」を参照する。そして、第2生成部55cは、「更新適用フラグ」が「ON」の場合、図8の「受信ログ=同期ログ、レコード状態(有無情報=有り、更新適用フラグ=ON)」に該当すると判定する。その結果、第2生成部55cは、受信された同期ログを処理種別に関係なく破棄する。
また、判定部55bは、「更新適用フラグ」が「OFF」の場合も同様に、図8の「受信ログ=同期ログ、レコード状態(有無情報=有り、更新適用フラグ=OFF)」に該当すると判定する。その結果、第2生成部55cは、受信された同期ログを処理種別に関係なく破棄する。
また、判定部55bは、レコードID=200に該当するレコードを記憶部52から検索し、検索されたレコードの「レコード状態」の「レコード情報」が「無し」であったとする。つまり、該当レコードのユーザデータが削除されている状態であるとする。この場合、判定部55bは、検索で得られたレコードID=200に該当するレコードの「更新適用フラグ」を参照する。そして、判定部55bは、「更新適用フラグ」が「ON」の場合、図8の「受信ログ=同期ログ、レコード状態(有無情報=無し、更新適用フラグ=ON)」に該当すると判定する。その結果、第2生成部55cは、受信された同期ログを処理種別に関係なく破棄する。
また、判定部55bは、「更新適用フラグ」が「OFF」の場合には、図8の「受信ログ=同期ログ、レコード状態(有無情報=無し、更新適用フラグ=OFF)に該当すると判定する。その結果、第2生成部55cは、受信された同期ログを記憶部52が保持するデータベースに適用する。すなわち、第2生成部55cは、当該同期ログのデータ領域に格納される「ユーザデータ」を抽出する。そして、第2生成部55cは、レコードID=200に対応付けられた「更新適用フラグ」を「ON」に変更するとともに、「レコード情報」を「有り」に変更する。そして、第2生成部55cは、レコードID=200に対応付けられた「データ領域」に、同期ログから抽出したユーザデータを格納する。このようにして、第2生成部55cは、記憶部52が保持するデータベースに、現用系サーバ10とミラーリングされたレコードを生成する。
[処理の流れ]
次に、図9から図13を用いて、各サーバが実行する処理の流れを説明する。ここでは、現用系サーバ10による処理の流れ、待機系サーバ20による処理の流れ、組み込みサーバ50による処理の流れを説明する。現用系サーバ10の更新処理は、レコードの更新が発生した場合には同期処理が実行中であるか否かに関らず随時実行され、同期処理は、DBの同期が開始された場合には更新処理が実行中であるか否かに関らず実行される。つまり、現用系サーバ10は、更新処理と同期処理とを並列に実行する。
(現用系サーバによる更新ログ送信処理の流れ)
図9は、実施例2に係る現用系サーバが実行する更新ログ送信処理の流れを示すフローチャートである。図9に示すように、更新ログ生成部15bは、コミット要求受信部15aがコミット要求を受信した場合に(S101肯定)、当該コミット要求に基づいて更新ログを生成する(S102)。
続いて、レコード更新部15は、排他制御部14aによって共有排他権を獲得して、テーブルの運用単位に排他権を獲得する(S103)。そして、更新ログ送信部14cは、更新ログ生成部15bによって生成された更新ログを各待機系サーバと組み込みサーバ50の各々にマルチキャストで送信する(S104)。
その後、更新適用部15cは、各サーバから受信したことを示す応答を受信した場合に(S105肯定)、記憶部12のデータベースに更新ログを適用する(S106)。そして、レコード更新部15は、排他制御部14aによって共有排他権を解放する(S107)。また、排他制御部14aは、トランザクション排他を解放する(S108)。その後、コミット応答部15dは、コミット応答をレコードの更新を要求したクライアント装置に送信する(S109)。その後は、S101に戻り、コミット要求が受信されるたびに、上記処理が実行される。
なお、トランザクション排他とは、例えば複数のトランザクションが同一レコードを同時に更新することによる不整合を防止するために、獲得する排他権のことである。トランザクションの開始時にトランザクション排他を獲得し、トランザクションの終了であるコミット処理時に、トランザクション排他は解放される。
(現用系サーバによる同期ログ送信処理の流れ)
図10は、実施例2に係る現用系サーバが実行する同期ログ送信処理の流れを示すフローチャートである。
図10に示すように、同期ログ送信部14bは、排他制御部14aによって非共有排他権を獲得し(S201)、更新処理が終了するまで、レコードの読み出しを抑止する。続いて、同期ログ送信部14bは、記憶部12のデータベースを参照して、同期対象となる最終レコードの情報を保持する(S202)。例えば、同期ログ送信部14bは、記憶部12が有するレコードの最終レコードのレコードIDを保持してもよく、レコードの数を計数した結果を保持してもよい。
そして、同期ログ送信部14bは、排他制御部14aによって非共有排他権を解放し(S203)、記憶部12からレコードを読み込み(S204)、読み込んだレコードに基づいて同期ログを生成する(S205)。例えば、同期ログ送信部14bは、記憶部12が保持するデータベースの先頭のレコードから読み出す。
続いて、同期ログ送信部14bは、生成した同期ログを各待機系サーバと組み込みサーバ50とにマルチキャストで送信する(S206)。そして、同期ログ送信部14bは、同期対象であり、未送信のレコードが存在する場合には(S207否定)、S204に戻って以降の処理を繰り返す。
そして、同期ログ送信部14bは、同期対象の全レコードについて送信が完了すると(S207肯定)、同期対象の全データベースについて同期ログの送信が完了したかを判定する(S208)。
同期ログが未送信のデータベースが存在する場合には(S208否定)、同期ログ送信部14bは、S201に戻って以降の処理を繰り返す。一方、同期対象の全データベースについて同期ログの送信が完了した場合(S208肯定)、同期ログ送信部14bは、送信した全同期ログについて、受信されたことを示す応答を、送信先の全サーバから受信したか否かを判定する(S209)。
そして、同期ログ送信部14bは、全同期ログに対応した応答を送信先の全サーバから受信した場合に(S209肯定)、同期完了通知を管理者端末に送信したり、表示部に出力したりして、データベースの同期処理を終了する(S210)。
(待機系サーバによる処理の流れ)
図11は、実施例2に係る待機系サーバが実行する処理の流れを示すフローチャートである。なお、待機系サーバ20は、現用系サーバ10からログを受信するたびに、図11の処理を実行する。
図11に示すように、受信部24が現用系サーバ10からログを受信すると(S301肯定)、格納制御部25は、受信されたログのログ管理領域を参照して、受信されたログが更新ログか否かを判定する(S302)。
格納制御部25によって更新ログと判定された場合(S302肯定)、更新ログ適用部25aは、更新ログを受信したことを示す応答を現用系サーバ10に送信する(S303)。その後、更新ログ適用部25aは、図6に示した適用判定基準にしたがって、更新ログを記憶部22が保持するデータベースに適用する(S304)。
一方、格納制御部25によって更新ログでない判定された場合、すなわち同期ログであると判定された場合(S302否定)、同期ログ適用部25bは、同期ログを受信したことを示す応答を現用系サーバ10に送信する(S305)。その後、同期ログ適用部25bは、図6に示した適用判定基準にしたがって、同期ログを破棄する(S306)。なお、S304やS306が実行された後は、S301以降の処理を繰り返す。
(組み込みサーバによる処理の流れ)
図12は、実施例2に係る組み込みサーバが実行する処理の流れを示すフローチャートである。なお、組み込みサーバ50は、現用系サーバ10からログを受信するたびに、図12の処理を実行する。
図12に示すように、受信部54が現用系サーバ10からログを受信すると(S401肯定)、生成部55は、受信されたログのログ管理領域を参照して、受信されたログが更新ログか否かを判定する(S402)。
生成部55によって更新ログと判定された場合(S402肯定)、第1生成部55aまたは受信部54は、更新ログを受信したことを示す応答を現用系サーバ10に送信する(S403)。その後、第1生成部55aは、図8に示した適用判定基準にしたがって、更新ログを記憶部52が保持するデータベースに適用し(S404)、S401に戻って以降の処理を繰り返す。
一方、生成部55によって更新ログでない判定された場合、すなわち同期ログであると判定された場合(S402否定)、判定部55bまたは受信部54は、同期ログを受信したことを示す応答を現用系サーバ10に送信する(S405)。
その後、判定部55bは、受信された同期ログのログ管理領域のレコードIDを参照して、同期ログの適用対象となるレコード位置を特定する(S406)。続いて、判定部55bは、特定したレコードの管理領域のレコード情報を参照してレコードの有無、すなわちデータ領域が存在するか否かを判定する(S407)。そして、判定部55bが、レコードが存在する、すなわちデータ領域が存在すると判定した場合(S407肯定)、第2生成部55cは、受信された同期ログを破棄し(S408)、S401に戻って以降の処理を繰り返す。つまり、この場合には、組み込みサーバ50は、当該レコード位置に既に更新ログが適用されていると判定し、同期ログを破棄する。
一方、判定部55bは、レコードが存在しない、すなわちデータ領域が存在しないと判定した場合(S407否定)、管理領域の更新適用フラグを参照して、更新ログが適用済みか否かを判定する(S409)。
そして、第2生成部55cは、判定部55bが更新ログ適用済みと判定した場合(S409肯定)、受信された同期ログを破棄し(S410)、S401に戻って以降の処理を繰り返す。一方、第2生成部55cは、判定部55bが更新ログ未適用と判定した場合(S409否定)、受信された同期ログに基づいて記憶部52が保持するデータベースにレコードを生成し(S411)、S401に戻って以降の処理を繰り返す。
上述したように、実施例2によれば、レコードデータのコピーと更新差分の適用順番の制御を無くして同期処理を実行できるとともに、業務アプリケーションやサーバ自体を停止することなく、異なるサーバ間でのレコードデータの同期を完了することができる。また、同期完了は、レコード数すなわち同期ログの数に依存するので、更新ログに関係なく、同期処理を完了させることができる。また、各サーバに、更新ログを蓄積しておくための領域を設けることもないので、蓄積領域の見積もりを実行することもなく、管理者の負荷を軽減でき、大容量のメモリを用いることもなく、コスト削減にも繋がる。
また、同期処理中であっても、更新ログと同期ログとを並行して処理できるので、動作中のアプリケーションへの影響を小さくすることができる。同期処理開始時に、非共有排他によって更新ログの送信と同期ログの送信を排他制御するので、レコード追加があった場合でも、レコードの送信漏れを抑止できる。よって、現用系にてログ適用制御処理のために、CPUやメモリ等のOS資源を使用しないため、動作しているアプリケーションへの性能影響を小さくすることができる。
また、現用系サーバ10は、更新ログを各待機系サーバおよび組み込みサーバ50に送信するだけでよく、送信先の各サーバに対して、レコードの更新処理を実行しないので、処理負荷を軽減できる。また、現用系サーバ10は、送信した同期ログの受信応答を各サーバから受信すると、次のレコードについて同期ログの送信処理を開始するので、従来技術に比べて、組み込みサーバ50へ全同期ログを送信するまでにかかる時間を短縮できる。この結果、従来技術に比べて、同期処理にかかる時間を短縮することができる。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
(同期対象サーバ)
上述した実施例では、第1のサーバ装置を現用系サーバ10、第2のサーバ装置を組み込みサーバ50とする例について説明したが、これに限定されるものではない。例えば、現用系サーバ10と同期が取れている他のサーバを第1のサーバ装置とすることもでき、クラスタシステム5の待機系サーバのうち保守等によりDBを再構成した待機系サーバを第2のサーバ装置とすることもできる。
(ログ適用条件)
例えば、図6に示した待機系サーバ20のログ適用条件や図8に示した組み込みサーバ50のログ適用条件は任意に変更することができる。例えば、「受信ログ=同期ログ、有無情報=無し、更新適用フラグ=OFF」に対して、「受信後に30秒待機した後、更新ログが適用されていなければ、レコード追加」などの条件を追加することもできる。一例を挙げると、同期ログによって生成したレコードに対して更新ログを適用する場合、同一レコードに対して書き込み処理を2度行うことになるが、上記条件によって、同期ログ受信後30秒間、同期ログの適用を待機する。その後、30秒以内に更新ログを受信した場合には、更新ログのみを適用する。このように、同期ログを受信した後、短い間隔で更新ログを受信した場合などに発生する、同一レコードに書き込み処理を削減することができる。
(システム)
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
(プログラム)
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。
図13は、同期制御プログラムを実行するコンピュータのハードウェア構成の例を示す図である。図13に示すように、コンピュータ100は、CPU102、入力装置103、出力装置104、通信インタフェース105、媒体読み取り装置106、HDD(Hard Disk Drive)107、RAM(Random Access Memory)108を有する。また、図13に示した各部は、バス101で相互に接続される。
入力装置103は、マウスやキーボードであり、出力装置104は、ディスプレイなどであり、通信インタフェース105は、NIC(Network Interface Card)などのインタフェースである。HDD107は、同期制御プログラム107aとともに、データベース等を記憶する。記録媒体の例としてHDD107を例に挙げたが、ROM(Read Only Memory)、RAM、CD−ROM等の他のコンピュータ読み取り可能な記録媒体に各種プログラムを格納しておき、コンピュータに読み取らせることとしてもよい。なお、記憶媒体を遠隔地に配置し、コンピュータが、その記憶媒体にアクセスすることでプログラムを取得して利用してもよい。また、その際、取得したプログラムをそのコンピュータ自身の記録媒体に格納して用いてもよい。
CPU102は、同期制御プログラム107aを読み出してRAM108に展開することで、図2等で説明した各機能を実行する同期制御プロセス108aを動作させる。すなわち、同期制御プロセス108aは、図2に記載した送信制御部14が有する各処理部、レコード更新部15が有する各処理部と同様の機能を実行する。また、同期制御プロセス108aは、図5や図7に示した制御部が有する各処理部と同様の処理を実行させることもできる。このようにコンピュータ100は、プログラムを読み出して実行することで同期制御方法を実行する情報処理装置として動作する。
例えば、コンピュータ100は、媒体読み取り装置106によって記録媒体から同期制御プログラムを読み出し、読み出された同期制御プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、コンピュータ100によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
1、2、3 クライアント装置
5 クラスタシステム
10 現用系サーバ
11 通信インタフェース部
12 記憶部
13 制御部
14 送信制御部
14a 排他制御部
14b 同期ログ送信部
14c 更新ログ送信部
15 レコード更新部
15a コミット要求受信部
15b 更新ログ生成部
15c 更新適用部
15d コミット応答部
20 待機系サーバ
21 通信インタフェース部
22 記憶部
23 制御部
24 受信部
25 格納制御部
25a 更新ログ適用部
25b 同期ログ適用部
50 組み込みサーバ
51 通信インタフェース部
52 記憶部
53 制御部
54 受信部
55 生成部
55a 第1生成部
55b 判定部
55c 第2生成部

Claims (7)

  1. 第1のサーバ装置と第2のサーバ装置とを有し、クライアントのデータと該データの所在を示す情報とレコードの状況を示す情報とをレコードとして記憶する記憶部を各サーバ装置が有するクラスタシステムであって、
    前記第1のサーバ装置は、
    前記記憶部が有するレコードを第1の情報として第1の情報を示す種別の情報と共に前記第2のサーバ装置に送信するとともに、前記レコードの更新が発生した場合には、更新されたレコードを第2の情報として第2の情報を示す種別の情報と共に前記第2のサーバ装置に送信する送信部と、
    前記第2のサーバ装置は、
    前記第1のサーバ装置から前記第1の情報または前記第2の情報を受信する受信部と、
    前記受信部によって受信した種別の情報と、前記受信した情報によって特定される前記記憶部のレコードの状況とに応じて、前記受信した情報のレコードを前記記憶部に生成する生成部と
    を有することを特徴とするクラスタシステム。
  2. 前記第2のサーバ装置の生成部は、
    前記第1のサーバ装置から第2の情報を受信した場合に、前記第2の情報のレコードを前記記憶部に生成する第1生成部と、
    前記第1のサーバ装置から第1の情報を受信した場合に、前記第1の情報で特定される前記記憶部のレコード位置に、前記第2の情報のレコードが生成済みか否かを判定する判定部と、
    生成済みであると判定された場合には第1の情報を破棄し、生成済みでないと判定された場合には第1の情報のレコードを前記記憶部に生成する第2生成部とを有することを特徴とする請求項1に記載のクラスタシステム。
  3. 前記第1のサーバ装置の送信部は、前記第2のサーバ装置へ送信するレコードを読み出すタイミングで前記レコードの更新が発生した場合に、前記第1の情報を前記記憶部から読み出すことを抑止し、前記レコードの更新が終了した後に前記記憶部から有するレコードの数を送信対象のレコード数と決定して、前記レコードの読み出しを開始することを特徴とする請求項1または2に記載のクラスタシステム。
  4. 前記第1のサーバ装置の送信部は、前記クラスタシステムが有する他のサーバ装置と前記第2のサーバ装置との各々に、前記第2の情報または前記第1の情報をマルチキャストで送信することを特徴とする請求項1〜3のいずれか一つに記載のクラスタシステム。
  5. 第1のサーバ装置と第2のサーバ装置とを有し、クライアントのデータと該データの所在を示す情報とレコードの状況を示す情報とをレコードとして記憶する記憶部を各サーバ装置が有するクラスタシステムが実行する同期制御方法であって、
    前記第1のサーバ装置が、
    前記記憶部が有するレコードを第1の情報として第1の情報を示す種別の情報と共に前記第2のサーバ装置に送信するとともに、前記レコードの更新が発生した場合には、更新されたレコードを第2の情報として第2の情報を示す種別の情報と共に前記第2のサーバ装置に送信し、
    前記第2のサーバ装置が、
    前記第1のサーバ装置から前記第1の情報または前記第2の情報を受信し、
    受信した種別の情報と、前記受信した情報によって特定される前記記憶部のレコードの状況とに応じて、前記受信した情報のレコードを前記記憶部に生成する、
    ことを特徴とする同期制御方法。
  6. クライアントのデータと該データの所在を示す情報とレコードの状況を示す情報とをレコードとして記憶する記憶部を有する記憶元のサーバ装置から、前記記憶部のレコードの情報である第1の情報と第1の情報を示す種別の情報、または、前記レコードの更新が発生した場合に、更新されたレコードの情報である第2の情報と第2の情報を示す種別の情報を受信する受信部と、
    前記受信部によって受信した種別の情報と、受信した情報によって特定される、自装置が有する記憶部のレコードの状況とに応じて、前記受信した情報のレコードを前記記憶部に生成する生成部と
    を有することを特徴とするサーバ装置。
  7. コンピュータに、
    クライアントのデータと該データの所在を示す情報とレコードの状況を示す情報とをレコードとして記憶する記憶部を有する記憶元の第1のサーバ装置から、前記記憶部のレコードの情報である第1の情報と第1の情報を示す種別の情報、または、前記レコードの更新が発生した場合に、更新されたレコードの情報である第2の情報と第2の情報を示す種別の情報を受信し、
    受信した種別の情報と、受信した情報によって特定される、前記コンピュータが有する記憶部のレコードの状況とに応じて、前記受信した情報のレコードを前記記憶部に生成する、
    処理を実行させることを特徴とする同期制御プログラム。
JP2011102109A 2011-04-28 2011-04-28 クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム Active JP5686034B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011102109A JP5686034B2 (ja) 2011-04-28 2011-04-28 クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム
US13/364,527 US20120278429A1 (en) 2011-04-28 2012-02-02 Cluster system, synchronization controlling method, server, and synchronization controlling program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011102109A JP5686034B2 (ja) 2011-04-28 2011-04-28 クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム

Publications (2)

Publication Number Publication Date
JP2012234333A true JP2012234333A (ja) 2012-11-29
JP5686034B2 JP5686034B2 (ja) 2015-03-18

Family

ID=47068813

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011102109A Active JP5686034B2 (ja) 2011-04-28 2011-04-28 クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム

Country Status (2)

Country Link
US (1) US20120278429A1 (ja)
JP (1) JP5686034B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8837700B2 (en) * 2012-12-04 2014-09-16 Genesys Telecommunications Laboratories, Inc. Dialed string matching and call cost minimization in dial plan
US10360195B1 (en) * 2013-06-26 2019-07-23 Amazon Technologies, Inc. Absolute and relative log-structured storage
US10346381B2 (en) * 2013-11-14 2019-07-09 Facebook, Inc. Atomic update operations in a data storage system
JP6248747B2 (ja) * 2014-03-28 2017-12-20 富士通株式会社 情報処理装置、制御方法および制御プログラム
US9632890B2 (en) * 2014-07-08 2017-04-25 Netapp, Inc. Facilitating N-way high availability storage services
WO2016122723A1 (en) * 2015-01-29 2016-08-04 Netapp, Inc. Methods for facilitating n-way high availability storage services and devices thereof
EP3281391B1 (en) * 2015-04-09 2022-07-27 OMRON Corporation Web enabled interface for an embedded server
US10133771B2 (en) * 2015-05-13 2018-11-20 International Business Machines Corporation Opportunistic wait-triggered elastic commit
CN108121730B (zh) * 2016-11-30 2021-01-26 北京京东尚科信息技术有限公司 一种将数据更新快速同步到业务系统的装置及方法
CN110377577B (zh) * 2018-04-11 2022-03-04 北京嘀嘀无限科技发展有限公司 数据同步方法、装置、系统和计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005327015A (ja) * 2004-05-13 2005-11-24 Nec Corp データ二重化方法とプログラム
JP2007310701A (ja) * 2006-05-19 2007-11-29 Hitachi Ltd データベースシステム、ストレージ装置、初期コピー方法及びログ適用方法
JP2009157785A (ja) * 2007-12-27 2009-07-16 Hitachi Ltd 待機系計算機の追加方法、計算機及び計算機システム
JP2010092109A (ja) * 2008-10-03 2010-04-22 Fujitsu Ltd 一括登録されるデータに係る情報システム、方法、およびプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6397307B2 (en) * 1999-02-23 2002-05-28 Legato Systems, Inc. Method and system for mirroring and archiving mass storage
US20020138559A1 (en) * 2001-01-29 2002-09-26 Ulrich Thomas R. Dynamically distributed file system
US7627776B2 (en) * 2004-11-16 2009-12-01 Petruzzo Stephen E Data backup method
US7447709B1 (en) * 2005-06-29 2008-11-04 Emc Corporation Methods and apparatus for synchronizing content

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005327015A (ja) * 2004-05-13 2005-11-24 Nec Corp データ二重化方法とプログラム
JP2007310701A (ja) * 2006-05-19 2007-11-29 Hitachi Ltd データベースシステム、ストレージ装置、初期コピー方法及びログ適用方法
JP2009157785A (ja) * 2007-12-27 2009-07-16 Hitachi Ltd 待機系計算機の追加方法、計算機及び計算機システム
JP2010092109A (ja) * 2008-10-03 2010-04-22 Fujitsu Ltd 一括登録されるデータに係る情報システム、方法、およびプログラム

Also Published As

Publication number Publication date
US20120278429A1 (en) 2012-11-01
JP5686034B2 (ja) 2015-03-18

Similar Documents

Publication Publication Date Title
JP5686034B2 (ja) クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム
US11481139B1 (en) Methods and systems to interface between a multi-site distributed storage system and an external mediator to efficiently process events related to continuity
US11360867B1 (en) Re-aligning data replication configuration of primary and secondary data serving entities of a cross-site storage solution after a failover event
JP6225262B2 (ja) 分散データグリッドにおいてデータを同期させるためにパーティションレベルジャーナリングをサポートするためのシステムおよび方法
US9367261B2 (en) Computer system, data management method and data management program
US20150213100A1 (en) Data synchronization method and system
US10114848B2 (en) Ensuring the same completion status for transactions after recovery in a synchronous replication environment
JP5724735B2 (ja) データベース更新制御装置、データベース管理システムおよびデータベース更新制御プログラム
JPWO2013018808A1 (ja) 分散ストレージシステムおよび方法
WO2012045245A1 (zh) 一种保持数据一致性的方法及系统
US20170161313A1 (en) Detection and Resolution of Conflicts in Data Synchronization
CN113268472B (zh) 一种分布式数据存储系统及方法
WO2022174735A1 (zh) 基于分布式存储的数据处理方法、装置、设备以及介质
JP5331050B2 (ja) データ同期システム、データ同期方法、情報処理装置、情報処理方法、およびプログラム
EP3958139B1 (en) Method and system for creating files in a file system
US11687565B2 (en) Asynchronous data replication in a multiple availability zone cloud platform
CN113051108A (zh) 一种数据备份方法及系统
EP3198803B1 (en) Message service
US20210248108A1 (en) Asynchronous data synchronization and reconciliation
KR101929948B1 (ko) 데이터 타입 기반의 멀티 디바이스 데이터 동기화를 위한 방법 및 시스템
JP2015011642A (ja) サーバ/クライアントシステム
KR20180134814A (ko) 데이터 타입 기반의 멀티 디바이스 데이터 동기화를 위한 방법 및 시스템
CN117453825A (zh) 数据同步方法、装置、介质和存储设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140808

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140812

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141010

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150106

R150 Certificate of patent or registration of utility model

Ref document number: 5686034

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150