PostgreSQL 9.5 : レプリケーションの設定2017/09/25 |
PostgreSQL のレプリケーションの設定です。マスタースレーブ型の冗長構成になります。
|
|
[1] | |
[1] | マスター側ホストの設定です。 |
[root@dlp ~]# postgresql-setup --initdb --unit rh-postgresql95-postgresql * Initializing database in '/var/opt/rh/rh-postgresql95/lib/pgsql/data' * Initialized, logs are in /var/lib/pgsql/initdb_rh-postgresql95-postgresql.log
[root@dlp ~]#
vi /var/opt/rh/rh-postgresql95/lib/pgsql/data/postgresql.conf # 59行目:コメント解除して変更 listen_addresses = ' * '
# 173行目:コメント解除して変更 wal_level = hot_standby
# 180行目:コメント解除して変更 # on ⇒ 同期 # remote_write ⇒ メモリは同期 # local ⇒ スレーブは非同期 # off ⇒ 完全非同期 synchronous_commit = local
# 206行目:コメント解除して変更 (アーカイブ有効化) archive_mode = on
# 208行目:コメント解除して変更 (アーカイブ取得時のコマンド) archive_command = ' cp %p /var/opt/rh/rh-postgresql95/lib/pgsql/archive/%f '
# 224行目:コメント解除して変更 (スレーブ数 + 1) max_wal_senders = 2
# 226行目:コメント解除して変更 (アーカイブログの保持数) wal_keep_segments = 10
# 238行目:コメント解除して変更 (任意の名称) synchronous_standby_names = ' slave01 '
[root@dlp ~]#
vi /var/opt/rh/rh-postgresql95/lib/pgsql/data/pg_hba.conf # 最終行に追記 (接続許可の設定) # host replication [レプリケーションユーザー] [接続許可IP] password host replication replica 127.0.0.1/32 md5 host replication replica 10.0.0.30/32 md5 host replication replica 10.0.0.51/32 md5 /etc/rc.d/init.d/rh-postgresql95-postgresql start [root@dlp ~]# chkconfig rh-postgresql95-postgresql on -bash-4.1$ createuser --replication -P replica Enter password for new role: Enter it again: |
[2] | IPTables を有効にしている場合は、PostgreSQL サービスポートの許可が必要です。 |
[root@dlp ~]# iptables -I INPUT 5 -p tcp -m state --state NEW -m tcp --dport 5432 -j ACCEPT
|
[3] | スレーブ側ホストの設定です。 |
[root@node01 ~]#
su - postgres # マスター側のデータバックアップを取得 -bash-4.1$ pg_basebackup -h 10.0.0.30 -U replica -D /var/opt/rh/rh-postgresql95/lib/pgsql/data -P --xlog Password: # replica ユーザーのパスワード
-bash-4.1$
vi /var/opt/rh/rh-postgresql95/lib/pgsql/data/postgresql.conf # 247行目:コメント解除して変更 hot_standby = on
-bash-4.1$
cp /opt/rh/rh-postgresql95/root/usr/share/pgsql/recovery.conf.sample /var/opt/rh/rh-postgresql95/lib/pgsql/data/recovery.conf -bash-4.1$ vi /var/opt/rh/rh-postgresql95/lib/pgsql/data/recovery.conf # 44行目:コメント解除して変更 (アーカイブ取得時のコマンド) restore_command = ' scp 10.0.0.30:/var/opt/rh/rh-postgresql95/lib/pgsql/archive/%f %p '
# 116行目:コメント解除して変更 standby_mode = on
# 123行目:コメント解除して変更 (マスターサーバー接続情報) primary_conninfo = ' host=10.0.0.30 port=5432 user=replica password=password application_name=slave01 '
exit logout [root@node01 ~]# /etc/rc.d/init.d/rh-postgresql95-postgresql start [root@node01 ~]# chkconfig rh-postgresql95-postgresql on |
[4] | マスターサーバー側で SQL 実行し、以下のような結果が返ってくれば OK です。 データベースを作成する等してレプリケーションが行われていることを確認してください。 |
-bash-4.1$ psql -c "select application_name, state, sync_priority, sync_state from pg_stat_replication;" application_name | state | sync_priority | sync_state ------------------+-----------+---------------+------------ slave01 | streaming | 1 | sync (1 row) |
Sponsored Link |