|
|
クイックスタート最も単純な構成でStreaming Replicationをセットアップする。 master、slaveとも同一サーバ上で動かす。ポート番号だけ変えて起動する(master=5432, slave=2345)。 準備マスタpostgresql.confの設定最低限の設定項目を示す。 # 啓蒙 shared_buffers = できるだけ大きな値 # これをonにしなければ始まらない。 archive_mode = on # archive か hot_standby。今回はHotStandbyと併用するので"hot_standby" wal_level = hot_standby # PITR用。適当なディレクトリを指定 archive_command = 'cp -i %p /home/postgres/archives_master/%f' # スレーブの最大数。ここでは1。 max_wal_senders = 1 また、スレーブを他サーバからアクセスさせる場合は"listen_addresses"の設定も忘れずに。 listen_addresses = '*' # 適宜。 pg_hba.confの設定
スレーブからの接続のために、pg_hba.confに以下の行を追加する。
USERはスレーブの実行ユーザを指定する。ここではpostgres。
# TYPE DATABASE USER CIDR-ADDRESS METHOD host replication postgres 127.0.0.1/32 trust スナップショット
スレーブを構築するために、マスターのスナップショットを取得する。
当然だがマスタは起動しておくこと。
masterに接続して、次のコマンドを実行する。
template1=# SELECT pg_start_backup('SR SNAPSHOT');
pg_start_backup
-----------------
0/4000020
(1 row)
masterのデータ領域(ここでは/usr/local/pgsql/master)を、 slave用のデータ領域(ここでは/usr/local/pgsql/slave)にコピーする。 cp -r /usr/local/pgsql/master/ /usr/local/pgsql/slave データ領域のコピーが終了したら、以下のコマンドを実行する。 template1=# SELECT pg_stop_backup(); NOTICE: pg_stop_backup cleanup done, waiting for required WAL segments to be archived pg_stop_backup ---------------- pg_stop_backup ---------------- 0/40000D0 (1 row) 最後にアーカイブ領域の内容をコピーする。 # cp -r /usr/local/pgsql/archive_master/* /usr/local/pgsql/archive_slave スレーブpostmaster.pidの削除マスタ側のpostmaster.pidファイルが残っているので削除する。 # rm -f /usr/local/pgsql/slave/postmaster.pid postgresql.confの編集適宜、編集する。 # 啓蒙 shared_buffers = できるだけ大きな値 # 今回はmasterと同じサーバで稼働させるので、port番号を変える。 port = 2345 # 今回はHotStandByと併用するので hot_standby = on # archive か hot_standby。今回はHotStandbyと併用するので"hot_standby" wal_level = hot_standby # PITR用。適当なディレクトリを指定 archive_mode = on archive_command = 'cp -i %p /home/postgres/archives_slave/%f' slave用のアーカイブログ保存ディレクトリ(ここでは/home/postgres/archives_slave)を作成する。 # mkdir /home/postgres/archive_slave pg_hba.confの編集
pg_hba.confもマスタのコピーなので、適宜編集する。
# スレーブ側では不要 ## host replication postgres 127.0.0.1/32 trust recovery.confの準備次にrecovery.confを準備する。 PostgreSQLをインストールしたディレクトリにshareというサブディレクトリがあり、 そこにサンプルファイルrecovery.conf.sampleがあるので、それをコピーして編集する。 # cd /usr/local/pgsql/slave # cp ../share/recovery.conf.sample recovery.conf 編集が必要な項目を示す。 # recovery.confは全て'でクオートしないとならない。 standby_mode = 'on' # primary_conninfo = 'host=localhost port=5432' # 必須ではないが、フェールオーバーには必要 trigger_file = '/tmp/trigger' # PITR用 restore_command = 'cp -i /usr/local/pgsql/archive_slave/%f %p'
"'on'"と "'"でくくること。 マスタのサーバアドレスとポート番号を指定する。 フェールオーバで、スレーブを書き込み可能にするためのファイルを指定する。 普段は存在せず、なんらかのトラブルでフェールオーバしなければならないときに作成するファイル名を指定。 スレーブの起動準備が整ったので、あとはスレーブを起動するだけである。 停止マスタもスレーブも停止や起動ができる。 非常に柔軟な運用が可能である。
Last-modified: 2010-5-24
|