DB2 UDBに限らず、ソフトウェア導入の前後にはさまざまなことを検討しなければならない。DB2 UDBの場合はどうだろうか?まずは、「何を検討すべきか」について整理しておこう。(編集局)
関東地方も梅雨が明けて、ビールのおいしい季節がやってきました。マイスターといってもビール職人だけではないのですが、筆者の中では「マイスター=ビール職人」の公式ができあがっています。
この「マイスター」ですが、ドイツでは公式な資格ですのでマイスターを名乗るには資格試験に合格しなくてはいけません。この試験は次の4つで構成されています。
試験内容からも分かるように、幅広い、そして後進の人材を教育できるだけの知識と経験がマイスターには要求されています。この連載で目指す「DB2マイスター」もしかりです。ある程度の規模のデータベース・サーバを構成・運用できるのはもちろん、同僚や後輩にDB2 Universal Database(以下DB2)のことを教えられるくらい深い知識の習得を目標にしたいと思っています(注)。
注:さすがに経済・法律に関してはこの連載では扱いませんが……。
本連載でどのようなテーマを扱うのか、まず簡単にロードマップを紹介します(編注)。実際のプロジェクトの進行に沿った形で進めていきたいと思います。
第1回 DB2の導入前後における検討事項
第2回 データベース構成時の物理設計、キャパシティ・プランニング
第3回 アプリケーション開発・デバッグ方法
第4回 データベースのバックアップ/リカバリ
第5回 高可用性と災害対策
第6回 データベースの運用・管理
第7回 パフォーマンス・チューニング
第8回 データベース・クラスタ(DPF)
最終回 トラブルシューティング
編注:テーマや順番、連載回数は、現時点での予定です。
マニュアルなどにはハードウェアのスペックやLinuxのディストリビューションなど、最低限の稼働条件は明記されています。しかし、実際にデータベース・サーバとして利用するのにどのようなハードウェアスペックが現実的なのか、ディストリビューションは何が最適なのかはどこにも書いてありません。ここでは、DB2をインストールする前に決めておかなければならないポイントをハードウェアとソフトウェアの観点から解説します。
ハードウェアについて検討する場合、実際にはアプリケーションを考慮してキャパシティ・プランニングを行う必要があります。キャパシティ・プランニングについては次回に詳しく解説するとして、今回は概論的に検討項目を紹介します。
1.CPU
CPUの主流アーキテクチャは、やはりx86(IA-32)です。最近は、IA-64やPowerPCに対応したDB2もリリースされています。また、AMD64(Opteron)にも対応予定のようです。
DB2は、CPU数にほぼ比例してパフォーマンスが向上する(値段も比例しますが)ので、導入時は少ないCPUとし、後からCPUを追加して増大する負荷に対応することもできます。DB2がCPU数を自動的に認識して並列処理を行うので、CPUを意識したインストールやアプリケーション開発は必要ありません。ECサイトといったWebサイトのバックエンドデータベース・サーバなど、将来どの程度の負荷が掛かるか予想できないシステムでは、導入時からCPUソケットいっぱいの過剰なCPUを積むのではなく、必要最小限のCPUで始めて負荷の状況に応じてCPUを追加するというアプローチでよいでしょう。
CPUの増設がハードウェア的に限界になってしまったら、どうすればよいでしょうか?そのような場合は、サーバを追加することでデータベースをクラスタ化し、パフォーマンスを向上させることができます。DPF(データベース・パーティショニング)と呼ばれる機能で、オラクルのOracle RACに相当します。
2.メモリ
マニュアルには、「少なくとも256MbytesのRAMが必要です」と書いてありますが、これはDB2のエンジンが動く最小限のメモリ量と考えてください。メモリは、DB2エンジンのほかにOSやファイル・キャッシュなどに使われます。
実際に必要となるメモリ量は、使用するデータ量や処理内容によっても変わってきます。最も容量を必要とするのはDB2が管理するI/Oキャッシュ・メモリで、これを「バッファプール」と呼びます。バッファプールの大きさは、データ容量の数%が目安です。
また、データベースに接続するクライアントが使用するエージェント用のメモリが、1クライアント当たり2M〜6Mbytes必要です。クライアント数が多くなれば、エージェント用のメモリも無視できなくなります。さらに、IA-32のLinuxの場合、1プロセス当たりの使用可能メモリの上限が2Gbytesという制限があるので、これも考慮する必要があります。
必要なメモリ容量を計算する公式はありませんが、以下の式がメモリ容量の見積もりの参考になるでしょう。
メモリ=DB2エンジン(256MBbytes)+バッファプール+エージェント用メモリ+DB2以外のソフトウェアが使用するメモリ
メモリの詳細については、次回のキャパシティ・プランニングの部分で詳しく解説します。
3.ディスク
ディスクの構成は、データベースのパフォーマンスを左右する最も重要な要素です。特にデータの容量が多くなればなるほど重要になってきます。それ故に、容量以外にも考慮すべき点がいくつかあります。例えば、
です。
ディスク容量に関しては、データの約4倍程度の容量が必要になります。ディスク・コントローラはFiber channel(FC)カードがパフォーマンスも良くお勧めですが、現状では値段が高いので予算に応じた選択が必要です。
RAID構成に関しては、冗長性とパフォーマンスのトレード・オフの選択です。冗長性とパフォーマンスを考慮すると、RAID5が現時点で最も妥当な選択肢でしょう。ディスクの本数は、RAID5構成の場合、ある程度本数を確保してストライピングするとパフォーマンスが向上します。
以上が、ハードウェアに関して考慮すべき点です。DB2を中心に述べてきましたが、実際にはエンドユーザー要件に合わせたハードウェアの選択が最も重要です。過剰なスペックのハードウェアを選択する必要はありません。
データベース・サーバのみの場合、ソフトウェアはOSとDB2で十分ですが、とはいえ考慮すべき点はいくつかあります。
ハードウェアとソフトウェアの準備ができたら、DB2のインストールです。以前のバージョンはCUIによるインストール方法しかありませんでしが、最新のV8.1からはJavaのGUIを使ったインストールが可能になりました。
では、どちらの方法を選ぶべきでしょうか? GUIを使った方が細かい設定までやってくれるので、GUIインストーラをお勧めします。GUIによるインストール方法については、Kylix 3とDB2で作るWebサービス・アプリケーション 第1回を参考にしてください。
CUIの場合、基本的にRPMパッケージのインストールしかやってくれないので、ユーザーやインスタンスの作成、TPC/IPの設定などはインストール後に手動で構成する必要があります。具体的には、以下の作業が必要です。
上記の手順はDB2のマニュアルにも詳しく書いてあるので、GUIが使えなくてもまったく問題ありません。
手動インストール後のDB2サーバーのセットアップ
http://www.db2.jp/db2manual/ja_JP/start/t0007067.htm
CUIインストールには、もう1つの方法があります。「応答ファイル」と呼ぶ構成ファイルを用意してインストールする方法です。この方法は、HAクラスタやデータベース・クラスタリングを構成するなど、複数台のサーバに同じ構成でDB2をインストールする際などに利用します。
*----------------------------------------------------- * Generated response file used by the DB2 Setup wizard * generation time: 03/08/07 22:36 *----------------------------------------------------- * Product Installation LIC_AGREEMENT = ACCEPT PROD = ENTERPRISE_SERVER_EDITION INSTALL_TYPE = TYPICAL *----------------------------------------------- * Das properties *----------------------------------------------- DAS_CONTACT_LIST = LOCAL * DAS user DAS_USERNAME = dasusr1 DAS_UID = 105 DAS_GROUP_NAME = dasadm1 DAS_HOME_DIRECTORY = /home/dasusr1 * ---------------------------------------------- * Instance properties * ---------------------------------------------- INSTANCE = inst1 inst1.TYPE = ese inst1.WORDWIDTH = 32 * Instance-owning user inst1.NAME = db2inst1 inst1.UID = 107 inst1.GROUP_NAME = db2grp1 inst1.HOME_DIRECTORY = /home/db2inst1 inst1.AUTOSTART = YES inst1.AUTHENTICATION = SERVER inst1.SVCENAME = db2c_db2inst1 inst1.PORT_NUMBER = 50000 inst1.FCM_PORT_NUMBER = 60000 inst1.MAX_LOGICAL_NODES = 4 * Fenced user inst1.FENCED_USERNAME = db2fenc1 inst1.FENCED_UID = 108 inst1.FENCED_GROUP_NAME = db2fgrp1 inst1.FENCED_HOME_DIRECTORY = /home/db2fenc1 * Contact properties CONTACT = contact1 contact1.CONTACT_NAME = db2inst1 contact1.EMAIL = db2inst1@server contact1.PAGER = false contact1.INSTANCE = inst1 *----------------------------------------------- * Installed Languages *----------------------------------------------- LANG = EN LANG = JP
この応答ファイルは、DB2 Enterprise Server Edition(ESE)を標準インストールするサンプルです。応答ファイルのテンプレートがDB2のCD-ROMの<cd-rom>db2/linux/samplesの中に収録されているので、上記の例を参考に編集すれば、以下のコマンドでDB2をインストールすることが可能です。
<cd-rom>/db2setup -r <reponsefile_directory>/<reponse_file>
このように、DB2ではいくつかのインストール方法が用意されています。状況に応じて使い分けましょう。
DB2をインストールした後も、DB2に手を入れる必要に迫られることがあります。例えば、不具合などに対するパッチの適用などです。パッチの適用を迫られる前に、どのようなポリシーに基づいてパッチを適用するのか、あらかじめ考えておきましょう。
DB2は、不具合やバグに対する個別のパッチは提供していません。「FixPak」と呼ばれるパッチセットを約3カ月に1回、Webサイトで公開しています。
このWebサイトを見ると分かりますが、FixPakは2種類提供されています。「Latest Regular FixPak」と「Latest Alternate FixPak」です。両者の違いは、修正モジュールを現在のバージョンに上書きインストールするか、別のディレクトリにインストールするかです。
上書きインストールは文字通り、DB2のバイナリを入れ替えてしまうので、一度適用するとなかなか後戻りできません。しかし後者のFixPakであれば、以前のバージョンを残すことができるので、いざというときにすぐに戻すことができます。また、テスト環境が用意できない場合などは、1台のサーバにFixPakを適用したインスタンスと適用しないインスタンスを共存させることが可能です。ただし、ディスクスペースも余分に必要になるので注意が必要です。
いずれにしろ、バグフィックスや新機能の追加が行われたりしているので、常に最新のFixPakを適用することをお勧めします。
FixPakの適用についてはあまり紹介されていないので、ここで手順を紹介しておきます。
まず、DB2 Technical SupportページからダウンロードしたFixPak(例ではFP3_MI00054_ESE_MFP.tar)を適当なディレクトリに展開します(2003年8月時点での最新版はFixPak3)。
次に、rootユーザーでinstallAltFixPakコマンドを起動し、FixPakを適用します。
# ./installAltFixPak *********************************************************** GA パス上にある ESE ファイル・セット/パッケージと 同じサブセットをインストールしますか? [はい/いいえ] ? はい ←「はい」を入力してEnter
実際には、RPMパッケージがインストールされます。
インストール終了後に、インスタンスのアップデートを行います。まず、現在のインスタンスのバージョンを確認します。
# su - db2inst1 $ db2level DB21085I インスタンス "db2inst1" は、"32" ビットおよび DB2 コード・リリース "SQL08010" をレベル ID "01010106" で使用します。 情報トークンは、"DB2 v8.1.0.0"、"s021023"、""、および FixPak "0" です。 製品は "/opt/IBM/db2/V8.1" にインストールされます。
インスタンスのアップデートを行います。
# /opt/IBM/db2/V8.FP3/instance/db2iupdt db2inst1 DBI1070I プログラム db2iupdt は正常に完了しました。
FixPakが適用され、インスタンスがアップデートされたかどうかを確認してみましょう。
# su - db2inst1 $ db2level DB21085I インスタンス "db2inst1" は、"32" ビットおよび DB2 コード・リリース "SQL08013" をレベル ID "02040106" で使用します。 情報トークンは、"DB2 v8.1.0.24"、"s030728"、"MI00054"、および FixPak "3" です。 製品は "/opt/IBM/db2/V8.FP3" にインストールされます。
FixPak適用前の状態に戻すときは、以下のようにします。
# /opt/IBM/db2/V8.1/instance/db2iupdt -D db2inst1 DBI1070I プログラム db2iupdt は正常に完了しました。
以上で、DB2のFixPakを適用することができます。
第1回はインストールの前後を中心に、考慮すべき点を検討しました。次回は、データベース構成時の物理設計とキャパシティ・プランニングをテーマに、実際にデータベースを作成する際に考慮すべき点や注意点などについて解説します。
Copyright © ITmedia, Inc. All Rights Reserved.