DBシステムにおいてレプリケーションとは,データベースの複製を作る仕掛けを指す。レプリケーションによって,PostgreSQL単体では実現できない可用性の向上や負荷分散などのメリットを得ることができる。

 レプリケーションの仕掛けや実装方式は様々である。これは,レプリケーションにおいては「これが理想である」という方式が存在しないからだ。

 今回紹介するSlony-I(http://slony.info)は,「非同期・シングルマスタ」方式のレプリケーションに分類される。この方式では,一般に一つの「マスタ」と呼ばれる主サイトから一定間隔で更新データを一つまたは複数の従サイト(一般に「スレーブ」と呼ばれる)に転送し,更新結果を反映する。したがって,ある時刻を取るとマスタとスレーブの間では必ずしもデータベースの内容が一致しないことになる。また,データの更新をスレーブに対して行うことはできない。

 こうしてみると,非同期レプリケーション方式にはいろいろと制約があるが,反面実装がシンプルであること,またマスタとスレーブの間の回線が切断してもマスタ側への更新を止める必要がなく,後でまとめてスレーブ側に更新を反映することが可能であるというメリットがある。したがって,WAN環境のように,ネットワーク接続が保証されないような環境にも適用することができる。

 これに対して同期レプリケーション方式では,ちょうど裏返しの長所と短所を持つことになる.例えば,【PostgreSQLウォッチ】第7回と第9回で紹介したpgpoolはマスタとスレーブの同期が常に取れている反面,WAN環境で使用することは難しい。

Slony-Iとは

 Slony-IはPostgreSQLコアメンバの一人であるJan Wieck氏(関連記事)が開発したPostgreSQL用の非同期方式のレプリケーションソフトである。BSDライセンスで提供されており,無償で利用できる。

 Slony-IのインストールにはPostgreSQLのソース・ツリーが必要である。いまのところ,PostgreSQLの7.3.3以降(8.0含む)に対応している。今回は最新安定版であるPostgreSQL 7.4.6で評価することにする。

 「Slony」とはロシア語で象のことである。Slony-Iの開発者のJan Wieck氏によれば,このことには2つの意味がある。まず,PostgreSQLのマスコットが象であること,そして氏が尊敬する前コアメンバで,ロシア出身のVadim Mikheev氏が開発したレプリケーションソフトであるRservからヒントを得ていることによる。

 Slony-Iは,更新が発生すると,あらかじめ設定しておいたトリガがそれを検知し,更新データをテーブルに記録,スレーブに転送,その更新を実行することによってレプリケーションを実現している。このような方式を取るレプリケーションソフトとしては,Slony-Iの他に,Rserv,dbmirrorが知られている。この方式では,原理的にラージ・オブジェクトのレプリケーションはできない。

 それでは,Slony-Iをインストールしてみよう。