本文へジャンプ

データベース/データ管理  >  DB2 Developer Domain  >  ライブラリー  >  技術白書-DB2ファミリー関連  >  
   
 

DB2 Universal Databaseと可用性の高いデータ保存

 


Paul C. Zikopoulos
James Stittle
Roman B. Melnyk
I
BMトロント研究所

2003年10月

 
コンテンツ
はじめに
高可用性ロードマップ

計画外停止に対応する高可用性クラスタリング

災害時復旧
要約
脚注
著者について
 

はじめに
高可用性(High Availability:HA)は、大半のコンピューティング・システムにとって望ましい特性です。堅牢なHAソリューションは、ダウンタイムを最小にします。システム停止が財政的に悪影響を及ぼすのを回避したい場合に、不可欠の能力です。

ミッションクリティカル・ソフトウェアとe-コマースに特化している市場調査会社のStandish Group Internationalは、実際に実験してデータ停止のコストを測定する調査を実施しました。あるトランザクション処理システムについて、このコスト試算を実施したところ、データ停止に伴うコストは、1分当たり約2,500ドル(1)でした。これは、1時間当たりに換算すると約15万ドルです。実際、ピーク営業時間中の停止に伴うコストは、1分当たり7,800ドル、1時間当たり実に46万8,000ドルになります。

システムの常時稼働を必要としているのはオンライン・オークションハウスやオンライン書店だけではありません。Standish Groupは、データ・ウエアハウス・システムのデータ停止関連コストも調査しました。結果は、なんと1分当たり5,800ドル、意思決定支援デリバラブルが生成されるピーク・ロード時には1分当たり6,300ドルでした。カスタマー・リレーションシップ・マネージメント(CRM)、リアルタイム・リスク・アセスメント、サプライチェーン・マネージメント(SCM)、エンタープライズ・リソース・プランニング(ERP)アプリケーションは、会社のデータ・ストリームと連携しています。ビジネス・データの要件が、会社の営業のやり方をどのように変えてきたか、わかりはじめてきたことと思います。

こうした数字は、データ停止が現実となったときに実際に失われるであろう金額について、多分慎重な見方に当たるものであるかもしれません。しかし、今日なぜ、24時間×7日ベースで休むことなくシステムを常時稼働させることにわたしたちが注力しているのか、それなりの説明を提供してくれます。

それにしても、データ停止の機会コストはなぜそれほどまでに高いのでしょうか。今日、データは、これまで以上に、企業の命綱としての性格を強めています。データは、ビジネス・インテリジェンスを構成する生の材料であり、ビジネスをとりまく活動の大部分です。したがって、一瞬でもデータ・アクセスが失われると、ビジネスは窒息し、貴重なリソース(人的および資本投資)が、非効率または使用不能になります。

企業向け市場は、ほんの3年ほど前と比べても大きく様変わりしています。顧客は、それぞれの都合でサービスを要求します。この「あなたを待っていられない」現象に、インターネット接続機能を備えた多様なデバイスの普及 − 常時接続、常時対応 − が加わり、その影響に一層拍車がかかっています。政策も、使用可能データに対する需要を高めました。Basel II(新BIS規制)などの義務的なリアルタイム・リスク評価モデルから、HIPPAAなど医療情報の保存要件についての厳格な基準まで、情報アセットは、ますます、日常の業務実施の確たる一部となっています。

根本的に、使用可能データの基礎は、使用可能なディスク・サブシステム、ネットワーキング・レイヤー、ストレージ・アーキテクチャーにあります。しかし、データ・アセットからどのように「知恵」を活用できるかは、選択するデータ管理ソフトウェアに依存します。IBM DB2® Universal DatabaseTM(DB2 UDB)は、信頼性と可用性を目的に構築されており、営業中 − インターネット上で、これは常時を意味します − 常に稼働します。

ビジネス・データの可用性に影響する2つのタイプのダウンタイムがあります。計画停止は、通常は、データ・ローディング、データ再構成、統計収集など、保守に類するアクティビティーの結果としてデータが使用不能になるオペレーションを指します。DB2 UDB Version 8.1は、管理アクティビティーのための計画停止のほぼすべてを事実上解消する機能を備えています。

計画外停止は、災害、サーバーの故障など、予定外の事象を意味します。この記事では、計画外停止に付随するダウンタイムの削減のための主要アプローチに焦点を当てます。各アプローチそれぞれの長所と短所を比較・対照します。


