PostgreSQL : ストリーミングレプリケーション2019/08/07 |
PostgreSQL のストリーミングレプリケーションの設定です。
マスター/スレーブ型の冗長構成になります。 |
|
[1] | |
[2] | マスター側ホストの設定です。 |
root@dlp:~#
vi /etc/postgresql/11/main/postgresql.conf # 59行目:コメント解除して変更 listen_addresses = ' * '
# 184行目:コメント解除 wal_level = replica # 189行目:コメント解除 synchronous_commit = on # 239行目:コメント解除 (レプリケーションリクエストを受ける接続最大値) max_wal_senders = 10 # 241行目:コメント解除して変更 (アーカイブログのファイルセグメント数の最小値) wal_keep_segments = 10
# 253行目:コメント解除して変更 synchronous_standby_names = ' * '
root@dlp:~#
vi /etc/postgresql/11/main/pg_hba.conf # 最終行:既存設定はコメント化して追記 (接続許可の設定) # host replication [レプリケーションユーザー] [接続許可IP] trust #host replication all 127.0.0.1/32 md5 #host replication all ::1/128 md5 host replication rep_user 127.0.0.1/32 trust host replication rep_user 10.0.0.30/32 trust host replication rep_user 10.0.0.51/32 trust # レプリケーション用ユーザー作成 root@dlp:~# su - postgres postgres@dlp:~$ createuser --replication -P rep_user Enter password for new role: Enter it again:
postgres@dlp:~$
root@dlp:~# exit
mkdir /var/lib/postgresql/11/archive root@dlp:~# chown postgres. /var/lib/postgresql/11/archive root@dlp:~# systemctl restart postgresql
|
[3] | スレーブ側ホストの設定です。 |
root@node01:~# systemctl stop postgresql root@node01:~# rm -rf /var/lib/postgresql/11/main/*
root@node01:~#
su - postgres # マスター側のデータバックアップを取得 postgres@node01:~$ pg_basebackup -R -h dlp.srv.world -U rep_user -D /var/lib/postgresql/11/main -P 23771/23771 kB (100%), 1/1 tablespace postgres@node01:~$ exit
root@node01:~#
vi /etc/postgresql/11/main/postgresql.conf # 59行目:コメント解除して変更 listen_addresses = ' * '
# 263行目:コメント解除 hot_standby = on
root@node01:~#
vi /var/lib/postgresql/11/main/recovery.conf # application_name 追記 (任意の名称 : ホスト名等を指定) standby_mode = 'on' primary_conninfo = 'user=rep_user passfile=''/var/lib/postgresql/.pgpass'' host=dlp.srv.world port=5432 sslmode=prefer sslcompression=0 krbsrvname=postgres target_session_attrs=any application_name=node01 '
systemctl start postgresql |
[4] | マスターサーバー側で SQL 実行し、以下のような結果が返ってくれば OK です。 マスターサーバー側データベースを作成する等してレプリケーションが行われていることも確認しておくとよいでしょう。 |
postgres@dlp:~$ psql -c "select usename, application_name, client_addr, state, sync_priority, sync_state from pg_stat_replication;" usename | application_name | client_addr | state | sync_priority | sync_state ----------+------------------+-------------+-----------+---------------+------------ rep_user | node01 | 10.0.0.51 | streaming | 1 | sync (1 row) |
Sponsored Link |