PostgreSQLには高可用性と負荷分散に関する製品が存在するが、いずれもフリーだ。メリットとデメリットは以下のとおり。
Slony-I(スローニーワン)
シングルマスターマルチスレーブ方式。メリットはクラスター数に制限が無いこと。クラスター数を増やしても負荷が増えない(スレーブのスレーブにもできる)こと。デメリットはマスターからのコピー時間を制限できないこと。このことによりスレーブ間に時差が発生することがある。
pgpool(ピージープール)
マルチマスター方式。メリットは仕組みが非常に簡単(クエリを単純に自分自身とスレーブに投げるだけ)。デメリットはクラスター数が2台まで。完全にノード間が同じ状態であるか(クエリーエラーを考慮しないので、マスターとスレーブが同期されない可能性がある)は保証されない。
PGCluster(ピージークラスター)
マルチマスター方式。メリットはクラスター数に制限が無いこと。
クエリを負荷に応じて分散するロードバランサー、更新系クエリを他のノードにコピーしてクラスター間が正しい状態かどうかを監視するレプリケーション、そしてクラスターの最低3台が必要。もちろんすべてを1台で兼ねることもできるが、何ら意味は無い。
デメリットは、クラスターが増えるとノードすべてにコピーを反映させるのに時間がかかるようになり、指数関数的に待ち時間が増える(もちろん選択系クエリはクラスタが多いほうが早い)こと。負荷が多くなるとなぜかコピーが正常に行えない問題などがある。
おそらく選択系クエリと更新系クエリのどちらの頻度が多いかによって選ぶべきなのだろうと思われる。
(補足)MySQLはレプリケーションを標準で備えている。但し技術検証は行っていないため、ここでは特に触れないでおく。
最近pgpool-IIがリリースされました。結構強力です。