データベースサーバの冗長性
データベースサーバは、ネットワークの中でさまざまなデータを共有するためのサーバです。最近では、JavaやPHPなどを使ったWebアプリケーションサーバからデータを参照し、様々な業務やサービスのシステムを作る場合にも使われています。
こうした用途では、負荷分散装置などを使うことで、フロントのWWWサーバの冗長性や拡張性については比較的簡単に確保することができます。しかし、ハードディスク上にデータを保管するデータベースサーバは、容易に冗長化することができません。そのため、データベースサーバが何らかの原因で停止すると、システム全体が停止してしまうような構成になっていることが非常に多いようです。
こうした問題に対して、Oracleをはじめとする製品のデータベースソフトウェアでは、データのリプリケーション(複製)の手法を用意したり、様々な分散データベースを構築するための機能を用意しています。しかし、こうした製品は非常に高価であり、容易には使用できません。
オープンソースのデータベースであるPostgreSQLやMySQLでも、少しずつレプリケーションの技術が導入され、クラスタ化しようという試みが行われています。しかし、こうした機能はまだまだ未完成であり、利用できる用途は限定的です。最近では、pgpoolのようにミドルウェアのレベルで冗長性を確保しようとするソフトウェアも登場しています。
DRBDとheartbeatを使ったクラスタ
こうしたデータベースサーバにも、heartbeatとDRBDを使ったクラスタの技術を導入することが可能です。この構成では、OSのレベルでデータの複製が保証されますので、データベースソフトウェア側には特別な機能は必要ありません。
ただし、ネットワークを使ってデータの複製を行うため、書き込み時のパフォーマンスの劣化を避けることはできません。そのため、データベースの性能については十分に考慮する必要があります。
今回は、この例のようにPostgreSQLを使ってデータベースのクラスタを構築する方法について解説します。