ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

PostgreSQLコミュのPostgresのレプリケーション

  • mixiチェック
  • このエントリーをはてなブックマークに追加
同期・非同期問わず、PostgreSQLで負荷分散・バックアップ
を行うレプリケーションソフトは
pgpool,Slony-I,PGCluster,usogres
などがありますが、これらが実際に大規模に運用されている例ってどのくらいあるのでしょうか。

色々調べてみるとpgpoolを使っている方はなかなか多いようですが、大規模システムで運用されているという例は見かけませんでした。

PG Clusterはdoblogなどで利用されているとのことですが、
なかなかバギーだという噂です。

Slony-Iはなかなか良さそうですが、製作者が.info、.orgドメインの管理に使っているという例くらいで、280万レコードあるということですが、どの部分に用いられているのかわからないのでなんとも言えず、という感じです。他の運用実績はイマイチわかりません。

私が持っている情報はこのくらいですが、
これらのレプリケーションソフトの性能はともかくとして、
その安定性や運用実績(あそこのシステムはこれで動いてるぜ!など)についてご存知の方がいらっしゃいましたら是非教えていただきたく思います。

以上、よろしくお願いします。

コメント(7)

ちなみに、参照したURLは各公式サイト、Yet Onother 仕事のツール及び
いろんな方のblogとかです。
2chではpgpoolの記述を多く見かけました。
ども、「Yet Another 仕事のツール」書いてます。読んで頂けて嬉しいです。

PGClusterは同期、Slony-Iは非同期なので、そのへんが用途に応じて使い分けるポイントになるでしょうね。バギーであるかどうかは、やはりもう少し事例を見てみないとなんとも、といったところですが・・・。

そんなわけで、いろいろな事例があれば是非聞いてみたいです。
※私も事例を作れるように努力せねば・・・。
PG Clusterは
http://mixi.jp/show_friend.pl?id=76654
の のんべ さんが開発者なので、ご本人に聞いて見られるとよろしいかと。
大規模事例は、結構隠されているのが多いですからねぇ。なかなか表には出てこないと思います。むしろ自分で作るぐらいの意気込みで言ってみてはいかがでしょうか?

これらの選び方で言うと、usogresは開発終わって久しいのでともかく、他は状況によりけりでしょうね。

pgpoolは簡単に出来るのはいいのですが、単なるクエリベースのレプリケーションで、シーケンス対応が大変とか、リカバリ時の処理がノンストップにならないとか、考えなければいけない点が多いです。
PGClusterは上記の欠点の多くを克服しており、はまれば効果絶大です。ただしそこまで持っていくのが大変だし、何しろ最低5台という構成が厳しいです。
Slony-Iは上記2種と全く違うトリガベース・非同期なので、応用例が全く違います。ただ、この実装手法は無難ですし、なかなか面白い使い方も出来ます。例えばSlony-I+pgpoolの組み合わせでごにょごにょとか・・・
みなさん、コメントありがとうございます。

>エルモさん
筆者さんですか!(汗
そうですね〜。
噂だけでアレコレってのもアレなので実例を知りたいですね。

>はまもとさん
をを!直々に!
確かに色々なフィードバックも来ているでしょうし、
それが一番手っ取り早いのかもしれません。
(畏れ多いですが)直接聞いてみてまたここに書き込みますね。
ありがとうございます。

>L.starさん
なるほどー。
そういえばSlony-Iの開発者の人もSlony-Iとpgpoolを組み合わせて使ってるってどこかに書いてありました。

それぞれのソフトの利点・欠点、必要構成などはおおよそわかってはきましたが、やはり実際の運用例がないと、使おうにもいまいち不安なのです。テスト環境と実運用はやはり違いますし、負荷テストをやったりするお金も余裕もないので・・笑。

やはりL.starさんのおっしゃっているように大規模事例などはなかなか外に出ないものなのでしょうか・・。む〜ん。
PGCluster開発担当の,のんべです.
> PG Clusterはdoblogなどで利用されているとのことですが、
> なかなかバギーだという噂です。
確かに,あの頃のは,利用条件によってはかなり不安定になった版だったと思います.

1.0.8あたりから内部の作りを刷新しました.
更に1.0.8cと1.0.8dは別物の感があるくらい違っています.
ついでに本来1.0.8eとする版をPostgreSQL7.4対応して1.1.0にしました.これは1.0.8dのボトルネックを改良したものです.

これらの機能と仕組みの推移について,mixiやメールで説明するのは難しいですので,どこかで話す機会があれば,と思います.

さて,大規模事例についてですが,まず,レプリケーションシステムは,そもそもデータ規模の大きなシステムには向かないことを理解してください(これはpgpoolでもSlony-Iでも同じです).データ規模による負荷を分散するためには,分散データベース機能が必要です.PGClusterの部分レプリケーション機能を使えば,水平分散のようなものを作ることはできますが,セッションの分散自体はアプリケーション側で用意する必要があります.
という条件下であれば,DBサイズが30GBくらいのシステムで運用されていると聞いたことがあります.
ただ,この程度のデータ規模であれば,PGClusterを使わなくてもPostgreSQL1台で十分処理できるサイズです.

ドイツから3TBくらいのシステムで使いたいと言われたことがありますが,その後どうなったのか報告を頂いていませんので事例にはならないでしょうね.

PGClusterが向いているのはセッション負荷が高いシステムです(それも参照負荷).
更新負荷は同期レプリケーションには向いていません.非同期のSlony-Iの方が向いていると思います.

経験からすると,10対1くらいの割合で参照負荷が高いシステムで最も効果を発揮しています.
1.1.1や1.3.0は更に改良を加えていますので,10対2以上でも効果を発揮してくれるかもしれません.
(特に1.3.0は更新負荷が少々高くても結構早いです)
>のんべさん
わざわざありがとうございます!
開発者ご本人に登場いただいてしまい、恐縮です。

確かにそうですね。
DBを分けないでデータ規模の大きなものをまるごとレプリケーション、というのはあまり現実的ではないですね。
単に「大規模システム」と言ってしまったので語弊があったかもしれませんが、要は「これだけの量のレコードを十分なパフォーマンスでもってこれだけダウンタイムを抑えてレプリケーションできているよ」という例を知りたかったのです。

なるほど。現在のPGClusterの1.3.0などはかなり安定してきているということですね。
私の情報は実体験に基づかない噂ベースのものでしたので、もしお気を悪くさせてしまったのであれば申し訳ありませんでした。
開発の現場からの貴重な情報、ありがとうございました。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

PostgreSQL 更新情報

PostgreSQLのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。