JP2012215937A - データベースのストリーム型レプリケーション機能を用いたスケールアップとダウン方法及びシステム - Google Patents
データベースのストリーム型レプリケーション機能を用いたスケールアップとダウン方法及びシステム Download PDFInfo
- Publication number
- JP2012215937A JP2012215937A JP2011079001A JP2011079001A JP2012215937A JP 2012215937 A JP2012215937 A JP 2012215937A JP 2011079001 A JP2011079001 A JP 2011079001A JP 2011079001 A JP2011079001 A JP 2011079001A JP 2012215937 A JP2012215937 A JP 2012215937A
- Authority
- JP
- Japan
- Prior art keywords
- scale
- database
- rdbms
- replication function
- stream type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】 ストリーム型レプリケーション機能を持つデータベースのスケールUP/DOWNを、そのストリーム型レプリケーション機能を活用し、Webサービスを止めることなく動的に、かつ低コストで実現すること。
【解決手段】
性能の異なる仮想マシン上で稼動する第1および第2のデータベースを備え、外部からの指示に応じて、システムが利用している仮想マシンを入れ替え、システムの性能をスケールアップ及びスケールダウンさせる方法であって、
前記システムが、
前記データベースが備えるストリーム型レプリケーション機能を用いて前記データベースのデータ同期をとる第1のステップと、データ同期確立後に、SQL文を転送する仮想マシンを他の仮想マシンに切り替える第2のステップとを備えることを特徴とする。
【選択図】 図1
【解決手段】
性能の異なる仮想マシン上で稼動する第1および第2のデータベースを備え、外部からの指示に応じて、システムが利用している仮想マシンを入れ替え、システムの性能をスケールアップ及びスケールダウンさせる方法であって、
前記システムが、
前記データベースが備えるストリーム型レプリケーション機能を用いて前記データベースのデータ同期をとる第1のステップと、データ同期確立後に、SQL文を転送する仮想マシンを他の仮想マシンに切り替える第2のステップとを備えることを特徴とする。
【選択図】 図1
Description
本発明は、IaaS(infrastructure as a Service)などで提供される仮想マシンインスタンス上などで動作する、ストリーム型レプリケーション機能を持つリレーショナルデータベースマネージメントシステム(以下、RDBMS)に対し、SQL問い合わせを中継するプロキシを用いて、Webアプリケーションケーションの停止を必要とせず動的に、スケールUP及びスケールDOWNを実現する技術に関するものである。
現在、仮想マシンインスタンスを提供するIaaSが数多く提供されている。その中でもAmazon Web Services(以下、AWSと略す)のEC2のように、様々な性能のインスタンスを時間単位の課金で利用できるIaaSは、サービス利用者の増減に伴う負荷の増減に合わせて、計算資源の利用コストをスケールすることが可能であるため、多くのWebサービスで利用されつつある。
このようなWebサービスは、一般的にWebアプリケーションケーションとデータベースで構成されているが、Webアプリケーションケーションについては、負荷に応じて動的にインスタンス(仮想マシン)を増減させるスケールOUT/INの手法が一般的に利用されている。また、スケールOUT/IN機能は、既にIaaSベンダ自身やサードパーティから提供されている。
データベースについても、負荷に応じて処理性能を変化させる方法は幾つか提案されている。
下記の非特許文献1に挙げられるような従来型のクラスタ技術では、参照性能のみではあるが、非特許文献2のようなストリーム型レプリケーション機能を用いることで、動的に参照用のRDBMSサーバを作成することができ、簡単に性能向上が可能である。ただし、更新性能は向上しないため、参照比率が高いシステムしか効果を得られない。
このようなWebサービスは、一般的にWebアプリケーションケーションとデータベースで構成されているが、Webアプリケーションケーションについては、負荷に応じて動的にインスタンス(仮想マシン)を増減させるスケールOUT/INの手法が一般的に利用されている。また、スケールOUT/IN機能は、既にIaaSベンダ自身やサードパーティから提供されている。
データベースについても、負荷に応じて処理性能を変化させる方法は幾つか提案されている。
下記の非特許文献1に挙げられるような従来型のクラスタ技術では、参照性能のみではあるが、非特許文献2のようなストリーム型レプリケーション機能を用いることで、動的に参照用のRDBMSサーバを作成することができ、簡単に性能向上が可能である。ただし、更新性能は向上しないため、参照比率が高いシステムしか効果を得られない。
これに対し、更新性能も向上させる方法もいくつか出てきている。
例えば、インスタンス数を増減させて処理性能を変化させるスケールOUT/INを実現する方法としては、下記の非特許文献3に代表されるNoSQLと分類されるデータベースがある。
また、下記の非特許文献4や非特許文献5などのように、更新性能も台数に応じてリニアに向上できるクラスタ技術も現れてきている。しかし、これらの方法は従来のRDBMSと同様の機能が提供されなかったり、従来のRDBMSと同様のインタフェースが提供されなかったり、常に3台以上稼動する構成でないと、1台の性能より劣ってしまうなど、様々な問題がある。また、動的に台数を増減させる方法も確立されていない。
例えば、インスタンス数を増減させて処理性能を変化させるスケールOUT/INを実現する方法としては、下記の非特許文献3に代表されるNoSQLと分類されるデータベースがある。
また、下記の非特許文献4や非特許文献5などのように、更新性能も台数に応じてリニアに向上できるクラスタ技術も現れてきている。しかし、これらの方法は従来のRDBMSと同様の機能が提供されなかったり、従来のRDBMSと同様のインタフェースが提供されなかったり、常に3台以上稼動する構成でないと、1台の性能より劣ってしまうなど、様々な問題がある。また、動的に台数を増減させる方法も確立されていない。
一方、RDBMSが稼動するインスタンスを、性能が異なるインスタンスに入れ替えことで負荷に応じた性能に変更するスケールUP/DOWNを実現する方法もある。
例えば、pgpool-IIのレプリケーションとオンラインリカバリ機能を用いれば、インスタンスを入れ替えることは可能である。しかし、オンラインリカバリ中でも、一時的にRDBMSの接続を止める必要があり、その間はサービスが停止してしまう。
特許文献1に開示された技術を用いれば、停止せずにインスタンスを入れ替えることが可能ではあるが、RDBMS自体に、特許文献1で示された処理を行う機能を持つ必要がある。このため、既存のRDBMSに、この方法を容易に実現することは困難である。
さらに、特許文献1の方法は、実機環境でマシン環境の変化が少ない場面におけるサーバの故障時や、スレーブサーバの追加を想定している。IaaS上で負荷に応じてRDBMSの処理性能を変化させる場合には、数時間や一日単位でインスタンスを入れ替えなければならない。特許文献1の方法では、データ転送量やコピーなどの処理時間が大きく、データ転送量や入れ替えコストが増大してしまう。そのため、入れ替えのための時間が大きくなる上、データ転送量やインスタンスの起動時間で課金されるIaaSではコスト増となる。従って、このような場合には特許文献1の方法は適さない。
例えば、pgpool-IIのレプリケーションとオンラインリカバリ機能を用いれば、インスタンスを入れ替えることは可能である。しかし、オンラインリカバリ中でも、一時的にRDBMSの接続を止める必要があり、その間はサービスが停止してしまう。
特許文献1に開示された技術を用いれば、停止せずにインスタンスを入れ替えることが可能ではあるが、RDBMS自体に、特許文献1で示された処理を行う機能を持つ必要がある。このため、既存のRDBMSに、この方法を容易に実現することは困難である。
さらに、特許文献1の方法は、実機環境でマシン環境の変化が少ない場面におけるサーバの故障時や、スレーブサーバの追加を想定している。IaaS上で負荷に応じてRDBMSの処理性能を変化させる場合には、数時間や一日単位でインスタンスを入れ替えなければならない。特許文献1の方法では、データ転送量やコピーなどの処理時間が大きく、データ転送量や入れ替えコストが増大してしまう。そのため、入れ替えのための時間が大きくなる上、データ転送量やインスタンスの起動時間で課金されるIaaSではコスト増となる。従って、このような場合には特許文献1の方法は適さない。
pgpool-II http://pgpool.projects.postgresql.org/pgpool-II/doc/pgpool-ja.html
Streaming Replication http://wiki.postgresql.org/wiki/Streaming_Replication
CouchDB http://oss.infoscience.co.jp/couchdb/main/docs/overview.html
Postgres-XC http://postgres-xc.sourceforge.net/
VoltDB http://voltdb.com/content/voltdb-oltp-database-youll-never-outgrow
本発明は上記のような問題に鑑みなされたもので、その目的は、IaaSなどで提供される仮想マシンインスタンス上等で動作する、ストリーム型レプリケーション機能を持つRDBMSのスケールアップ及びダウンを、そのストリーム型レプリケーション機能を活用し、Webサービスを止めることなく動的に、かつ低コストでインスタンスの入れ替えを行うことで実現する方法及びシステムを提供することにある。
上記目的を達成するために、本発明に係る方法は、性能の異なる仮想マシン上で稼動する第1および第2のデータベースを備え、外部からの指示に応じて、システムが利用している仮想マシンを入れ替え、システムの性能をスケールアップ及びスケールダウンさせる方法であって、
前記システムが、
前記データベースが備えるストリーム型レプリケーション機能を用いて前記データベースのデータ同期をとる第1のステップと、
データ同期確立後に、SQL文を転送する仮想マシンを他の仮想マシンに切り替える第2のステップと、
を備えることを特徴とする。
前記システムが、
前記データベースが備えるストリーム型レプリケーション機能を用いて前記データベースのデータ同期をとる第1のステップと、
データ同期確立後に、SQL文を転送する仮想マシンを他の仮想マシンに切り替える第2のステップと、
を備えることを特徴とする。
また、本発明に係るシステムは、性能の異なる仮想マシン上で稼動する第1および第2のデータベースを備え、外部からの指示に応じて、システムが利用している仮想マシンを入れ替え、システムの性能をスケールアップ及びスケールダウンさせるデータベースシステムであって、
前記データベースが備えるストリーム型レプリケーション機能を用いて前記データベースのデータ同期をとる第1の手段と、データ同期確立後に、SQL文を転送する仮想マシンを他の仮想マシンに切り替える第2の手段とを備えることを特徴とする。
前記データベースが備えるストリーム型レプリケーション機能を用いて前記データベースのデータ同期をとる第1の手段と、データ同期確立後に、SQL文を転送する仮想マシンを他の仮想マシンに切り替える第2の手段とを備えることを特徴とする。
本発明によれば、RDBMSが持つストリーム型レプリケーション機能を用いてDBデータ同期を行い、同期が出来次第プロキシがSQL文を転送するRDBMSを変更することによりインスタンスを入れ替えるため、Webサービス等で利用されているRDBMSを、Webアプリケーションケーション及びそれにより提供されるサービスを止めることなく、動的に、かつ短時間及び低コストでスケールアップ及びダウンすることができる。
以下、本発明を実施する場合の一形態を、図面を参照して具体的に説明する。
図1は、本発明の実施の形態を示すシステム構成図である。
本実施形態のシステムは、IaaS100上の仮想マシンサービスを用いたインスタンス群とストレージサービスを用いたストレージ群で構成される。
IaaS100上には、Webアプリケーション用インスタンス110、コントロール・プロキシ用インスタンス120、DBシステムA130を構成するDBMS用インスタンスA140とデータを保管するストレージA150、DBシステムB160を構成するDBMS用インスタンスB170とデータを保管するストレージB180が配置されている。
図1は、本発明の実施の形態を示すシステム構成図である。
本実施形態のシステムは、IaaS100上の仮想マシンサービスを用いたインスタンス群とストレージサービスを用いたストレージ群で構成される。
IaaS100上には、Webアプリケーション用インスタンス110、コントロール・プロキシ用インスタンス120、DBシステムA130を構成するDBMS用インスタンスA140とデータを保管するストレージA150、DBシステムB160を構成するDBMS用インスタンスB170とデータを保管するストレージB180が配置されている。
Webアプリケーション用インスタンス110には、Webアプリケーション111及びそれを動作させる一連のプログラムが配置されている。
このWebアプリケーション111は、RDBMSの代わりに後述のコントロール・プロキシ用インスタンス120上の制御プロキシ部122にSQL文を発行し、その結果を受け取る。
コントロール・プロキシ用インスタンス120には、コントロール部121及び制御プロキシ部122が配置されている。
コントロール部121は、RDBMSのスケールUP/DOWNを行う管理者の要求に応じ、スケールUP/DOWNに必要となるインスタンスの起動停止や、インスタンス上のRDBMSの起動停止、制御プロキシ部122のコントロール等を行う。
このWebアプリケーション111は、RDBMSの代わりに後述のコントロール・プロキシ用インスタンス120上の制御プロキシ部122にSQL文を発行し、その結果を受け取る。
コントロール・プロキシ用インスタンス120には、コントロール部121及び制御プロキシ部122が配置されている。
コントロール部121は、RDBMSのスケールUP/DOWNを行う管理者の要求に応じ、スケールUP/DOWNに必要となるインスタンスの起動停止や、インスタンス上のRDBMSの起動停止、制御プロキシ部122のコントロール等を行う。
制御プロキシ部122は、Webアプリケーション111から受けたSQL文を、Webアプリケーション111の代わりに後述するDBシステムA130やDBシステムB160に転送し、その結果を受けてWebアプリケーション111に返したり、コントロール部121の要求に応じて、DBシステムA130やDBシステムB160へのSQL文転送を一時中断したり、SQL文を転送するDBシステムを切り替えたりする。
DBシステムA130及びDBシステムB160は、入れ替え元及び入れ替え先となるDBシステムである。どちらも同じ構成となっており、DBMS用インスタンスA140及びDBMS用インスタンスB170には、ストリーム型複製処理部142及び172を内蔵し、ストリーム型レプリケーション機能を持つRDBMS−A141、RDBMS−B171が各々配置されている。
また、ストレージA150及びストレージB180には、RDBMS−A141及びRDBMS−B171が各々利用するDBデータA151及びDBデータB181が配置されている。
DBシステムA130及びDBシステムB160は、入れ替え元及び入れ替え先となるDBシステムである。どちらも同じ構成となっており、DBMS用インスタンスA140及びDBMS用インスタンスB170には、ストリーム型複製処理部142及び172を内蔵し、ストリーム型レプリケーション機能を持つRDBMS−A141、RDBMS−B171が各々配置されている。
また、ストレージA150及びストレージB180には、RDBMS−A141及びRDBMS−B171が各々利用するDBデータA151及びDBデータB181が配置されている。
以下では、入れ替え開始時点で利用されている入れ替え元をDBシステムA130、入れ替え終了時に利用されている入れ替え先をDBシステムB160として説明する。
ここで、入れ替え処理を説明する前に、入れ替え開始前の状態を図2で説明する。
入れ替え開始前の状態では、DBシステムA130が利用され、DBMS用インスタンスB170は稼動していない。
入れ替え開始前の状態では、Webアプリケーション111が発行したSQL文は、黒矢印201で示すように、コントロール・プロキシ用インスタンス120の制御プロキシ部122に送られる。
制御プロキシ部122は、黒矢印202で示すように、全てのSQL文を、DBMS用インスタンスA140のRDBMS−A141に転送する。
RDBMS−A141はストレージA150のDBデータA151を用いてSQL文を処理し、その結果を、制御プロキシ部122を経由して、Webアプリケーション111に返答する。また、詳細は後述するが、制御プロキシ部122では、Webアプリケーション111からの接続セッションにおいて、トランザクション開始及び終了を識別する。
ここで、入れ替え処理を説明する前に、入れ替え開始前の状態を図2で説明する。
入れ替え開始前の状態では、DBシステムA130が利用され、DBMS用インスタンスB170は稼動していない。
入れ替え開始前の状態では、Webアプリケーション111が発行したSQL文は、黒矢印201で示すように、コントロール・プロキシ用インスタンス120の制御プロキシ部122に送られる。
制御プロキシ部122は、黒矢印202で示すように、全てのSQL文を、DBMS用インスタンスA140のRDBMS−A141に転送する。
RDBMS−A141はストレージA150のDBデータA151を用いてSQL文を処理し、その結果を、制御プロキシ部122を経由して、Webアプリケーション111に返答する。また、詳細は後述するが、制御プロキシ部122では、Webアプリケーション111からの接続セッションにおいて、トランザクション開始及び終了を識別する。
次に、入れ替え処理の概要フローを図3に示す。
入れ替え処理は、コントロール部121がRDBMSのスケールUP/DOWNを行う管理者から要求を受けた後、入れ替え準備処理(ステップ301)、DBシステム切り替え処理(ステップ302)、入れ替え後処理(ステップ303)の3つのフェーズで行う。以後、この順序で詳細な処理を説明する。
入れ替え処理は、コントロール部121がRDBMSのスケールUP/DOWNを行う管理者から要求を受けた後、入れ替え準備処理(ステップ301)、DBシステム切り替え処理(ステップ302)、入れ替え後処理(ステップ303)の3つのフェーズで行う。以後、この順序で詳細な処理を説明する。
入れ替え準備処理(ステップ301)の詳細な処理を図4のフローチャートに示す。
まず、コントロール・プロキシ用インスタンス120上のコントロール部121は、ストレージB180に接続した状態で、DBMS用インスタンスB170を起動する(ステップ401)。
そして、RDBMS−A141及びDBMS用インスタンスB170を操作し、DBMS用インスタンスB170上に、ストリーミング型レプリケーション機能を有効にした形で、RDBMS−B171を起動する(ステップ402)。
これは、既存技術であり、たとえばpostgreSQL9.0以降では、前記の非特許文献2に示される方法で実現できる。これにより、図5の501の矢印で示されるようにDBデータの同期が開始される(ステップ403)。ここで、DBデータB181には、以前の入れ替え時前までのDBデータが残っているため、以前の入れ替え時以降に行われた更新データのみ反映させれば良く、全てのDBデータをコピーする必要は無い。また、この同期は、ストリーミング型レプリケーション機能を用いているため、データ同期中に、黒矢印202で更新系のSQL文が発行され、DBデータA151が更新された場合でも、一定のタイムラグの後、自動的にDBデータB181に反映される。最後に、制御プロキシ部122にDB切り替え要求を行う(ステップ404)。
まず、コントロール・プロキシ用インスタンス120上のコントロール部121は、ストレージB180に接続した状態で、DBMS用インスタンスB170を起動する(ステップ401)。
そして、RDBMS−A141及びDBMS用インスタンスB170を操作し、DBMS用インスタンスB170上に、ストリーミング型レプリケーション機能を有効にした形で、RDBMS−B171を起動する(ステップ402)。
これは、既存技術であり、たとえばpostgreSQL9.0以降では、前記の非特許文献2に示される方法で実現できる。これにより、図5の501の矢印で示されるようにDBデータの同期が開始される(ステップ403)。ここで、DBデータB181には、以前の入れ替え時前までのDBデータが残っているため、以前の入れ替え時以降に行われた更新データのみ反映させれば良く、全てのDBデータをコピーする必要は無い。また、この同期は、ストリーミング型レプリケーション機能を用いているため、データ同期中に、黒矢印202で更新系のSQL文が発行され、DBデータA151が更新された場合でも、一定のタイムラグの後、自動的にDBデータB181に反映される。最後に、制御プロキシ部122にDB切り替え要求を行う(ステップ404)。
次に、DBシステム切り替え処理(ステップ302)の説明を行う前に、制御プロキシ部122の動作概要を図6で説明する。
制御プロキシ部122は、一般的なプロキシと同様に、管理を行うメイン処理部601と、接続セッション毎のSQL文プロキシ処理を行う複数のセッション処理部602から構成される。
メイン処理部601は、接続要求を受け、その接続に対応するセッション処理部602を割り当てる処理や、後述するDB切り替え処理におけるメイン処理を行うものである。
セッション処理部602は、Webアプリケーションケーション111からの接続セッションで処理要求されたSQL文を、後述する処理フローに従い、メイン処理部601で定められたRDBMSに転送し、その結果を受けてWebアプリケーションケーション111に返すものである。
次に、DBシステム切り替え処理(ステップ302)におけるメイン処理部601の処理フローを図7に示す。また、DBシステム切り替え処理(ステップ302)時を含むすべての場合のセッション処理部602の処理フローで図8に示す。
メイン処理部601は、ステップ404でコントロール部121からDB切り替え要求を受けると、全てのセッション処理部602に対して、処理中断指示を行う(ステップ701)。そして、後述するセッション処理部602の処理フロー(図8)により、各セッション処理部602から処理中断したことの報告を受け、全てのセッション処理部602で処理中断されたかをチェックする(ステップ702)。全てのセッション処理部602で処理中断されていない場合は、一定期間、例えば数秒の中断待ちを行い(ステップ703)、再度ステップ702のチェックを行う。
制御プロキシ部122は、一般的なプロキシと同様に、管理を行うメイン処理部601と、接続セッション毎のSQL文プロキシ処理を行う複数のセッション処理部602から構成される。
メイン処理部601は、接続要求を受け、その接続に対応するセッション処理部602を割り当てる処理や、後述するDB切り替え処理におけるメイン処理を行うものである。
セッション処理部602は、Webアプリケーションケーション111からの接続セッションで処理要求されたSQL文を、後述する処理フローに従い、メイン処理部601で定められたRDBMSに転送し、その結果を受けてWebアプリケーションケーション111に返すものである。
次に、DBシステム切り替え処理(ステップ302)におけるメイン処理部601の処理フローを図7に示す。また、DBシステム切り替え処理(ステップ302)時を含むすべての場合のセッション処理部602の処理フローで図8に示す。
メイン処理部601は、ステップ404でコントロール部121からDB切り替え要求を受けると、全てのセッション処理部602に対して、処理中断指示を行う(ステップ701)。そして、後述するセッション処理部602の処理フロー(図8)により、各セッション処理部602から処理中断したことの報告を受け、全てのセッション処理部602で処理中断されたかをチェックする(ステップ702)。全てのセッション処理部602で処理中断されていない場合は、一定期間、例えば数秒の中断待ちを行い(ステップ703)、再度ステップ702のチェックを行う。
ステップ702において、全てのセッション処理部602で処理中断が確認できた場合は、次にRDBMS−A141及びRDBMS−B171の機能を用いてデータ同期が終了しているか、同期されていないSQL文処理が無いかを確認する(ステップ704)。
postgreSQLの場合、例えば非特許文献2に示されている方法で、ストリーミングレプリケーション機能の状態確認を行ことで同期を確認できる。
ステップ704においてデータ同期が終了していない場合は、一定期間、例えば数秒の同期待ちを行い、再度ステップ704のチェックを行う。
ステップ704において、データ同期が終了していた場合は、各セッション処理部602がSQLを転送するRDBMSを、RDBMS−A141からRDBMS−B171に変更する(ステップ706)。そして、各セッション処理部602に処理再開指示を行う(ステップ707)。
postgreSQLの場合、例えば非特許文献2に示されている方法で、ストリーミングレプリケーション機能の状態確認を行ことで同期を確認できる。
ステップ704においてデータ同期が終了していない場合は、一定期間、例えば数秒の同期待ちを行い、再度ステップ704のチェックを行う。
ステップ704において、データ同期が終了していた場合は、各セッション処理部602がSQLを転送するRDBMSを、RDBMS−A141からRDBMS−B171に変更する(ステップ706)。そして、各セッション処理部602に処理再開指示を行う(ステップ707)。
次に、DBシステム切り替え処理を含むすべての場合のセッション処理部602の処理を、図8を用いて説明する。
メイン処理部601から各々の接続セッションに割り当てられたセッション処理部602は、まずWebアプリケーションケーション111からの要求が、接続セッションの終了要求かどうかをチェックする(ステップ801)。もし、接続セッションの終了要求であれば、そのまま処理を終了する。しかし、接続セッションの終了要求でなければ、SQL文を受信する(ステップ802)。
次に、メイン処理部601から図7のステップ701の中断指示が来ているかどうかをチェックする(ステップ803)。ステップ803で中断指示されていた場合は、一定期間、例えば数ミリ秒程度の再開指示待ちを行い(ステップ804)、メイン処理部601から図7のステップ707の再開指示が来ているかをチェックする(ステップ805)。
ステップ805において、再開指示されていなければ、ステップ804に戻り、再度再開指示待ちを行う。ステップ805において再開指示されていた場合、もしくは、ステップ803で中断指示されていなかった場合は、ステップ802で受けたSQL文がトランザクション開始要求かどうかをチェックする(ステップ806)。トランザクション開始要求でなければ、そのSQL文をメイン処理部601で定められたRDBMSに転送し、その結果Webアプリケーションケーション111に返答する(ステップ807)。その後、ステップ801に戻る。
メイン処理部601から各々の接続セッションに割り当てられたセッション処理部602は、まずWebアプリケーションケーション111からの要求が、接続セッションの終了要求かどうかをチェックする(ステップ801)。もし、接続セッションの終了要求であれば、そのまま処理を終了する。しかし、接続セッションの終了要求でなければ、SQL文を受信する(ステップ802)。
次に、メイン処理部601から図7のステップ701の中断指示が来ているかどうかをチェックする(ステップ803)。ステップ803で中断指示されていた場合は、一定期間、例えば数ミリ秒程度の再開指示待ちを行い(ステップ804)、メイン処理部601から図7のステップ707の再開指示が来ているかをチェックする(ステップ805)。
ステップ805において、再開指示されていなければ、ステップ804に戻り、再度再開指示待ちを行う。ステップ805において再開指示されていた場合、もしくは、ステップ803で中断指示されていなかった場合は、ステップ802で受けたSQL文がトランザクション開始要求かどうかをチェックする(ステップ806)。トランザクション開始要求でなければ、そのSQL文をメイン処理部601で定められたRDBMSに転送し、その結果Webアプリケーションケーション111に返答する(ステップ807)。その後、ステップ801に戻る。
ステップ806において、トランザクション開始要求である場合は、ステップ802で受けたSQL文に対し、ステップ807と同様の処理を行う(ステップ808)。ステップ808の後、Webアプリケーションケーション111から、トランザクションに含まれるSQL文を受信し(ステップ809)、そのSQL文に対しステップ807と同様の処理を行う(ステップ810)。
ステップ810の後、ステップ809で受信したSQL文がトランザクション終了要求かどうかをチェックする(ステップ811)。トランザクション終了要求でなければ、ステップ809に戻り、トランザクション内のSQL文処理を行う。しかし、トランザクション終了要求の場合は、ステップ801に戻る。
これにより、トランザクション中は、ステップ809からステップ811をループするため、中断及び転送するDB切り替えも行われない。このため、トランザクションの処理の一貫性が失われることはない。また、トランザクション終了直後を含め、トランザクション中でない場合は、ステップ803の中断指示の判定処理の結果に応じて、メイン処理部601によって転送するDB切り替えが行われる。
ステップ810の後、ステップ809で受信したSQL文がトランザクション終了要求かどうかをチェックする(ステップ811)。トランザクション終了要求でなければ、ステップ809に戻り、トランザクション内のSQL文処理を行う。しかし、トランザクション終了要求の場合は、ステップ801に戻る。
これにより、トランザクション中は、ステップ809からステップ811をループするため、中断及び転送するDB切り替えも行われない。このため、トランザクションの処理の一貫性が失われることはない。また、トランザクション終了直後を含め、トランザクション中でない場合は、ステップ803の中断指示の判定処理の結果に応じて、メイン処理部601によって転送するDB切り替えが行われる。
DBシステム切り替え処理(ステップ302)の後のシステム状況を図9に示す。
DBシステム切り替え処理により、黒矢印901に示されるようにSQL文が転送されるRDBMSがRDBMS−A141からRDBMS−B171に切り替わっている。
次に、入れ替え後処理(ステップ303)の詳細な処理フローを図10に示す。
まず、コントロール部121は、DBMS用インスタンスA140上で稼働しているRDBMS−A141を停止する(ステップ1001)。RDBMS−A141は、DBシステム切り替え処理(ステップ302)により、SQL文が転送されてくることはないため、停止してもシステム全体の影響は無い。
DBシステム切り替え処理により、黒矢印901に示されるようにSQL文が転送されるRDBMSがRDBMS−A141からRDBMS−B171に切り替わっている。
次に、入れ替え後処理(ステップ303)の詳細な処理フローを図10に示す。
まず、コントロール部121は、DBMS用インスタンスA140上で稼働しているRDBMS−A141を停止する(ステップ1001)。RDBMS−A141は、DBシステム切り替え処理(ステップ302)により、SQL文が転送されてくることはないため、停止してもシステム全体の影響は無い。
次に、DBMS用インスタンスA140から、ストレージA150を切り離し、DBMS用インスタンスA140を停止する(ステップ1002)。ステップ1001により、RDBMS−A141は停止しているため、DBMS用インスタンスA140を停止してもシステム全体に影響はない。また、ストレージA150上のDBデータA151には、DBシステム切り替え処理(ステップ302)で切り替えが行われる以前までのDBデータが、保管されることとなる。
入れ替え後処理(ステップ303)の後のシステム状態を図11に示す。図2に示した入れ替え開始前の状態と比較すると、入れ替え元をDBシステムA130と、入れ替え先をDBシステムB160が完全に入れ替わっており、DBの入れ替え処理が終了していることが分かる。
本発明では、再度入れ替えを行うことも可能である。また、Webアプリケーション111からのSQL文は、どの時点でも同期されたデータを持つDBシステムA130もしくはDBシステムB160で処理されるため、動的な入れ替えも実現できている。
さらに、ストレージA150上のDBデータA151には、切り替えが行われる以前までのDBデータが、保管されているため、ステップ403で開始されるデータ同期では、前回の切り替えからの差分データのみ同期すればよい。このため、特許文献1のように全てのデータをコピーする必要はない。
以上により、IaaSで提供される異なる性能のインスタンスを、上記のシステムで入れ替えることにより、動的なスケールUP及びDOWNが実現できる。
さらに、ストレージA150上のDBデータA151には、切り替えが行われる以前までのDBデータが、保管されているため、ステップ403で開始されるデータ同期では、前回の切り替えからの差分データのみ同期すればよい。このため、特許文献1のように全てのデータをコピーする必要はない。
以上により、IaaSで提供される異なる性能のインスタンスを、上記のシステムで入れ替えることにより、動的なスケールUP及びDOWNが実現できる。
100…IaaS、110…Webアプリケーション用インスタンス、111…Webアプリケーション、120…コントロール・プロキシ用インスタンス、121…コントロール部、122…制御プロキシ部、130…DBシステムA、140…DBMS用インスタンスA、141…RDBMS−A、142…ストリーム複製処理部、150…ストレージA、151…DBデータA、160…DBシステムB、170…DBMS用インスタンスB、171…RSBMS−B、172…ストリーム複製処理部、180…ストレージB、181…DBデータB
Claims (2)
- 性能の異なる仮想マシン上で稼動する第1および第2のデータベースを備え、外部からの指示に応じて、システムが利用している仮想マシンを入れ替え、システムの性能をスケールアップ及びスケールダウンさせる方法であって、
前記システムが、
前記データベースが備えるストリーム型レプリケーション機能を用いて前記データベースのデータ同期をとる第1のステップと、
データ同期確立後に、SQL文を転送する仮想マシンを他の仮想マシンに切り替える第2のステップと、
を備えることを特徴とするスケールアップ及びスケールダウン方法。 - 性能の異なる仮想マシン上で稼動する第1および第2のデータベースを備え、外部からの指示に応じて、システムが利用している仮想マシンを入れ替え、システムの性能をスケールアップ及びスケールダウンさせるデータベースシステムであって、
前記データベースが備えるストリーム型レプリケーション機能を用いて前記データベースのデータ同期をとる第1の手段と、
データ同期確立後に、SQL文を転送する仮想マシンを他の仮想マシンに切り替える第2の手段と、
を備えることを特徴とするデータベースシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011079001A JP2012215937A (ja) | 2011-03-31 | 2011-03-31 | データベースのストリーム型レプリケーション機能を用いたスケールアップとダウン方法及びシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011079001A JP2012215937A (ja) | 2011-03-31 | 2011-03-31 | データベースのストリーム型レプリケーション機能を用いたスケールアップとダウン方法及びシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012215937A true JP2012215937A (ja) | 2012-11-08 |
Family
ID=47268673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011079001A Pending JP2012215937A (ja) | 2011-03-31 | 2011-03-31 | データベースのストリーム型レプリケーション機能を用いたスケールアップとダウン方法及びシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012215937A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019219976A (ja) * | 2018-06-21 | 2019-12-26 | 日本電信電話株式会社 | 分散処理システムに用いられるサーバ装置、分散処理方法およびプログラム |
US10628273B2 (en) | 2015-01-30 | 2020-04-21 | Nec Corporation | Node system, server apparatus, scaling control method, and program |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003345639A (ja) * | 2002-05-27 | 2003-12-05 | Nec Soft Ltd | データベースの交換システム |
JP2011028328A (ja) * | 2009-07-21 | 2011-02-10 | Toshiba Corp | 仮想マシン配置プログラム及び装置 |
-
2011
- 2011-03-31 JP JP2011079001A patent/JP2012215937A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003345639A (ja) * | 2002-05-27 | 2003-12-05 | Nec Soft Ltd | データベースの交換システム |
JP2011028328A (ja) * | 2009-07-21 | 2011-02-10 | Toshiba Corp | 仮想マシン配置プログラム及び装置 |
Non-Patent Citations (2)
Title |
---|
CSND200900698001; 鶴長 鎮一: '大規模サイト運用のプロに学ぶ スケールアウト/スケールアップの鉄則' SoftwareDesign 第228号, 20091018, p.18-29, (株)技術評論社 * |
JPN6014015550; 鶴長 鎮一: '大規模サイト運用のプロに学ぶ スケールアウト/スケールアップの鉄則' SoftwareDesign 第228号, 20091018, p.18-29, (株)技術評論社 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10628273B2 (en) | 2015-01-30 | 2020-04-21 | Nec Corporation | Node system, server apparatus, scaling control method, and program |
JP2019219976A (ja) * | 2018-06-21 | 2019-12-26 | 日本電信電話株式会社 | 分散処理システムに用いられるサーバ装置、分散処理方法およびプログラム |
WO2019244932A1 (ja) * | 2018-06-21 | 2019-12-26 | 日本電信電話株式会社 | 分散処理システムに用いられるサーバ装置、分散処理方法およびプログラム |
JP7135489B2 (ja) | 2018-06-21 | 2022-09-13 | 日本電信電話株式会社 | 分散処理システムに用いられるサーバ装置、分散処理方法およびプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102430869B1 (ko) | 컨테이너화된 환경에서 클러스터의 라이브 마이그레이션 | |
US11249815B2 (en) | Maintaining two-site configuration for workload availability between sites at unlimited distances for products and services | |
US10084858B2 (en) | Managing continuous priority workload availability and general workload availability between sites at unlimited distances for products and services | |
KR102059251B1 (ko) | 노드 시스템, 서버 장치, 스케일링 제어 방법 및 프로그램 | |
US10482104B2 (en) | Zero-data loss recovery for active-active sites configurations | |
US20100318608A1 (en) | Systems and methods for efficient live application migration within bandwidth constrained networks | |
US20150058864A1 (en) | Management and synchronization of batch workloads with active/active sites oltp workloads | |
CN106100894A (zh) | 一种高可靠的集群运维管理方法 | |
US20200112628A1 (en) | Heartbeat in failover cluster | |
CN105721582A (zh) | 多节点文件备份系统 | |
CN102682117A (zh) | 一种数据库集群数据快速复制的方法 | |
JP2012215937A (ja) | データベースのストリーム型レプリケーション機能を用いたスケールアップとダウン方法及びシステム | |
JP2007200085A (ja) | データ複製システムおよびデータ複製方法 | |
US20200272453A1 (en) | Real-Time Version Controller | |
TW202001556A (zh) | 虛擬機器群組的容錯方法及其容錯系統 | |
JP6056408B2 (ja) | フォールトトレラントシステム | |
JP2012078993A (ja) | リレーショナルデータベースをスケールアップ及びスケールダウンさせる方法及びシステム | |
CN100563233C (zh) | 一种公共对象请求代理结构应用中的容错性方法 | |
WO2022121387A1 (zh) | 数据存储方法、装置、服务器及介质 | |
CN108616597B (zh) | 一种实现服务永不中断的分布式运行方法 | |
Dufrasne et al. | IBM z/OS Global Mirror Planning, Operations, and Best Practices | |
CN109753292A (zh) | 一种在多单实例数据库服务中部署多个应用的方法及装置 | |
US20230305947A1 (en) | Using clusters to create test instances | |
US20230334026A1 (en) | Asynchronous metadata replication and migration between compute sites | |
JP2011150459A (ja) | ディザスタリカバリシステムおよびバックアップサイト構築方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130726 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140312 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140414 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140804 |