連載
» 2003年08月26日 00時00分 公開

DB2マイスター養成講座(1):DB2導入時に検討すべきポイントとは?

DB2 UDBに限らず、ソフトウェア導入の前後にはさまざまなことを検討しなければならない。DB2 UDBの場合はどうだろうか?まずは、「何を検討すべきか」について整理しておこう。(編集局)

[小林慶彦,@IT]

 関東地方も梅雨が明けて、ビールのおいしい季節がやってきました。マイスターといってもビール職人だけではないのですが、筆者の中では「マイスター=ビール職人」の公式ができあがっています。

 この「マイスター」ですが、ドイツでは公式な資格ですのでマイスターを名乗るには資格試験に合格しなくてはいけません。この試験は次の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.ディスク

 ディスクの構成は、データベースのパフォーマンスを左右する最も重要な要素です。特にデータの容量が多くなればなるほど重要になってきます。それ故に、容量以外にも考慮すべき点がいくつかあります。例えば、

  • ディスク・コントローラの種類(SCSI、Fiber channelなど)
  • RAID構成(RAID1、RAID5、RAID1+0など)
  • ディスクの本数

です。

 ディスク容量に関しては、データの約4倍程度の容量が必要になります。ディスク・コントローラはFiber channel(FC)カードがパフォーマンスも良くお勧めですが、現状では値段が高いので予算に応じた選択が必要です。

 RAID構成に関しては、冗長性とパフォーマンスのトレード・オフの選択です。冗長性とパフォーマンスを考慮すると、RAID5が現時点で最も妥当な選択肢でしょう。ディスクの本数は、RAID5構成の場合、ある程度本数を確保してストライピングするとパフォーマンスが向上します。

 以上が、ハードウェアに関して考慮すべき点です。DB2を中心に述べてきましたが、実際にはエンドユーザー要件に合わせたハードウェアの選択が最も重要です。過剰なスペックのハードウェアを選択する必要はありません。

■ソフトウェア関係の選択肢は?

 データベース・サーバのみの場合、ソフトウェアはOSとDB2で十分ですが、とはいえ考慮すべき点はいくつかあります。

  1. Linuxのディストリビューション

     DB2 for Linuxのサポート・ディストリビューションのページを見ると分かりますが、メジャーなディストリビューションはほとんどカバーしています。サポート対象が限られていれば選択も楽なのですが、こうも多いと迷ってしまいます。

    DB2 Universal Database for Linux
    http://www.ibm.com/software/data/db2/linux/validate/


     ディストリビューション選択の一番のポイントは、サポートではないでしょうか? 上記の中には、日本ではサポートを受けにくいディストリビューションもあります。また、バージョンアップの頻度が高いディストリビューションは、サポート切れになる時期も早いので注意が必要です。

     DB2にとっては、どのディストリビューションも同等です。

  2. ディスクパーティション/ファイルシステム

     データベースを作成する領域は、OS本体とは別のパーティションに用意するのが普通です。データベース以外に、DB2は/home以下にインスタンス・ホームディレクトリとして数十Mbytesと/opt以下にDB2本体500Mbytes程度(標準インストールで450M〜550Mbytes)の容量が必要です。

     データベースを作成する領域のファイルシステムは、ext3などのジャーナリングファイルシステムを利用すれば予期せぬダウン時にも素早くリカバリできるのでお勧めです。また、最近ではベリタスから市販のファイルシステムも提供されているので、これも選択肢の1つです。

  3. インストールするパッケージ

     X Window Systemを使ったGUIでDB2をインストールするなら、X関連のパッケージが必要です。また、DB2が提供するシェルスクリプトの中にはkshが必要なものがあるので、pdkshパッケージを忘れずにインストールしておきましょう。

  4. 周辺ソフトウェア(バックアップツール、HAクラスタなど)

     バックアップツールやHAクラスタソフトウェアを併用する場合は、それらがサポートするディストリビューションに注意する必要があります。また、メモリの項で説明しましたが、周辺ソフトウェアが使用するメモリも考慮しておく必要があります。

インストール時の検討事項

 ハードウェアとソフトウェアの準備ができたら、DB2のインストールです。以前のバージョンはCUIによるインストール方法しかありませんでしが、最新のV8.1からはJavaのGUIを使ったインストールが可能になりました。

 では、どちらの方法を選ぶべきでしょうか? GUIを使った方が細かい設定までやってくれるので、GUIインストーラをお勧めします。GUIによるインストール方法については、Kylix 3とDB2で作るWebサービス・アプリケーション 第1回を参考にしてください。

■CUIインストールの際の手動設定

 CUIの場合、基本的にRPMパッケージのインストールしかやってくれないので、ユーザーやインスタンスの作成、TPC/IPの設定などはインストール後に手動で構成する必要があります。具体的には、以下の作業が必要です。

  • DB2インストールのためのグループおよびユーザーIDの作成
  • DB2 Administration Server(DAS)の作成
  • db2icrtを使用したインスタンスの作成
  • DB2ファイルのリンク作成(オプション)
  • DB2インスタンスのためのTCP/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に手を入れる必要に迫られることがあります。例えば、不具合などに対するパッチの適用などです。パッチの適用を迫られる前に、どのようなポリシーに基づいてパッチを適用するのか、あらかじめ考えておきましょう。

■パッチセット「FixPak」とは?

 DB2は、不具合やバグに対する個別のパッチは提供していません。「FixPak」と呼ばれるパッチセットを約3カ月に1回、Webサイトで公開しています。

 このWebサイトを見ると分かりますが、FixPakは2種類提供されています。「Latest Regular FixPak」と「Latest Alternate FixPak」です。両者の違いは、修正モジュールを現在のバージョンに上書きインストールするか、別のディレクトリにインストールするかです。

 上書きインストールは文字通り、DB2のバイナリを入れ替えてしまうので、一度適用するとなかなか後戻りできません。しかし後者のFixPakであれば、以前のバージョンを残すことができるので、いざというときにすぐに戻すことができます。また、テスト環境が用意できない場合などは、1台のサーバにFixPakを適用したインスタンスと適用しないインスタンスを共存させることが可能です。ただし、ディスクスペースも余分に必要になるので注意が必要です。

 いずれにしろ、バグフィックスや新機能の追加が行われたりしているので、常に最新の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.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。