トップ «前の日記(2010/08/09 (月) ) 最新 次の日記(2010/08/11 (水) )» 編集 RSS feed

HsbtDiary


2010/08/10 (火) [長年日記]

[postgres][pgpool] pgpool-ii を試した

PostgreSQL でレプリケーションとかどうやるんかなと調べてみたら、pgpool-ii というのを使うと楽らしいので MacBook 上に構築してみた。基本的なことは pgpool-II ユーザマニュアル に書いてあるとおり。

以下、 homebrew で構築する手順

$ brew install postgresql pgpool
$ mkdir -p /usr/local/var/postgres/master
$ initdb /usr/local/var/postgres/master
$ mkdir -p /usr/local/var/postgres/slave
$ initdb /usr/local/var/postgres/slave
$ postgres -D /usr/local/var/postgres/master -r /usr/local/var/postgres/master/server.log
$ postgres -D /usr/local/var/postgres/slave -p 5433 -r /usr/local/var/postgres/slave/server.log

ここまでの手順でレプリケーションを行う master と slave のデータベースプロセスが動いているはず。

引き続き、pgpool の分散ルールを格納する pgpool と呼ばれるデータベースを作成する。この作成には pgpool-ii に付属している sql を用いる。

$ createuser pgpool
$ psql -f /usr/local/Cellar/pgpool-ii/2.3.3/share/pgpool-II/system_db.sql pgpool -p 5432

最後に pgpool を起動する。pgpool の設定そのものは /usr/local/Cellar/pgpool-ii/2.3.3/etc/pgpool.conf.sample-replication を pgpool.conf にリネームして使う。変更する箇所が一つあって pgpool で管理するデータベースの定義箇所を以下のように修正した。

backend_hostname0 = 'localhost'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/usr/local/var/postgres/master'
backend_hostname1 = 'localhost'
backend_port1 = 5433
backend_weight1 = 1
backend_data_directory1 = '/usr/local/var/postgres/slave'

細かい設定内容は後で勉強する。

ここまで来たら、pgpool -n を実行すると pgpool が 9999 ポートで起動しているはず。

 $ createuser -p 9999 alice
 $ createdb -p 9999 alice_development
 $ psql -p 9999 -U alice alice_development

とかそんな感じ。

[asakusa.rb][ruby] asakusa.rb 第61回

今日の参加者は8名といつも通りの流れ。

今日はだいぶ良い感じのもくもくタイムであった。