PostgreSQL 16 : ストリーミングレプリケーション2024/05/30 |
PostgreSQL のストリーミングレプリケーションの設定です。 |
|
[1] |
こちらの [1] を参考に プライマリー/レプリカ 全ノードに PostgreSQL サーバーをインストールしておきます。 |
[2] | プライマリー側ノードの設定です。 |
root@www:~#
vi /etc/postgresql/16/main/postgresql.conf # 60行目 : コメント解除して変更 listen_addresses = ' * '
# 211行目 : コメント解除 wal_level = replica # 216行目 : コメント解除 synchronous_commit = on # 314行目 : コメント解除 (レプリケーションリクエストを受ける接続最大値) max_wal_senders = 10 # 328行目 : コメント解除して変更 synchronous_standby_names = ' * '
root@www:~#
vi /etc/postgresql/16/main/pg_hba.conf # 最終行に追記 (接続許可の設定) # host replication [レプリケーションユーザー] [接続許可IP] [認証方式]
host replication rep_user 10.0.0.30/32 scram-sha-256
host replication rep_user 10.0.0.51/32 scram-sha-256
# レプリケーション用ユーザー作成 root@www:~# su - postgres postgres@www:~$ createuser --replication -P rep_user Enter password for new role: # 任意のパスワード設定 Enter it again:
postgres@www:~$
root@www:~# exit
systemctl restart postgresql
|
[3] | レプリカ側ノードの設定です。 |
# サービスを停止して既存データは削除 root@node01:~# systemctl stop postgresql root@node01:~# rm -rf /var/lib/postgresql/16/main/*
# プライマリー側のデータバックアップを取得 root@node01:~# su - postgres postgres@node01:~$ pg_basebackup -R -h www.srv.world -U rep_user -D /var/lib/postgresql/16/main -P Password: # レプリケーション用ユーザーのパスワード 30799/30799 kB (100%), 1/1 tablespace postgres@node01:~$ exit
root@node01:~#
vi /etc/postgresql/16/main/postgresql.conf # 60行目 : コメント解除して変更 listen_addresses = ' * '
# 339行目 : コメント解除 hot_standby = on systemctl start postgresql |
[4] | プライマリー側で SQL 実行し、以下のような結果が返ってくれば OK です。 プライマリー側データベースを作成する等してレプリケーションが行われていることも確認しておくとよいでしょう。 |
postgres@www:~$ 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 | 16/main | 10.0.0.51 | streaming | 1 | sync (1 row) |
Sponsored Link |