PR

(注:記事は執筆時の情報に基づいており,現在では異なる場合があります)

複製から負荷分散クラスタリングまで

図1●PostgreSQLのクラスタリング・ツールの例
PostgreSQLにクラスタ機能を追加するツールも存在する。レプリケーション機能を追加するdbmirrorはPostgreSQLに付属するオープンソース・ソフトウエア。共有ディスク型クラスタを構築するLifeKeeperは商用ソフトウエアだがすでに実績もある。負荷分散型クラスタを構成するQueryMasterは,ソフトウエアを専用ハードウエアと組み合わせた製品である
 ただし可用性に関しては,耐障害性を高めるためのツールがかなり揃ってきた。

 まず,DBMSに行われた更新を別のDBMSに複製し,故障に備える「レプリケーション」と呼ぶ方式がある。PostgreSQLのソースに付属するdbmirrorがその一例だ*3。オンライン系に加えられた更新を一定間隔で待機系に反映する。故障時には待機系が処理を引き継ぐ(図1[拡大表示])。

 ただし,自動フェールオーバーの機能はないので,手動で待機系に切り替える必要がある。また,故障した系を修理してからシステムに戻す際に一度システムを停止し,ディスク内容を同期させる必要がある。更新がリアルタイムで待機系に伝わらないので,待機系に切り替わる際にトランザクションが失われることがある。更新記録を取る負荷が発生するので,更新頻度が非常に高いシステムには向かない。

 これに対し,共有ディスク型クラスタリングは,ディスクをオンライン系と待機系の2つのシステムが共有し,オンライン系が故障で停止した際には待機系が自動的に処理を引き継ぐ(フェールオーバー)。例えばLifeKeeperという商用のクラスタリング・ソフトウエアはすでにPostgreSQLと組み合わせて稼働している実績がある*4。ただし,負荷分散はできない。

 データベースの複製を複数個用意して検索処理を負荷分散させることのできる製品もある。米TierFleet社が開発したQueryMasterである*5。この方式ではフェールオーバーは行わず,正常に機能するデータベース・ノードが1個でもあれば処理をそのまま継続できる。また,DBMSの複製をリアルタイムで作成するので,トランザクションが失われることもない。オンライン中にディスク内容を同期させることもできる。

 デメリットとしては,問い合わせを複製することによってデータベース・ノード間の同期を取っているため,レプリケーション同様,更新処理はどうしても遅くなる点が挙げられる。

PostgreSQL導入のポイント

 以下,PostgreSQLを導入するにあたっての注意点を紹介する。ここでは,OSとしてLinuxを例に説明する。

 PostgreSQLは貧弱なハードウエアでも十分動作するが,業務で使用する場合はそれ相応のハードウエアが必要になる。特にアクセス頻度の高いWebシステムのバックエンドDBとして使用する場合には,512Mバイト以上のメモリー,高速なSCSIディスクが必須になる。また,2CPUであれば十分CPU数に見合う性能向上が期待できる。できれば2CPUマシンを用意した方がいい。

 メモリーやハードディスクの信頼性にも気を配りたい。昨今は安価で大容量のメモリーやディスクが容易に手に入るようになったが,容量が大きい分エラーを起こす確率も増える。実際,筆者もハードウエアのトラブルでデータベースが損傷するケースを見聞きしている。

 インストールする際は,以下の点を注意したい。CD-ROMなどに収録されているものは最新版でないことがある。PostgreSQLはリリースごとに性能や機能が改善されているため,是非最新版を使っていただきたい。

 また,データベースの初期化コマンドであるinitdbの引数にロケール・サポート(多国語サポート)を無効にするオプション「--no-locale」が付いていないことがある。ロケール・サポートは日本語環境では無用の長物であるばかりではなく,性能劣化や誤動作の原因になる。

 利用予定のバイナリ・パッケージが上記の条件を満たしていない場合は,PostgreSQLをソースからコンパイルしてインストールすることをお勧めする。


(次回に続く)

石井達夫(いしい・たつお)氏

1984年,SRA入社。主にUNIX関連の開発に従事するかたわら,95年からPostgreSQLのメーリング・リストを主宰。現在はオープンソースソリューション部でPostgreSQL関連のビジネス活動の技術支援を担当。著書に『今すぐ導入!PHP×PostgreSQLで作る最強Webシステム』,『PostgreSQL完全攻略ガイド』(技術評論社),『PHP4徹底攻略』(ソフトバンクパブリッシング,共著)などがある。日本PostgreSQLユーザ会理事長。

オープンソースのデータベース管理システム「PostgreSQL」の導入方法から,ユーザー事例,運用・管理方法,Oracleデータベースとの機能・性能の比較や移行方法までを解説した,日経Linux別冊『PostgreSQL 構築・運用ガイド』。PostgreSQL(石井達夫氏)とOracle(山田精一氏)の第一人者による,PostgreSQL活用の実践書。