高可用性ロードマップ
データベースの世界での計画外停止に対応する高可用性(HA)は、次の3つの関心分野にまたがっています。

  • データベース自体。求められるのは、常時稼働し、高速で、スケーラビリティーを備え、照会とユーティリティー性能に優れ、ソフトウェアを原因とする破壊を回避し、どのような種類の障害からでも高速に復旧し、オンラインできめこまかな保守機能を提供するデータベースです。

  • ハードウェアおよびソフトウェアの冗長性。ハードウェアまたはオペレーティング・システムに障害が発生したら、どうしますか。実稼働マシンに障害が発生したときに、スタンバイ・マシンが継承(テークオーバー)できるようにするクラスタリング手法について説明します。

  • 災害時復旧。サイト全体に障害が発生したら、どうしますか。予期しない災害(天災または人災)が発生したら、どうしますか。どのようにして、ビジネスを継続しますか。

計画外停止に対応する高可用性クラスタリング
システム障害の発生時にはどうなるのでしょうか。圧倒的に、最も一般的な回答は、待機している別のシステムに、障害の発生したシステムのワークロードを継承させ、ビジネス・オペレーションを継続する、というアプローチでしょう。高可用性クラスタリングのコンセプトには、複数の相互接続マシンという概念も包摂されています(このコンセプトは、可用性クラスターとも呼ばれています(2)。そのマシンのうちの一つに障害が発生すると、ビジネス・オペレーションを維持するために必要なリソースが、クラスター内で使用可能な別のマシンに移されます。

クラスターのセットアップ時にプランニングの必要ないくつかの重要項目があります。

  • データを保存するために使用するディスクを、専用相互接続またはLAN経由で、クラスターを構成するサーバーに接続する必要があります。たとえば、2ノード・クラスターで、マシン1に障害が発生したときに、マシン2には、マシン1のディスクへの物理アクセス、論理アクセスの両方が必要です。

  • 障害の発生したリソースを自動検出するための手法。クラスタリングの用語では、この自動検出を推進するデーモンまたはプロセスをハートビート・モニターと呼びます。フェイルオーバー・パートナーは、リソースのハートビートをチェックする検出プロセスを使って、そのリソースが稼働中で、オペレーションを通常通り継続可能であることを確認することができます。ハートビートが検出されない場合は、クラスター内の別サーバーが、別のマシンへそのリソースを移すプロセスを開始し、ビジネス・オペレーションを再開することができます。

  • 残存している1または複数のクラスター・メンバーに、リソースのオーナーシップを自動的に移転すること。たとえば、障害発生マシンにユーザーが接続されている場合には、そのマシンのIPアドレスが、介入なしで、またはアプリケーション自体への変更なしでクライアント・アプリケーションの接続可能な生残サーバーに移転されることが望まれます。フェイルオーバー後、バックアップ・クラスター内のサーバー上で、同じIPアドレスに単純に再接続することになります。
高可用性クラスターは、現在一般に普及している各種オペレーティング・システムで利用可能です。表1は、DB2 UDB V8.1でサポートされるクラスタリング・ソフトウェア・サポートのリストです。

表1 − 高可用性ソフトウェアとDB2 UDB

オペレーティング・システム サポートされるクラスタリング・ソフトウェア
AIX® High Availability Cluster Multiprocessing (HACMP)® High Availability Geographic Cluster (HAGEO)®
HP-UX MC/Service Guard
Linux Steeleye LifekeeperVeritas Cluster ServerLegato ClusterTivoli® automation for LinuxMission Critical Linx Convolo Cluster Dataguard Edition Open source: Linux Heartbeat (3)
Sun Solaris Sun ClusterVeritas Cluster Server®
Windows® Microsoft® Cluster Services (MSCS)

DB2 UDBは、DB2 UDBのサポートするすべてのプラットフォーム上で各ベンダーのクラスタリング・ソフトウェア用に適応する専用のスクリプトとコマンドを提供しています。これらのスクリプトとコマンドを使って、データベース管理者(DBA)は、高可用性クラスタリングに対応する、幅広く柔軟なクラスタリング・シナリオを展開することができます。DB2 UDBでは、区画分割、非区画分割両方のデータベースにフェイルオーバー・クラスタリングを実装することができます。

フェイルオーバー・クラスタリングを実装するときに、DBAが考慮する必要のあるいくつかの要因があります。まず、障害を検出するのに要する時間の量とバックアップ・サーバーへの新しいリソース割り当てに付随する移行時間です。ハートビートを定義するときに、特別な配慮が必要です。たとえば、正常範囲のネットワーク遅延やアプリケーション性能であるにもかかわらず、実際に障害の発生していないサーバーを障害発生サーバーとして識別するようなシナリオを実装したいとは考える人はいません。次の考慮要因は、バックアップ・サーバー上でデータベースが回復するのに要する時間の量です。これは可用性の高い環境(available environment)を構成しようとするときに、おそらく、最大の考慮要因となります。最後に、アプリケーションがタイムアウトしてデータベース・サーバーに再接続するときの所要時間の量もDBAは認識していなければなりません。

HAクラスタリング構成
図1は、最も一般的な高可用性クラスター構成を示しています。高可用性クラスタリングをサポートするベンダーは多く、表1に示すベンダーのすべてが次の4種類の構成をサポートしています。

図1 − 最も一般的なHA構成

DB2 UDBには、高可用性に特別な料金設定があることに留意してください。詳しくは、Paul Zikopoulosの記事『高可用性構成でのDB2 V8分散サーバーのライセンス』を参照してください。

さあ、異なる構成方法それぞれの利点や特徴について、調べてみましょう。

アイドル・スタンバイ
図2に示す4ノード・データベース・クラスターを考えてください。クラスターを構成する4台の物理マシンがあり、それぞれ1区画です。この構成では、1台のマシン(図2では一番右のマシン)がアイドル状態に維持され、別マシンの障害発生時にオペレーションを継承する態勢にあります。

アイドル・スタンバイの長所は、フェイルオーバー後も障害発生前と同じ3台のマシンが稼働することです。したがって、フェイルオーバー後の性能低下がありません。

このアプローチの短所は、高コストの印象を与える点です。別のマシンに障害が発生するまで、ただ座して待つマシンを用意しなければならないということです。ただし、注目してほしいのは、アイドル時間の間、このマシンを開発、テストなどの別用途に使う道もあることです。もう一点、システムの全体をケーブル接続するのに一定量の作業が必要になります。当然、経費はかかりますが、DB2 UDBの競争力ある価格のおかげで、実際には、今日市販されている一般的なクラスター化データベースでアクティブ/アクティブ・システムを構成するよりも、DB2 UDBでアイドル・スタンバイ・システムを実装する方が(サーバーとソフトウェア・コストを含めて)経済的です。

図2に、アイドル・スタンバイ高可用性ソリューションの詳細を示します。この例では、3台のマシンが稼働し、4台目がスタンバイ待機しています。マシン番号3に障害が発生し、使用不能になると、そのワークロードがアイドル・マシンに移されます。それまでアイドルだったマシンがマシン3のワークロードとIPアドレスを引き継ぎます。

障害発生マシン(この例ではマシン番号3)に接続されていたエンドユーザーは、既存の接続を失うことになりますが、マシン番号3のIPアドレスは、マシン番号4に継承されています。アプリケーションがマシン番号3に接続するため新しいCONNECTステートメントを発行すると、マシン番号4に接続されることになります。この接続の移行は、エンドユーザーには見えません。エンドユーザーは、移行されたことに気付きません。

ほかのマシン上のエンドユーザーは、この障害にまったく影響を受けません。区画番号1と区画番号2上のデータに引き続きアクセスすることができます。これらの区画上のエンドユーザーは、区画番号3のデータにアクセスしようとしなければ、どのようなかたちでも影響を受けることはありません。

図2 − アイドル・スタンバイ・クラスタリング・ソリューション

名前が示すように、アイドル・スタンバイ構成は、高可用性に関するDB2 UDBライセンシングの条件からいえば、アクティブ/アイドル・セットアップの例に該当します。

アクティブ・スタンバイ
アクティブ・スタンバイ構成は、アイドル・スタンバイに似ていますが、フェイルオーバー・マシンがアクティブである点が異なります。障害発生後、ワークロードは他のマシンに移ります。アクティブ・スタンバイのワークロード次第で、応答時間が悪化する場合もあれば、しない場合もあります。たとえば、よくみられる例は、アクティブ・マシンが優先順位の低い何らかの種類のワーク(たとえば、報告)を実行している環境で、障害が発生したときには、その低優先順位のワークを止めて、障害発生前のサーバーと遜色のない応答時間を維持するというやり方です。その名前が示すように、高可用性に関するDB2 UDBライセンシングの条件からいえば、アクティブ/アクティブ・セットアップの例に該当します。

相互テークオーバー
図3に示す相互テークオーバー構成では、4台のアクティブ・マシンが実働中です。このセットアップの長所は、アイドル・ハードウェアが存在しないことです。短所は、障害発生後、それまで4台で処理していた生産ワークロードを3台のマシンで賄うことになるため、応答時間がおそらくは長くなることです。

図3の赤い矢印は、相互テークオーバーのためのクラスター・シリーズ定義を表しています。クラスター番号1内では、障害発生後、区画番号1がマシン番号2に移行することになります。マシン番号2に障害が発生した場合は、区画番号2がマシン番号1に移行することになります。クラスター番号2についても、マシン番号3と4、およびそれぞれのデータベース区画の間で、同じことがいえます。

ここで、一点、留意してほしいのは、DB2 UDBがこのシナリオで認識するのは、1つのクラスターであること、つまり、4台のマシンで構成する1つのクラスターであることです。図3には見るとおり2つのクラスターがあるため、少し混乱されるかもしれません。これは、なぜかといえば、これらのクラスターが高可用性クラスターだからです。このシナリオでは、2つの独立したクラスターが定義されています。クラスター番号1に2台のマシンがあり、クラスター番号2にも同様です。DB2 UDBに関しては、たとえ区画分割されたデータベース・システムであるにしても、それぞれ独立しています。

このことは、相互テークオーバー構成の長所の一つを際立たせます。その長所とは、データベース・クラスターのサイズを気にする必要なしに、高可用性フェイルオーバー・シナリオを複製できる点です。たとえば、単一データベース内に、各2ノードの125クラスターがあるシナリオを考えてください。このデータベースの250ノードは、わずか2つのノードでそれぞれ1つのHAクラスターを構成して、各ノードが高可用性環境にあります。図3のストレージ・インタコネクトは、どの時点でも、2つのマシンに接続するだけで済むので、利益をもたらします。このタイプの相互接続は、図3に示すようなすべてのマシンを接続する恐怖のケーブル配線に比べて、低コストで、かなり一般的です。

図3 − 相互テークオーバー・クラスタリング・ソリューション

図3に示すように、区画番号4を定義している論理定義は、障害発生後、マシン番号3に移行します。テークオーバー後、マシン番号3が、区画番号3と区画番号4両方のワークロードを処理します。したがって、区画番号4の所在するディスクは、マシン番号3からアクセス可能でなければなりません。

図3の相互テークオーバー構成は、高可用性に関するDB2 UDBライセンシングの条件からいえば、アクティブ/アクティブ・セットアップの例に該当します。

負荷分散(平衡)相互テークオーバー
区画分割データベース環境の多くで実際に使用されているもう一つの構成は、特殊な種類の相互テークオーバーです。この構成では、1台のマシンが他のマシンに負荷をバランス良く分散させます。このアプローチでは、各マシン上の論理データベース区画(複数論理ノード、MLNと呼ばれています)の数が環境上の物理サーバー数マイナス1に等しくなるように区画分割データベースをセットアップしなければならないため、その分の作業が必要になります。4台の物理サーバーの場合には、各々3つのMLN、合計で12のDB2区画が要求されることになります。

負荷分散(平衡)相互テークオーバーを図4に示します。

図4 − 負荷分散(平衡)相互テークオーバー・クラスタリング・ソリューション

相互テークオーバーの例(図3)では、障害発生後に、システムは不均衡になりました。考えてください。最初の時点では、それぞれに1区画の稼働している4つのノードがあります。テークオーバー後は、そのうちの1つのノードが2つの区画を賄うことになります。当然、システムは不均衡になります。クラスター1の性能がクラスター2を凌駕するのは自然です。

負荷分散(平衡)相互テークオーバーでは、各マシン上の区画数は最終的に同じになります。したがって、障害発生の影響はシステム全体に分散されます。これは、非常に重要です。そうした場合に、システム全体にわたってすべてのトランザクションが遅くなるのでしょうか。多分、そうなります。これが問題である場合には、アクティブ/アイドルの構成を使用したい希望もあるかもしれません。しかし、多くのIT部門は、いわゆるサービス・レベル・アグリーメント(SLA)を尊重することを誓約しています。微調整されている環境で、フルキャパシティで実稼働システムが動けば、SLAターゲットを破棄することになるおそれもあります。負荷分散(平衡)相互テークオーバーのアプローチでは、DBAは、複数のマシンにわたってワークロードを均等に分散させることによって、フェイルオーバー後もSLA範囲内に維持されるように、環境を構成することができます。

図4では、マシン番号1に区画1、2、3があり、マシン番号2に区画4、5、6、マシン番号3に区画7、8、9、マシン番号4に区画10、11、12があります。マシン番号4に障害発生後、区画10はマシン番号3に、区画11はマシン番号2に、区画12はマシン番号1にそれぞれ移されます。

しかし、このアプローチの短所は、一目瞭然です。この構成では、ストレージ相互接続を4台のマシンすべてにしなければなりません。さきほどの相互テークオーバーの例で、ストレージ相互接続が必要とされたのは、マシン2台の間でだけでした。今度の構成では、セットアップも少し複雑になります。しかし、障害発生後にも、最終的に均衡化されたシステムが達成されます。これはかならずしも、4台のマシンが稼働していた障害前と同じ性能が達成されるということではありません。3台のマシンしかないのは事実です。しかし、各マシンが等しい負荷を負担しますので、性能は均衡化されます。

負荷分散(平衡)相互テークオーバー構成は、高可用性に関するDB2 UDBライセンシングの条件からいえば、アクティブ/アクティブ・セットアップの例に該当します。ただし、やり方によっては、アクティブ/アイドル実装としてセットアップすることも可能です。

災害時復旧
前のセクションでは、何らかの種類のネットワーク障害またはハードウェア障害の結果としての計画外停止を取り扱いました。しかし、フォールト・トレラント(耐障害)データ・ストアを設計するときにDBAが考慮しなければならない計画外停止のカテゴリーはこれだけではありません。災害時復旧戦略には、より一層の注意を払う必要があります。

災害時復旧は、多くの分野にわたります。たとえば、洪水、台風、地震などの自然災害がデータ・センターに被害を及ぼす可能性があります。停電、火災、水道管破裂といったインフラ災害が、起きるかもしれません。ウイルス、人的エラー、破壊工作などのオペレーション災害にも配慮しなければなりません。

サイトに障害が発生することがあっても、適正なプランニングにより、別サイトにデータを保存し、オペレーションを再開することができます。このセクションでは、物理的中断からシステムを保護するためにDBAが実行できるいくつかの異なるアプローチを説明します。

データベース・バックアップの転送
災害時復旧戦略を実装する最も簡単な方法は、単純にバックアップを別マシンに転送し、そのバックアップからデータベースをリストア(復元)することです。ごくシンプルなコンセプトですから、ここではこのアプローチは取り扱いません。

このアプローチを選択するDBAがこのやり方を気に入っているのは、低コストのオプションであることと、最後のデータベース・バックアップまですべてを回復できることが理由です。もちろん、最後にバックアップをとった時点以降のトランザクションはすべて失われることになります。この点が問題になるかどうかは、環境によります。DB2 UDB v7.2で、累積バックアップ、差分バックアップなど、このプロセスをより簡単にする多数の新しい機能が用意されました(ただし、DBAは生成ファイルのすべてにアクセスできなければなりません)。

ログも一緒に転送すれば、このアプローチを強化することができます。そうすれば、他のサーバー上で、最後のバックアップ日付からログの末尾まで、ログを使ってロールフォワードすることができます。このアプローチで、回復できるデータは多くなります。しかし一方で、最後のバックアップからデータベース・ログの最後までロールフォワードする必要があるため、時間は長くなります。また、アクティブ・ログで現在進行しているトランザクションを捕捉する方法はありません。

スタンバイ・データベースへのログ・シッピング
ログ・シッピングとは何か説明するまえに、DB2 UDBがこのログ・シッピングをサポートしていることを明確に述べておきたいと思います。市場には、DB2 UDBがこのデータ保護アプローチをサポートしていないという誤解があるようです。

ログ・シッピングは、おそらく、スタンバイ・データベースをサポートする最も一般的な方法です。スタンバイ・データベースとは何でしょうか。スタンバイ・データベースは、リモート・サイトのデータベースです。実稼働データベースの完全コピーです。ログ全部が、継続ベースでスタンバイ・データベースにコピーされます。スタンバイ・マシンにログを転送するには、この機能をサポートするアーカイブ・ソリューション、FTPプロトコルを使用するカスタム・スクリプト、あるいはログ・シッピングをサポートするDB2 UDB付属のネーティブuser exitプログラムを使用することができます。

スタンバイ・データベースは、継続的にログを通じてロールフォワードし、最後に正常に転送されたログ・ファイルの時点までの最新性を保証します。1次データベースに障害が発生したときは、単純に、残されたログがあればコピーし、ログの末尾までロールフォワードし、終了します。そのあと、クライアントは、スタンバイ・データベースに接続します。このプロセスを図5に示します。

図5 − ログ・シッピングとDB2 UDB

ログ・シッピングはセットアップの仕方も使い方も非常に単純です。これは、災害時復旧戦略としてのこのアプローチの大きな長所の一つです。追加のソフトウェアは要求されません。DB2 UDB付属のすべての機能を使ってネーティブに実装可能です。実稼働システムへの影響は最小限です。トランザクション喪失ゼロ・システムを提供するように、実装することができます。

データのクリティカリティについて心配されている読者には、このアプローチにいくらか不安があることと思います。たとえば、実稼働サイトが実際に何らかの種類の自然災害で破壊されることを考えてください。さらに悪いことに、ちょうどフル・ログが終了したあと、災害時復旧サイトに転送される寸前にこの災害が起きたとします。このシナリオでは、スタンバイ・データベースには、そのフル・ログ、そして、アクティブ・ログに書き込まれたトランザクションがだめになります。データの「ログ喪失」が許容されない場合には、ミラーリング手法(下記参照)を使って、ログ・シッピングを強化することができます。もちろん、格納するトランザクション数を制限するように、ログを設定することもできますが、このアプローチでは、性能のペナルティが生じる可能性があります。欠落トランザクションの影響も、最小化するに留まります。クリティカルなトランザクションが欠落する可能性は依然残ります。

ログ・シッピングのもう一つの短所は、スタンバイ・データベースが実稼働データベースと物理的、論理的に同一でなければならない点です。また、スタンバイ・データベースは、ロールフォワード待機状態にあるため、読み出し操作に利用することはできません。最後に、一部の管理上の変更(たとえば、インデックスの作成)は、ログに反映されません。

トランザクション喪失ゼロをゴールとする、スタンバイ・データベースへのログ・シッピング
データのタイムリー性に関して、「ログの遅延」を受け入れる余地がないときは、どうすればよいでしょうか。

ログ・シッピングの利益を維持しながら、この懸念に対処するために、今日、多くのシステムは、たとえば、IBMのPeer to Peer Remote Copy (PPRC®など、何らかの種類の独自規格ミラーリング・システムを展開しています。図6は、図5にこのタイプの機能を追加しています。アーカイブ保存したあとすぐにログを転送する代わりに、ログをミラーリングしています。このケースでは、PPRCが、ログのためだけにディスク・ミラーリングを実装します。このアプローチの長所は、ミラーにデータが格納されることです。実稼働データベース・サイトが実際に破壊された場合に、トランザクション喪失はゼロです。DB2 UDBは、Version 7.2以来、ログ・ミラーリングをサポートしています。

図6 − ログ・シッピングとDB2 UDB −ログ・ミラーリング付き

スタンバイ・データベースの初期化を迅速にするために、新しいI/Oサスペンド機能 − スプリット/ミラー・サポートとも呼ばれています − も使用できます。スタンバイ・データベースを頻繁に初期化する必要があるケースも少なくありません。ログに記録されないデータ定義言語(DDL)の変更を頻繁に行うシナリオでは、ログを適用するまえに、新しいスタンバイ・データベースを作成する必要があります。DB2のI/Oサスペンド機能は、これを簡単にします。I/Oサスペンド機能に関連するもう一つの機能は、実稼働システムのバックアップをスタンバイ・データベースにオフロードする機能です。DB2は、スタンバイ・データベースを作成し、そのデータベースを使ってバックアップ・イメージを作成する機能をサポートしています。バックアップの作成に伴うワークロードから実稼働システムを解放します。

ログ・シッピングは、各種タイプの人的エラーからデータを保護する目的にも使用できます。たとえば、DBAが、ログ・ロールフォワード・プロセスに遅延をもたせることができます。営業日の開始時点までしかログをロールフォワードしない、といったことがあるかもしれません。そうした場合、実稼働データベース上のユーザーは、自分がエラーを犯したと認識したら訂正ができる可能性があります。おそらく、実行してはいけない何か大きな削除操作をしてしまった、あるいは無意識にテーブル(表)をdropしてしまったということがあるかもしれません。遅延を持たせてあるので、次のロールフォワード操作を実行するまえに、こうしたエラーから回復することが可能である可能性があり、そうして、人的エラーからデータを保護することができるかも知れません。

Dale McInnis著『The Basics of Log Shipping』は、DB2 UDBによるログ・シッピングの優れた入門書です。データを保護するこの一般的アプローチに関心のある方には、是非一読されることをお奨めします。

スタンバイ・データベースへのレプリケーション
スタンバイ・データベースを維持するもう一つの手法は、図7に示すレプリケーション(複製)です。分散プラットフォーム上のDB2 UDBでは、ベース・サーバーにレプリケーションが組み込まれています。DB2 UDBのレプリケーションは、トリガーベースではなく、ログベースの手法です。そのため、別サーバーへデータを送るのに、高速、機敏な方法です。

図7 − DB2 UDBに組み込まれたCAPTUREとAPPLYプロセスを使って、スタンバイ・データベースにデータを複製する。

ログ・シッピングに優るレプリケーション使用の利点は、スタンバイ・データベースが読み出し/書き込み(R/W)アクセスに使用可能なことです。ログ・シッピング・シナリオでは、スタンバイ・データベースは、ロールフォワード待機状態にあるため、ユーザーが照会をかけることはできません。実稼働サーバーとしての働きが必要になるまでの間は、レポート・ツールとしてスタンバイ・データベースを活用するのが便利というケースもあります。

また、スタンバイ・データベース上のログの再生として、実質的にデータを複製するため、下層のハードウェアやオペレーティング・システムが実稼働データベースと同じである必要はありません。たとえば、鉄壁の独自規格UNIX®システム上に実稼働システムをホスティングしている環境で、スタンバイ・マシンには低コストのコモディティー・ハードウェアとWindowsベースのレポート・ツールを選択することも可能です。

レプリケーションの使用について、DBAに好まれているもう一つの機能は、DB2 UDBが双方向のレプリケーションをサポートしている点です。これは、データ更新の食い違いに対応する十分なコンフリクト解消戦略を用意したうえで、必要なときには、アプリケーションがスタンバイ・データベース上のデータを更新して、実稼働データベース上でそれを再生できることを意味します。

最後の長所として、データベース全体を複製する必要がありません。DB2 UDBはテーブル・レベルのレプリケーションに対応しているため、すぐに再ロード可能なテーブル(たとえば、サマリーあるいはレポート・テーブル)は除外して、クリティカルなテーブル(たとえば、トランザクション・テーブル)のみを指定して複製することもできます。

レプリケーションを使ってスタンバイ・データベースを維持するアプローチの短所は、レプリケーションが本質的に非同期である点です。このため、サイト災害発生時に一部のトランザクションが再生されない可能性があります。さらに悪いことに、レプリケーション・サイクル前にキューの深さがどれくらいであったか不明のために、どのトランザクションが再生されていないのかがわからないこともあります。それに加えて、ログ・シッピングの場合と同様に、(インデックスの作成など)一部の管理オペレーションが、ログに反映されません。

レプリケーションは、災害時復旧シナリオのためのフェイルオーバーとは異なる問題の解決のために設計されました。この設計目的の相違は、レプリケーションに、ログ・シッピングにはない相当のオーバーヘッドが存在することを意味します。ログの読み込みとステージング・テーブル(表)の作成(CAPTUREコンポーネント)は、実稼働サーバーにワークロードを追加します。その本来の目的のためにレプリケーションを使用している場合には、災害時復旧用に用途を拡張することは理にかなっているかもしれません。ただし、レプリケーションでは、ターゲット・サーバー上への適用を待機するステージング・テーブルのトランザクション数が明確である保証はどこにもないことを常に心に留めておいてください。これはつまり、実際にどれだけの数のトランザクションが喪失される可能性があるか、最大値を予測するためのテストを実行する必要があるということです。この最大値を受け入れるときに、現実の障害が発生したときに、予測が外れる可能性も受け入れなければなりません。ワークロードが変化して、追加のテストも行われていません。そうなったときに、喪失トランザクションの予測に確信がもてるでしょうか。ログ・シッピングには、ログのサイズがあります。また、さらに良いものとしては、PPRCなどトランザクション喪失ゼロを保証する技術も使えます。

リモート・ミラーリング
可用性の要求が高まるとともに、ソフトウェア・ベンダー、ハードウェア・ベンダーともに、24×7ベース、例外ゼロのビジネスのニーズに適合する製品とアプリケーションをもって、迅速に対応してきました。各ソリューションの対応と可用性の組み合わせは、対策の経費よりも可用性への関心の方が重要なビジネスに大きな恩恵をもたらすことができます。ごく単純にいえば、多くの企業にとって、ダウンしたときのコストは高すぎるということです。

おそらく、究極のソリューションは、図8に示すように、すべて − データとログ − を同期的にリモート・ミラーリングすることでしょう。リモート・ミラーリングでは、「ブリック・アンド・モルタル」あるいはローカルを越えて、遠隔地の災害用サイトにログとデータを転送します(実稼働サーバーとスタンバイ・サーバーが隣接する2つの建物に配置されている場合には、災害時復旧計画としては、それほど有意義ではありません)。リモート・ミラーリングにはいくつかのアプローチがあります。

図8 − 災害時復旧にリモート・ミラーリングを使用

可用性にフォーカスしたハードウェアとソフトウェアを組み合わせることで、万能の可用性を実現することができます。たとえば、IBM Enterprise Storage ServerR(ESS)とRAMAC® Virtual Arrayシステムの組み合わせは、ストレージ・サブシステム経由でデータとログの両方をミラーリングする機能を提供します。これは経費のかかるアプローチですが、最高水準の可用性を達成する必勝法です。この「データ喪失ゼロ技術」タイプの実装には、このほかに、EMCによるCLARiiON with SRDF、日立のHDSなどがあります。

このアプローチでは、データベースに関連するすべてのデータがリモート・サイトにミラーリングされます。障害発生時には、ミラーリングされたディスクがリモート・サイトにマウントされます。DB2が起動し、クラッシュ・リカバリーを実行します。これは、単純なアプローチですが、次の理由でコスト高となることもあります。

  • 変更されたデータのすべてを災害時復旧用サイトに転送するコスト。データベースに書き込まれたすべての変更を有線で伝送します。

  • システムのサイズに付随するコスト。災害時復旧サイトへの書き込みアクティビティーを同期化する必要があるため、1次サイトの確定(commit)アクティビティーに遅延が生じる可能性があります。データは、あくまでも非常に高速に移動できるにすぎません。2つのサイトの距離があるほど、伝送のために、書き込みに時間がかかります。この問題を最小にするには、理想サイズを超える物理環境が必要であるかもしれません。それぞれ専用のリモート・ミラーを備えた複数のストレージ・エリア・ネットワーク(SAN)システムがあれば、書き込みアクティビティーを分散させるのに効果的です。もちろん、各SANに十分な通信帯域幅も必要です。

要約
DB2 UDBは、卓越した可用性特性を持つ大規模データベースの管理を容易にします。ハードウェア、ソフトウェア両方の観点から、データベースの幅広い構築、管理を可能にする、優れた柔軟性があります。高可用性は、今やビジネス・オペレーションの重要なファクターとなっています。各アプローチそれぞれに長所と短所があります。この記事が、DB2 UDB環境で利用できるオプションについて、大まかな概略を示していると思って頂ければ幸いです。

どの可用性ソリューションを選択するにせよ、投資する金額がいくらであるにせよ、あるいは部門の所要するスキル・セットがどんなものであるにせよ、高可用性プランにクリティカルな1つの重要な要素があります。実地演習です。現実にクラッシュあるいはサーバー・ダウンが生じたときが、「準備が万全」かどうかを確認する初めての経験、ということがないようにしてください。

脚注

  1. コスト予測は米ドル建てです。

  2. クラスターの用語には、今日やや重すぎる意味が与えられています。この記事では、クラスター(クラスタリング)は、高可用性を維持するために実装される構成を意味します。スケーラビリティーのためのクラスタリングという考え方もあります。複数サーバーにまたがってデータベースを区画分割する機能は、その例です。

  3. 2ウェイの高可用性クラスターに限定されます

著者について

Paul C. Zikopoulosは、文学士号と経営学修士号を有し、IBM Global Sales Supportチームとともに基調講演での受賞経歴があります。7年を超えるDB2 UDBの経験があり、DB2 UDBに関する数多くの記事を雑誌に寄稿しています。『DB2 Version 8:The Official Guide』、『DB2:The Complete Reference』、『DB2 Fundamentals Certification for Dummies』、『DB2 for Dummies』、『A DBA's Guide to Databases on Linux』の共著者であり、また、DB2認定上級テクニカル・エキスパート(DRDAとCluster/EEE)、DB2認定ソリューション・エキスパート(ビジネス・インテリジェンスとデータベース管理)です。
メールの宛先はpaulz_ibm@msn.comです。
James Stittleは、1982年にIBMトロント研究所チームに参加しました。開発コミュニティー内で多様な役割に取り組んできました。1990年に分散プラットフォーム・プロジェクト対応DB2に参加しました。この8年間はワールドワイドDB2 UDBサポート組織の一部でした。IDUG、DB2 Techを含めて、多くのカンファレンスで講演の実績があります。いつの日か、自分の飛行機(オスプレイ2)の組み立てを完成させることが夢です。
Roman B. Melnyk, PhDは、データベース管理、DB2ユーティリティー、SQLに特化しています。DB2情報開発チームの上席メンバーです。IBM在籍年数は9年を超え、DB2に関して多数の書籍、記事その他のマテリアルを執筆しました。『DB2 Version 8:The Official Guide』、『DB2:The Complete Reference』、『DB2 Fundamentals Certification for Dummies』、『DB2 for Dummies』の共著者です。
メール宛先はroman_b_melnyk@hotmail.comです。

IBM、AIX、DB2、DB2 Universal Database、Enterprise Storage Server(ESS)、High Availability Cluster Multiprocessing(HACMP)、High Availability Geographic Cluster(HAGEO)、RAMACおよびTivoliは、米国、その他の国または両方におけるIBM Corporationの商標または登録商標です。
Windowsは、米国、その他の国または両方におけるMicrosoft Corporationの登録商標です。
UNIXは、米国およびその他の国においてThe Open Groupの登録商標です。
その他の会社名、製品およびサービス名は、一般に所有各社の商標です。
IBMの著作権および商標情報

原文はこちら

上に戻る