デベロッパー
デベロッパー
高可用性データ同期アーキテクチャ
はじめに
データの同期は、企業の情報システムで重要な部分を占めるようになりました。高可用性データベースを同期させること、そして単一障害点(SPOF:Single Points of Failure)のない同期システムを構築することは、今日のデータシステムに求められる24時間稼動という要件を満たすために、解決しなければならない課題です。データ同期
データ同期環境には、リモートデータベースから統合データベースへのデータ転送と、その逆方向へのデータ転送を行うための転送メカニズムがあります。図1 同期プロセス

図2 Sybase iAnywhereのMobiLink Synchronizationシステム

データベースのミラーリング
最近の傾向として、企業はデータや関連するアプリケーションが常に利用可能であることを求めるようになっています。それゆえ、企業のデータベース管理システムを24時間常に稼動させ、オンラインに保つことの重要性は増しています。データベースのミラーリングは、データベース管理システムの可用性と災害復旧性を高める技術であり、データとデータ同期を常時利用できるようにします。データベースのミラーリングシステムは、それぞれ別のコンピュータ上で実行される2つあるいは3つのデータベースサーバから成り、これらのサーバの連携によってデータベースのコピーを保持します。データベースのミラーリングは、プライマリサーバ、ミラーサーバ、監視サーバという3種類のサーバによって行われます。プライマリサーバとミラーサーバはそれぞれがデータベースファイルのコピーを保持します。監視サーバはデータベースのコピーを保持せず、他の2つのサーバのうちどちらにデータベースの所有権を持たせるかを決定します。
図3 可用性の高いデータベース管理システムの構成

統合データベースの高可用性
データベースのミラーリングは統合データベースの高可用性を実現します。図4の点線は、データベースのミラーリング環境でロールの切り替えが起こった場合の、同期サーバのフェールオーバーを表しています。図4 統合データベースの高可用性

同期サーバの高可用性
データベースのミラーリング環境を用意しただけでは、データ同期システムの単一障害点の問題は解決されません。図4では、同期サーバが単一障害点になります。しかし、複数の同期サーバとロードバランサ(フェールオーバークラスタ)を使用すれば、システムの単一障害点を取り除くことができます。図5の点線は、データベースのミラーリング環境でロールの切り替えが起こった場合、あるいは同期サーバ#1で障害が発生した場合の、同期サーバのフェールオーバーを表しています。図5 単一障害点のない高可用性データ同期システム

リモートデータベースの高可用性
リモートデータベースシステムでデータベースのミラーリング環境を構築することもできますが、データ同期を起動する方法はさらに複雑になります。データ同期は、同期クライアントがリモートデータベースおよび同期サーバと接続を確立したときに起動されます。ただし、データベースのミラーリング環境では、どちらのデータベースがプライマリサーバとして稼動しているのか、常に認識されているわけではありません。同期クライアントは、プライマリサーバ(あるいは、ロールの切り替えが起こった場合はミラーサーバ)と接続を確立する必要があります。よって、必然的に同期サーバはリモートデータベースと同じマシン上になければなりません。そうすれば同期クライアントは稼動中のデータベースに接続でき、システムの単一障害点を回避できます。
同期クライアントの高可用性
同期クライアントの高可用性を実現するには、クライアント側のプライマリサーバとミラーサーバの両方のマシンに同期クライアントをインストールし、その後、外部プロシージャから同期を起動します。図6 リモートデータベースの高可用性

- アプリケーションがこの外部プロシージャを呼び出すと、その時点でプライマリデータベースサーバに指定されているコンピュータ上でのみ呼び出しが行われます。
- 同期クライアントはデータベースサーバを基準として呼び出されるので、データベースファイルを問題なく見つけることができます。
CALL xp_cmdshell( 'START dbmlsync -c dsn=MyDB -k -o c:¥¥out¥¥ml.out
-n MyPub -e sv=Version1', 'no_output' )
高可用性同期クライアントによる単一障害点の排除
データベースのミラーリングシステムでは、2台以上のマシンが停止しない限り、同期システム全体が停止することはありません。ただし、上記の解決方法では、同期クライアントを実行しているマシンが障害を起こすと、同期は停止します。この単一障害点を回避するには、両方のデータベースサーバ上のデータベースに格納されているスケジュールされたイベントから、外部プロシージャを呼び出すようにすればよいでしょう。こうすれば、外部アプリケーションからデータの同期を起動する必要はなくなります。スケジュールされたイベントはSybase iAnywhereのSQL Anywhereの特徴的な機能で、設定済みのスケジュールに基づいてロジックを起動することができます。スケジュールされたイベントは、現時点でプライマリサーバとなっているサーバ上でのみ実行されます。外部プロシージャをコールする、スケジュールされたイベントの例を以下に示します。
CREATE EVENT "SyncEvent"
HANDLER
BEGIN
event_parameter( 'NumActive' )
IF CAST( event_parameter('NumActive' ) AS INTEGER )
> 1 THEN RETURN;
END IF;
CALL xp_cmdshell( 'START dbmlsync -c dsn=MyDB -k
-o c:¥¥out¥¥ml.out -n MyPub -e sv=Version1', 'no_output' )
END;
ALTER EVENT "SyncEvent"
ADD SCHEDULE "daily_sync"
EVERY 10 MINUTES BETWEEN '09:00:00' AND '22:00:00';
まとめ
企業システムでは、これからもデータや関連アプリケーションが常に利用可能であることを望むような傾向が続いていくでしょう。企業のデータベース管理システムを24時間常に稼動させオンラインに保つことの重要性は今後も増していくと思われます。データベースのミラーリングは、データ同期環境で可用性と災害復旧性を実現する効果的な方法です。データベースミラーリング環境のフェールオーバーは迅速かつ自動的であり、シームレスで信頼性の高いサービスです。さらに、リモートデータベースからスケジュールされたイベントを利用してxp_cmdshellで同期を起動するようにすれば、ミラーリングアーキテクチャの単一障害点の問題を回避できます。
参考資料
著者紹介
Joshua Savill(Joshua Savill)
Sybase iAnywhereに勤務する、データ同期テクノロジーのプロダクトマネージャ。
New Topics
Special Ad
| “超高速無線 LAN 時代”の幕開け--新規格 11ac(Draft)に対応したバッファロー最新ルーターの潜在能力を試す | |
![]() |
バッファローは次世代無線 LAN 規格 IEEE802.11ac(Draft)通信速度最大 1,300Mbps 対応無線 LAN ルーター「WZR-1750DHP」を3月下旬に販売開始。今回、同機器を入手できたので、使用感や便利な機能についてレポートしたい。⇒詳細記事へ |
Hot Topics
IT Job
今週のIT求人情報
Interviews / Specials
Follow japan.internet.com
Popular
Access Ranking
Partner Sites










