2009年05月20日

[Wakame] PostgreSQLもスケール対象へ (1/n)

livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

Wakame」で「PostgreSQL」を使えるようにしたい

WakameでPostgreSQLを使えるなら使ってみたい

Wakameに興味を持って下さった方々から、
こう言った声を少なからずとも、いや、意外と多く聞く様になった。

だったら、PostgreSQLもどうにかしよう。
個人的には久しぶりにPostgreSQLに触れる機会となった。

PostgreSQLでレプリケーション構成を構築するには「pgpool-II」を使うと良いらしいよ

噂の真相を突き止めるべく、検証してみる事にした。


作業記録

作業環境

ディストリビューションDebian GNU/Linux 5.0.1
カーネル2.6.18-6-xen-amd64
postgresql8.3.7-0lenny1
pgpool21.3-2

PostgreSQLをインストール

$ sudo apt-get install postgresql

PostgreSQLアカウント作成

$ sudo -u postgres createuser -P axsh
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) y

psqlでpostgresに接続テスト

$ psql -d postgres
Welcome to psql 8.3.7, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

postgres=# \q

pgpool-IIをインストール

$ sudo apt-get install pgpool2

pgpool-IIにノードを追加

$ cd /etc; pwd
/etc
$ sudo cp -pi pgpool.conf pgpool.conf.0
$ sudo vi pgpool.conf
$ diff pgpool.conf.0 pgpool.conf
149a150,153
> backend_hostname0 = '127.0.0.1'
> backend_port0 = 5432
> backend_weight0 = 1
>

pgpool-IIを再起動

$ sudo /etc/init.d/pgpool2 restart

pgpool-IIへ接続テスト

$ psql -d postgres -p 5433
Password:
Welcome to psql 8.3.7, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

postgres=# \q

繋がった

LISTENポートを調べてみる

$ sudo netstat -nap |grep -w LISTEN
tcp        0      0 0.0.0.0:9898            0.0.0.0:*               LISTEN      8378/pgpool
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1069/sshd
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      7613/postgres
tcp        0      0 127.0.0.1:5433          0.0.0.0:*               LISTEN      8378/pgpool
tcp6       0      0 :::22                   :::*                    LISTEN      1069/sshd
ポート番号内容
5432postgres
5433pgpool
9898pgpool communication manager

なるほど


面白機能は pgpool-II 2.1からだった…

pgpool-IIには、1.x系と2.x系が存在していた。
しかも、使いたくなるような機能は2.1から実装されている事が判明。

pgpool-IIによるレプリケーションとオンラインリカバリの「pgpoolの歴史」より

プロダクトバージョンリリース時期主な追加機能
pgpoolver12004.4コネクションプール機能、(2台による)同期レプリケーション機能
pgpoolver22004.6負荷分散機能
pgpool-IIver12006.9パラレルクエリー、2台以上の同期レプリケーション機能
pgpool-IIver22007.11オンラインリカバリ

ノードを新規追加するにはオンラインリカバリが重宝するはずだ。
オンラインリカバリの検証もまた必要となる。


Debianパッケージが古い

Debianパッケージだと、pgpool-IIの1.3が最新となっている。

$ dpkg -l pgpool2
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name           Version        Description
+++-==============-==============-============================================
ii  pgpool2        1.3-2          connection pool server and replication proxy

2007.11にリリースされたのに、Debianにしてはパッケージが古いね。
sidにしてみたらどうなるのか気になったので調べてみても、やはり1.3だ。
http://packages.debian.org/sid/pgpool2

よって、ソースパッケージからインストールするしかない…訳だ。


今後の予定

  1. pgpool-II 2.1のインストール
  2. オンラインリカバリ検証
  3. 作ったスクリプトがあればそのスクリプト

ゴールはWakameに乗せる事。
ワクワクして来たぞ。



PostgreSQL徹底入門 第2版
浅羽 義之 石田 朗雄 稲葉 香理 永安 悟史
翔泳社
売り上げランキング: 71946


半袖 at 14:25│Comments(1)TrackBack(1)Wakame 

トラックバックURL

この記事へのトラックバック

1. [Wakame] PostgreSQLもスケール対象へ (2/n)  [ 半袖野郎 blog.hansode.org ]   2009年05月20日 20:05
[Wakame] PostgreSQLもスケール対象へ (1/n) の続編 前回の予告通り、今回はpgpool-II 2.1以降をインストールする。 http://pgfoundry.org/projects/pgpoolを確認すると、2009/05/20現在「2.2.2」が最新版。 今回はpgpool-II 2.2.2をインストールする。 ...

この記事へのコメント

1. Posted by os14   2009年05月22日 00:33
二年前くらいに使いました。
レプリケーションとかはうまくいきましたが、
結局オンラインリカバリがあまりうまくいかなくてそこはあきらめましたw

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