(57)【要約】【課題】データ記憶システムの信頼性を向上させる。【解決手段】オンラインコントローラ３０から、生産装置４０の稼働状況に関する情報（更新データ）が記憶サーバ１０Ａに送信される。記憶サーバ１０Ａは更新データに基づき、記憶サーバ１０Ａが備えるデータベースを更新する。記憶サーバ１０Ａは、更新データを記憶サーバ１０Ｂと１０Ｃとに転送する。記憶サーバ１０Ｂと１０Ｃとは転送された更新データに基づき、記憶サーバ１０Ｂと１０Ｃとが備えるデータベースをそれぞれ更新する。【選択図】図１
2010067115.tif 000002
【特許請求の範囲】
【請求項１】
各々がデータを記憶する記憶装置を備える第１のサーバ、第２のサーバ、及び第３のサーバと、それらのサーバを監視するための監視装置と、から構成され、それぞれがネットワークを介して接続されるデータ記憶システムであって、
前記第１から第３のサーバのうち予め定められた１のサーバであるプライマリサーバは、
ネットワークを介して前記記憶装置に記憶されるデータを更新するための更新データを受信する受信手段と、
前記更新データに基づいて前記記憶装置に記憶されるデータを更新する第１の更新手段と、
前記更新データを他のサーバに転送する転送手段と、を備え、
前記第１から第３のサーバのうち前記プライマリサーバ以外のセカンダリサーバは、
前記プライマリサーバから転送された更新データに基づいて前記記憶装置に記憶されるデータを更新する第２の更新手段を備え、
前記監視装置は、前記プライマリサーバの動作が停止した場合に、前記セカンダリサーバのいずれかをプライマリサーバに切り換える切換手段を備える
ことを特徴とするデータ記憶システム。
【請求項２】
前記監視装置の切換手段により切り換えられたプライマリサーバは、前記転送手段が動作を停止したサーバに転送するはずの更新データを蓄積する送信蓄積手段を更に備え、
前記停止したサーバが動作を開始した場合、当該サーバの記憶装置に記憶されるデータを、前記送信蓄積手段に蓄積される更新データと、前記セカンダリサーバのうち前記動作を停止したサーバではないセカンダリサーバの記憶装置に記憶されるデータと、に基づいて更新する復旧手段を備える
ことを特徴とする請求項１に記載のデータ記憶システム。
【請求項３】
前記セカンダリサーバのうち前記動作を停止したサーバではないセカンダリサーバは、
前記復旧手段により前記記憶装置に記憶されるデータを更新する間に受信する更新データを蓄積する受信蓄積手段と、
前記復旧手段によるデータの更新が終了した後に、前記受信蓄積手段が蓄積する更新データに基づいて前記記憶装置に記憶されるデータを更新する第３の更新手段と、を更に備える
ことを特徴とする請求項２に記載のデータ記憶システム。
【請求項４】
前記プライマリサーバは、前記第１の更新手段により前記記憶装置に記憶されるデータの更新を終了したときに更新データの送信元にデータの更新を終了したことを示す更新完了通知を送信する更新完了通知送信手段を更に備える
ことを特徴とする請求項１乃至３のいずれか１項に記載のデータ記憶システム。
【請求項５】
前記監視サーバは、前記第１から第３のサーバの異常を検出する異常検出手段を更に備える
ことを特徴とする請求項１乃至４のいずれか１項に記載のデータ記憶システム。
【請求項６】
各々がデータを記憶する記憶装置を備える第１のサーバ、第２のサーバ、及び第３のサーバと、データを記憶する記憶装置を備え前記第１から第３のサーバとは異なるバージョンの第４のサーバと、から構成され、それぞれがネットワークを介して接続されるデータ記憶システムであって、
前記第１のサーバは、
ネットワークを介して前記記憶装置に記憶されるデータを更新するための更新データを受信する手段と、
前記更新データに基づいて前記記憶装置に記憶されるデータを更新する手段と、
前記更新データを前記第２のサーバと前記第３のサーバとに転送する手段と、を備え、
前記第２のサーバは、
前記第１のサーバから転送された更新データに基づいて前記記憶装置に記憶されるデータを更新する手段を備え、
前記第３のサーバは、
前記第１のサーバから転送された更新データに基づいて前記記憶装置に記憶されるデータを更新する手段と、
前記更新データを前記第４のサーバに転送する手段と、を備え、
前記第４のサーバは、
前記第３のサーバから転送される更新データに基づいて前記記憶装置に記憶されるデータを更新する手段を備える
ことを特徴とするデータ記憶システム。
【請求項７】
各々がデータを記憶する記憶装置を備える第１のサーバ、第２のサーバ、及び第３のサーバと、それらのサーバを監視するための監視装置と、から構成され、それぞれがネットワークを介して接続されるデータ記憶システムにおけるデータ記憶方法であって、
前記第１から第３のサーバのうち予め定められた１のサーバであるプライマリサーバは、
ネットワークを介して前記記憶装置に記憶されるデータを更新するための更新データを受信し、
前記更新データに基づいて前記記憶装置に記憶されるデータを更新し、
前記更新データを他のサーバに転送し、
前記第１から第３のサーバのうち前記プライマリサーバ以外のセカンダリサーバは、
前記プライマリサーバから転送された更新データに基づいて前記記憶装置に記憶されるデータを更新し、
前記監視装置は、前記プライマリサーバの動作が停止した場合に、前記セカンダリサーバのいずれかをプライマリサーバに切り換える
ことを特徴とするデータ記憶方法。
【請求項８】
前記監視装置の切換手段により切り換えられたプライマリサーバは、前記転送手段が動作を停止したサーバに転送するはずの更新データを蓄積し、
前記停止したサーバが動作を開始した場合、当該サーバの記憶装置に記憶されるデータを、前記蓄積される更新データと、前記セカンダリサーバのうち前記動作を停止したサーバではないセカンダリサーバの記憶装置に記憶されるデータと、に基づいて更新する
ことを特徴とする請求項７に記載のデータ記憶方法。
【請求項９】
前記セカンダリサーバのうち前記動作を停止したサーバではないセカンダリサーバは、
前記動作を停止したサーバの記憶装置に記憶されるデータを更新する間に、受信する更新データを蓄積し、
そのデータの更新が終了した後に、前記蓄積する更新データに基づいて前記記憶装置に記憶されるデータを更新する
ことを特徴とする請求項７に記載のデータ記憶方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ記憶システム、データ記憶方法に関する。
【背景技術】
【０００２】
ネットワークを介して接続された接続先のサーバに所定のデータを蓄積して記憶するシステムなどにおいて、サーバを二重化して、システムの信頼性を高めること（ホットスタンバイ）が知られている（例えば特許文献１）。
【０００３】
【特許文献１】特開２００６−１４６２９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、サーバを二重化した場合であっても、双方のサーバに障害が発生する可能性があり、より信頼性の高いデータ記憶システムが求められている。
【０００５】
本発明は、上記実情に鑑みてなされたものであって、データ記憶システムの信頼性を向上させることを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の第１の観点に係るデータ記憶システムは、
各々がデータを記憶する記憶装置を備える第１のサーバ、第２のサーバ、及び第３のサーバと、それらのサーバを監視するための監視装置と、から構成され、それぞれがネットワークを介して接続されるデータ記憶システムであって、
前記第１から第３のサーバのうち予め定められた１のサーバであるプライマリサーバは、
ネットワークを介して前記記憶装置に記憶されるデータを更新するための更新データを受信する受信手段と、
前記更新データに基づいて前記記憶装置に記憶されるデータを更新する第１の更新手段と、
前記更新データを他のサーバに転送する転送手段と、を備え、
前記第１から第３のサーバのうち前記プライマリサーバ以外のセカンダリサーバは、
前記プライマリサーバから転送された更新データに基づいて前記記憶装置に記憶されるデータを更新する第２の更新手段を備え、
前記監視装置は、前記プライマリサーバの動作が停止した場合に、前記セカンダリサーバのいずれかをプライマリサーバに切り換える切換手段を備える
ことを特徴とする。
【０００７】
本発明の第２の観点に係るデータ記憶システムは、
各々がデータを記憶する記憶装置を備える第１のサーバ、第２のサーバ、及び第３のサーバと、データを記憶する記憶装置を備え前記第１から第３のサーバとは異なるバージョンの第４のサーバと、から構成され、それぞれがネットワークを介して接続されるデータ記憶システムであって、
前記第１のサーバは、
ネットワークを介して前記記憶装置に記憶されるデータを更新するための更新データを受信する手段と、
前記更新データに基づいて前記記憶装置に記憶されるデータを更新する手段と、
前記更新データを前記第２のサーバと前記第３のサーバとに転送する手段と、を備え、
前記第２のサーバは、
前記第１のサーバから転送された更新データに基づいて前記記憶装置に記憶されるデータを更新する手段を備え、
前記第３のサーバは、
前記第１のサーバから転送された更新データに基づいて前記記憶装置に記憶されるデータを更新する手段と、
前記更新データを前記第４のサーバに転送する手段と、を備え、
前記第４のサーバは、
前記第３のサーバから転送される更新データに基づいて前記記憶装置に記憶されるデータを更新する手段を備える
ことを特徴とする。
【０００８】
本発明の第３の観点に係るデータ記憶方法は、
各々がデータを記憶する記憶装置を備える第１のサーバ、第２のサーバ、及び第３のサーバと、それらのサーバを監視するための監視装置と、から構成され、それぞれがネットワークを介して接続されるデータ記憶システムにおけるデータ記憶方法であって、
前記第１から第３のサーバのうち予め定められた１のサーバであるプライマリサーバは、
ネットワークを介して前記記憶装置に記憶されるデータを更新するための更新データを受信し、
前記更新データに基づいて前記記憶装置に記憶されるデータを更新し、
前記更新データを他のサーバに転送し、
前記第１から第３のサーバのうち前記プライマリサーバ以外のセカンダリサーバは、
前記プライマリサーバから転送された更新データに基づいて前記記憶装置に記憶されるデータを更新し、
前記監視装置は、前記プライマリサーバの動作が停止した場合に、前記セカンダリサーバのいずれかをプライマリサーバに切り換える
ことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、データ記憶システムの信頼性を向上することができる。
【発明を実施するための最良の形態】
【００１０】
本発明の実施の形態にかかるデータ記憶システム１００について図面を参照しながら説明する。図１に示すように、データ記憶システム１００は、複数の記憶サーバ１０Ａ〜Ｃと、監視サーバ２０と、オンラインコントローラ３０と、生産装置４０と、から構成され、複数の記憶サーバ１０Ａ〜Ｃと、監視サーバ２０と、オンラインコントローラ３０と、はネットワーク５０を介して接続される。データ記憶システム１００は、生産装置４０の稼働状況を記憶サーバ１０Ａ〜１０Ｃにおいて、多重化して記憶するシステムである。このように記憶サーバ１０を多重化することで、システムの信頼性を高めている。
【００１１】
図２に示すように、記憶サーバ１０Ａ〜１０Ｃ（図中では記憶サーバ１０）は、ＣＰＵ（Central Processing Unit）１１、ＲＯＭ（Read Only Memory）１２、ＲＡＭ（Random Access Memory）１３、通信部１４、データベース１５などから構成される。記憶サーバ１０Ａ〜１０Ｃは専用のサーバである必要はなく、通常のコンピュータであってもよい。
【００１２】
ＣＰＵ１１は、記憶サーバ１０（１０Ａ〜１０Ｃ）の動作を制御する。ＲＯＭ１２には、コンピュータを記憶サーバ１０として機能させるためのプログラムが格納され、ＣＰＵ１１が当該プログラムを読み込むことで、記憶サーバ１０の機能を実現する。具体的には、オンラインコントローラ３０を介して生産装置４０から送信される更新データに基づいて、データベース１５を更新する処理などが実行される。詳しい動作については後述する。ＲＡＭ１３は、ＣＰＵ１１のワークエリアとして機能する。通信部１４は、ネットワーク５０に接続するためのインターフェースであって、記憶サーバ１０は通信部１４を介してネットワーク５０に接続される。通信部１４は、受信したデータを一時的に蓄積する受信キューと、送信するデータを一時的に蓄積する送信キューとを備える。データベース１５は、ハードディスクドライブなどから構成される記憶装置である。データベース１５は、制裁装置の稼働履歴を蓄積して記憶する。なお、図２では、記憶サーバ１０の一般的な構成を示しているが、それぞれの記憶サーバ１０Ａ〜１０Ｃ個別の構成を示す場合は、各構成に記憶サーバ１０と同じアルファベットが付されるものとする。例えば、記憶サーバ１０ＢのＣＰＵ１０は、ＣＰＵ１０Ｂと表記する。
【００１３】
監視サーバ２０は、記憶サーバ１０の稼働状況を監視するサーバであり、記憶サーバ１０と同様のＣＰＵ、ＲＯＭ、ＲＡＭ、通信部などを備える（図示せず）。監視サーバ２０は専用のサーバである必要はなく、通常のコンピュータであってもよい。監視サーバ２０のＲＯＭには、コンピュータを監視サーバ２０として機能させるためのプログラムが格納され、監視サーバ２０のＣＰＵが当該プログラムを読み込むことで、監視サーバ２０の機能を実現する。例えば、記憶サーバ１０Ａ〜１０Ｃをネットワーク５０を介して監視（モニタリング）し、記憶サーバ１０Ａ〜１０Ｃに障害が発生しているか否かを判別する処理などを実行する。具体的には、記憶サーバ１０Ａ〜１０Ｃに応答するように要求をする信号を送出し、応答があれば正常であると判別し、応答が無ければ異常であると判別する。
【００１４】
生産装置４０は、所定の製品を生産する装置であって、例えば１日の稼働状況（生産した製品の数量など）を示す情報を、所定周期で（例えば２４時間ごとで）オンラインコントローラ３０に送信する。生産装置４０は単独の装置であってもよいし、複数の装置であってもよい。
【００１５】
オンラインコントローラ３０は、生産装置４０から送信された情報を集計して記憶サーバに送信する。オンラインコントローラ３０は、記憶サーバ１０と同様のＣＰＵ、ＲＯＭ、ＲＡＭ、通信部などを備える（図示せず）。オンラインコントローラ３０は専用のサーバである必要はなく、通常のコンピュータであってもよい。オンラインコントローラ３０のＲＯＭには、コンピュータをオンラインコントローラ３０として機能させるためのプログラムが格納され、オンラインコントローラ３０のＣＰＵが当該プログラムを読み込むことで、オンラインコントローラ３０の機能を実現する。具体的には、生産装置４０から受信した情報を集計し、記憶サーバ１０のデータベース１５を更新するための更新データを生成して、その更新データを記憶サーバ１０（１０Ａ〜１０Ｃのいずれか）に送信する。
【００１６】
ネットワーク５０には、インターネットが使用される。また、ネットワーク５０は、ＬＡＮ（Local Area Network）やＷＡＮ（Wide Area Network）など、データ記憶システム１００専用の専用線であってもよい。また、図１に示した接続構成は一例であって、例えば、監視サーバ２０がネットワーク５０とは異なるネットワークにより記憶サーバ１０Ａ〜１０Ｃに接続されていてもよい。
【００１７】
続いて、データ記憶システム１００の具体的な動作について説明する。図３は、本発明の実施の形態にかかるデータ記憶システム１００の全体的な動作を示す図である。
【００１８】
先ず、生産装置４０が所定のタイミングで生産装置４０の稼働状況を示す生産情報をオンラインコントローラ３０に送信する（ステップＳ１１）。そして、オンラインコントローラ３０が受信した生産情報を集計し、記憶サーバ１０のデータベースを更新するための更新データを生成し、生成した更新データを記憶サーバ１０Ａ（プライマリサーバ）に送信する（ステップＳ１２）。
【００１９】
ここでプライマリサーバとは、記憶サーバ１０Ａ〜１０Ｃのうちの予め定められた１台のサーバであり、ここでは記憶サーバ１０Ａがプライマリサーバとなっている。なお、プライマリサーバ以外の記憶サーバ１０をセカンダリサーバと称する。プライマリサーバは、ネットワークにおける論理アドレスが予め定められており、オンラインコントローラ３０は、そのアドレスに更新データを送信するようになっている。即ち、オンラインコントローラ３０は、どの記憶サーバ１０がプライマリサーバであるかを意識せずに更新データをプライマリサーバに送信することができる。
【００２０】
記憶サーバ１０Ａが更新データを受信すると、データベース更新処理を開始する（ステップＳ１３）。このデータベース更新処理では、更新データに基づいてデータベース１５Ａを更新する処理が実行される。また、プライマリサーバのデータベース更新処理においては、受信した更新データを各セカンダリサーバに転送する処理が実行される（ステップＳ１４）。さらに、プライマリサーバのデータベース更新処理においては、データベース１５Ａの更新が完了すると、更新が完了したことを示す更新完了通知をオンラインコントローラ３０に送信する（ステップＳ１５）。なお、セカンダリサーバのデータベース更新処理においては、更新データに基づいてデータベース１５Ｂ、１５Ｃを更新する処理のみが実行される（Ｓ１３）。以上のようにして、生産装置４０の稼働状況を、記憶サーバ１０Ａ〜１０Ｃにおいて多重化して記憶することができる。
【００２１】
次に、プライマリサーバである記憶サーバ１０Ａに異常が発生した際に、プライマリサーバを切り換える動作と、そのときの生産装置４０の稼働状況を、記憶サーバ１０Ｂ、１０Ｃにおいて多重化して記憶する動作について図４を用いて説明する。なお、図４において図３の処理と同様の処理については同じステップ番号を付して説明は省略する。
【００２２】
図４に示すように、記憶サーバ１０Ａに異常が発生した場合、監視サーバ２０がその異常を検出する。プライマリサーバに異常が発生したので、監視サーバ２０はセカンダリサーバである記憶サーバ１０Ｂをプライマリサーバに切り換えるため、プライマリ切換指示を記憶サーバ１０Ｂに送信する（ステップＴ１１）。このプライマリ切換指示の送信は、監視サーバ２０が異常を検出したことに基づいて自動で送信するようにしてもよいし、監視サーバ２０を使用するユーザが手動で送信してもよい。
【００２３】
プライマリ切換指示を受信した記憶サーバ１０Ｂはプライマリサーバに切り換えるためのプライマリ切換処理を開始する（ステップＴ１２）。この処理により、記憶サーバ１０Ｂがプライマリサーバとなる。
【００２４】
記憶サーバ１０Ａに異常発生中に、オンラインコントローラ３０が、更新データを記憶サーバ１０Ａ（プライマリサーバ）に送信すると（ステップＳ１２）、通信エラーとなる。このとき、更新データの送信に失敗したことを検出して通信エラーであることを判別してもよいし、更新データ送信から所定時間経過するまでに更新完了通知を受信しなかった場合に通信エラーであると判別するようにしてもよい。
【００２５】
このように、通信エラーとなった場合、オンラインコントローラ３０は更新データを再送する（ステップＳ２１）。この再送の時点で記憶サーバ１０Ｂのアドレスが、プライマリサーバのアドレスに切り換わっていれば、更新データは記憶サーバ１０Ｂに送信される。記憶サーバ１０Ｂが更新データを受信するとデータベース更新処理を開始する（ステップＳ１３）。
【００２６】
このときに、更新データを記憶サーバ１０Ａに転送する処理が実行されるが（ステップＳ１４）、送信エラーとなる。そこで、その更新データを後に再送できるように、その更新データを記憶サーバ１０Ｂの通信部１４Ｂが備える送信キューに蓄積する。記憶サーバ１０Ｂがデータベース１５Ｂの更新を完了すると、更新が完了したことを示す更新完了通知をオンラインコントローラ３０に送信する（ステップＳ１５）。
【００２７】
このように、記憶サーバ１０Ａに異常が発生した場合にも、生産装置４０やオンラインコントローラ３０の動作を止めることなく、生産装置４０の稼働状況を記憶サーバ１０Ｂ、１０Ｃにおいて多重化して記憶することができる。
【００２８】
ここで、図３、図４におけるデータベース更新処理（ステップＳ１３）、プライマリ切換処理（ステップＴ１２）の詳細な動作について説明する。
【００２９】
図５は、データベース更新処理の動作を示すフローチャートである。各記憶サーバ１０のＣＰＵ１１は、所定周期でデータベース更新処理を実行する。そして、更新データの受信を検出すると（ステップＳ１０１；Ｙｅｓ）、当該更新データに基づいてデータベース１５を更新する（ステップＳ１０２）。そして、ＲＡＭ１３の所定領域などに設けられたプライマリフラグがオンになっているか否かを判別する（ステップＳ１０３）。この処理により、ＣＰＵ１１は記憶サーバ１０がプライマリサーバであるか否かを判別する。プライマリフラグがオフであれば（ステップＳ１０３；Ｎｏ）、処理を終える。プラマリフラグがオンであれば（ステップＳ１０３；Ｙｅｓ）、プライマリサーバ特有の処理を実行する。まず、ＣＰＵ１１は、更新データをセカンダリサーバに転送する（ステップＳ１０４）。そして、更新データのセカンダリサーバへの転送が成功したか否かを判別する（ステップＳ１０５）。転送が成功しなかった場合（ステップＳ１０５；Ｎｏ）、通信部１４が備える送信キューに更新データを蓄積する（ステップＳ１０６）。更新データの転送が成功した場合や、送信キューに更新データを蓄積した後、オンラインコントローラ３０に更新完了通知を送信して処理を終える。
【００３０】
図６は、プライマリ切換処理の動作を示すフローチャートである。各記憶サーバ１０のＣＰＵ１１は、所定周期でプライマリ切換処理を実行する。そして、プライマリ切換指示の受信を検出すると（ステップＳ２０１；Ｙｅｓ）、ＣＰＵ１１は、ＲＡＭ１３の所定領域に設けられるプライマリフラグをオンにセットする（ステップＳ２０２）。そして、ネットワーク５０における論理アドレスをプライマリサーバのアドレスに変更して（ステップＳ２０３）、処理を終える。
【００３１】
次に、異常が発生した記憶サーバ１０Ａを復旧させるときの動作について図７、図８を用いて説明する。なお、図７、図８において図４において図３の処理と同様の処理については同じステップ番号を付して説明は省略する。
【００３２】
異常が発生して停止している記憶サーバ１０Ａの修理が完了し、ネットワーク５０への接続が完了すると、ユーザが監視サーバ２０を操作して、セカンダリサーバである記憶サーバ１０Ｃに停止指示を送信する（ステップＴ１３）。なお、記憶サーバ１０Ａのネットワーク５０上でのアドレスはセカンダリサーバのものとして予め定められたアドレスとなる。また、記憶サーバ１０Ａのプライマリフラグはオフとなる。
【００３３】
記憶サーバ１０Ｃが監視サーバから停止指示を受信すると、更新停止時処理を開始する（ステップＴ１４）。図９は、更新停止時処理の動作を示すフローチャートである。ＣＰＵ１１Ｃは、所定周期でデータベース更新処理を実行する。そして、停止指示の受信を検出すると（ステップＳ３０１；Ｙｅｓ）、データベース更新処理を停止する（ステップＳ３０２）。即ち、所定周期で実行していた図５に示したデータベース更新処理の実行を停止する。そして、データベース更新処理の停止中に受信する更新データを受信キューに蓄積する準備をする（ステップＳ３０３）。これにより、この間に更新データを受信した場合、受信キューに蓄積されることとなる。その後、データベース１５Ｃの記憶内容を修理が完了した記憶サーバ１０Ａのデータベース１５Ａにコピーする（ステップＳ３０４）。例えば、記憶サーバ１０Ａのアドレスにデータベース１５Ｃの記憶内容を送信するようにすればよい。そして、記憶サーバ１０Ａの側では、その内容を受信した場合、データベース１５Ａにコピーする用に設定すればよい。ステップＳ３０４の後、更新停止時処理を終える。
【００３４】
記憶サーバ１０Ｃのデータベース１５Ｃから記憶サーバ１０Ａのデータベース１５Ａへのコピーが終了すると、ユーザが監視サーバ２０を操作して、記憶サーバ１０Ａ及び１０Ｃに起動指示を送信する（図８のステップＴ１５）。記憶サーバ１０Ａ及び１０Ｃは、起動指示を受信すると、図３に示したデータベース更新処理の実行を再開する。これにより、記憶サーバ１０Ａ及び１０Ｃはセカンダリサーバとしての復旧することになる。異常から復旧した記憶サーバ１０Ａはプライマリサーバである記憶サーバ１０Ｂに再開通知を送信する（ステップＳ３１）。プライマリサーバが再開通知を受信すると、当該サーバの送信キューに蓄積された更新データを記憶サーバ１０Ａに送信する（ステップＳ３２）。記憶サーバ１０Ａでは、その更新データに基づいてデータベース更新処理が開始される（ステップＳ１３）。なお、この更新データにはすでに更新済みのデータも含まれるが、更新データの日付情報などにより特定可能である。このデータベース更新処理により、データベース１５Ａの記憶内容がプライマリサーバのデータベース１５Ｂと同期することとなる。
【００３５】
一方、更新停止時処理（ステップＴ１４）を実行した記憶サーバ１０Ｃがセカンダリサーバとして復帰すると、受信キューに蓄積された更新データに基づいてデータベース更新処理を開始する（ステップＳ１３）。このデータベース更新処理により、データベース１５Ｃの記憶内容がプライマリサーバのデータベース１５Ｂと同期することとなる。なお、図７、図８に示した記憶サーバ１０Ａを、記憶サーバ１０Ｃ（稼働中のセカンダリサーバ）を使用して復旧させる処理を下記では復旧処理ともいう。
【００３６】
このように、記憶サーバ１０Ａ及び１０Ｃをセカンダリサーバに復旧させることができる。また、復旧後に記憶サーバ１０Ｂの送信キューや記憶サーバ１０Ｃの受信キューに蓄積された更新データに基づいてデータベース更新処理が実行されることで、記憶サーバ１０Ａ〜１０Ｃのデータベース１５Ａ〜１５Ｃの記憶内容が自律的に同期する。さらに、記憶サーバ１０Ａ及び１０Ｃをセカンダリサーバに復旧させるときにも、プライマリサーバは起動しているので、継続して生産装置４０の稼働状況を記憶することができる。
【００３７】
次に、記憶サーバ１０Ｄを追加したデータ記憶システム１００の変形例について図１０を参照しながら説明する。記憶サーバ１０Ｄはネットワーク５０を介して記憶サーバ１０Ａ〜１０Ｃや、監視サーバ２０（図１０においては省略）、オンラインコントローラ３０などと接続される。この記憶サーバ１０Ｄは、基本的な構成は図２に示した記憶サーバ１０Ａ〜１０Ｃと同様であるが、ＯＳ（Operating System）やソフトウェアの一部などがバージョンアップされた記憶サーバである。この変形例では、新バージョンの記憶サーバ１０Ｄがデータ記憶システム１００上で正常に動作するか否かを評価する。なお、記憶サーバ１０Ｄのような新バージョンの記憶サーバを評価サーバとも称する。
【００３８】
まず、図７、図８に示した復旧処理と同一の動作により、セカンダリサーバ（記憶サーバ）１０Ｃのデータベース１５Ｃの記憶内容を、記憶サーバ１０Ｄのデータベース１５Ｄにコピーするなどの一連の処理を実行する（ステップＳ４１）。データベース１５Ｃ、１５Ｄの記憶内容が他のデータベースと同期したら、記憶サーバ１０Ｃにおいて、更新データ転送プロセスを起動する（ステップＳ４２）。この転送プロセスは、更新データを受信したときに、その更新データを記憶サーバ１０Ｄに転送する処理を実行するプロセスである。このプロセスにより、更新データが記憶サーバ１０Ｄに転送される（ステップＳ４３）。記憶サーバ１０Ｄでは、転送された更新データに基づいてデータベース更新処理の実行が開始される（ステップＳ１３）。
【００３９】
このような、記憶サーバ１０Ｄの稼働状況を確認することで、新バージョンの記憶サーバ１０Ｄがデータ記憶システム１００で正常に動作するか否かをテストすることができる。一般に、システムにおいて新たなバージョンのＯＳなどを導入する場合には、システム全体を新たなバージョンのＯＳなどで構築してテストする必要があり非常に手間がかかる。しかし、この変形例によれば、既存のシステムに評価サーバ１０Ｄを導入することで、実際の環境下でのテストが可能になる。また、実際の環境（データ記憶システム１００）の動作を停止する必要もない。また、評価サーバ１０Ｄが実際の環境下で正常に動作することが確認できたときには、既存の記憶サーバ１０Ａ〜１０Ｃを順次評価サーバと入れ換える（例えば、プライマリサーバ１０Ａから直接記憶サーバ１０Ｄに更新データを転送するようにして記憶サーバ１０Ｄをセカンダリサーバとする。その後、セカンダリサーバの全てが新バージョンとなったら、図４と同様の動作によりプライマリサーバを記憶サーバ１０Ａから新バージョンの記憶サーバに切り換える。）ことで、システムを停止することなく、容易にシステム全体のバージョンアップをすることができる。
【００４０】
なお、この発明は上記実施形態に限定されず、種々の変形及び応用が可能である。例えば、監視サーバ２０により、記憶サーバ１０Ａ〜１０Ｃのデータベース１５Ａ〜１５Ｃの記憶内容が同期しているか否かを確認するようにしてもよい。この確認は、例えば、各記憶サーバ１０Ａ〜１０Ｃのデータ更新処理の処理履歴を比較し、処理結果が同一であるか否かを確認することによって行う。仮に、処理結果が異なる記憶サーバがあった場合は、図７、図８で示した復旧処理と同一の動作により、処理結果が異なる記憶サーバをリカバリするようにすればよい。
【００４１】
上記実施形態では、ＣＰＵ１１が実行するプログラムは、予めＲＯＭ１２に格納されているものとして説明したが、外部記憶媒体や通信網を介してデータ記憶サーバ１０の所定領域に格納されるものであってもよい。
【図面の簡単な説明】
【００４２】
【図１】データ記憶システムの構成を示す図である。
【図２】記憶サーバの構成を示すブロック図である。
【図３】データ記憶システムの動作を説明するための図である。
【図４】データ記憶システムの動作を説明するための図である。
【図５】データベース更新処理の動作を示すフローチャートである。
【図６】プライマリ切換処理の動作を示すフローチャートである。
【図７】データ記憶システムの復旧処理の動作を説明するための図である。
【図８】データ記憶システムの復旧処理の動作を説明するための図である。
【図９】更新停止時処理の動作を示すフローチャートである。
【図１０】変形例のデータ記憶システムの動作を説明するための図である。
【符号の説明】
【００４３】
１０（１０Ａ、１０Ｂ、１０Ｃ）  記憶サーバ
２０  監視サーバ
３０  オンラインコントローラ
４０  生産装置
１００  データ記憶システム
【図１】
2010067115.tif 000003
【図２】
2010067115.tif 000004
【図３】
2010067115.tif 000005
【図４】
2010067115.tif 000006
【図５】
2010067115.tif 000007
【図６】
2010067115.tif 000008
【図７】
2010067115.tif 000009
【図８】
2010067115.tif 000010
【図９】
2010067115.tif 000011
【図１０】
2010067115.tif 000012