PostgreSQLのレプリケーション設定
Webコンテンツの一部をPostgreSQLからプロバイドしていますが、やっつけで作った環境なのでPostgreSQLが単一障害点になっています。つまり、サービスしているPostgreSQLが落っこちたらサービス止まってしまう。
なのでPostgreSQLを多重化するためにPostgreSQL9.1でレプリケーションを実現します。本番環境に入れる前にまずは試験環境で設定がちゃんとできるか、またちゃんとデータをレプリカしてくれるか実験。
マスタ(試験)に本番環境のデータを投入。
なにやら使ってないデータベースがあるようなので、全部Drop。本番環境でdumpallしたファイルを投入。
マスタでいろいろ設定
postgresql.conf
以下の設定を追加。スタンバイサーバのアドレスを指定してもOKだと思う。面倒なのでアスタリで。
listen_addresses = '*'
あとアーカイブログの設定なども。
synchronous_standby_names='sr1' archive_mode=on archive_command = 'test ! -f /usr/local/pgsql/archive/%f && cp %p /usr/local/pgsql/archive/%f' wal_level = host_standby max_wal_senders = 4
synchronous_standby_namesは後で設定する同期スタンバイサーバの識別子。スタンドバイサーバのrecovery.confで設定をいれるんですが、同じ文字列にしてあげます。
アーカイブログの出力先(上記例だと/usr/local/pgsql/archive)はinitdb後でも存在しないので、手動で作ってあげる。
% mkdir /usr/local/pgsql/archive
pg_hba.conf
レプリカ通信を許可する。Howtoだと別にユーザをつくって云々とかってあるんですが、これも面倒なので既存ユーザで。パスワードとかも別にいいよね。
host replication postgres 192.168.1.0/24 trust
ここまで設定ファイルを編集したら、pg_ctlで再起動。
% /usr/local/pg_ctl restart
ベースバックアップ実行
これがわかりにくい表現だとおもうな。スタンバイサーバとマスタサーバを同期させる。
スタンバイサーバ側にPostgreSQL9.1をインストールして、initdbなどを実施する前にこれを実施してマスタとのデータ同期をとる。
スタンバイサーバで実行します。-Dで指定しているディレクトリがあるとエラ−になるのでがっつり削除。
$ /usr/local/pgsql/bin/pg_basebackup -h 192.168.1.1 \ -p 5432 -U postgres -D /usr/local/pgsql/data \ --format=plain --checkpoint=fast --label=label1 \ --progress --verbose
スタンバイサーバで設定
スタンバイには非同期と同期があるんだけど、今回はウェブでの参照ということで同期で設定。
recovery.conf
standby_mode = on restore_command = 'cp /usr/local/pgsql/archive/%f %p' primary_conninfo = 'host=192.168.1.1 port=5432 user=postgres application_name=sr1'
こっちでもarchiveディレクトリはないので手動で作成します。
postgres.conf
hot_standby = on
おお、これだけか。
postgresqlを起動
設定ファイルを編集したら、スタンドバイサーバのPostgreSQLを起動。
% /usr/local/pgsql/bin/pg_ctl start
私の環境ではこの段階でアーカイブがないとか云々と行ってきたので該当するアーカイブファイルを手動でマスタからコピーしてあげました。
今日やったのはここまで。ちょこちょことマスタでDBをイジってみましたがちゃんとレプリカしてくれる。。ように見えます。
もう少し検証してみます。
参考書はこちら。
- 作者: 天尋左石,柄沢聡太郎,はまちや2,大塚弘記,松信嘉範,板垣貴裕,福岡博,大和田純,白土慧,太田昌吾,じゅんいち☆かとう,市川快,前田雅央,岩浅晃郎,原田均,小野修司,ミック,みやけん,長野雅広,おにたま,中島聡,清水亮,角田直行,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2011/10/22
- メディア: 大型本
- 購入: 12人 クリック: 177回
- この商品を含むブログ (11件) を見る