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
とかそんな感じ。
今日の参加者は8名といつも通りの流れ。
今日はだいぶ良い感じのもくもくタイムであった。