Ubuntu 24.04
Sponsored Link

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:~$
exit
root@www:~#
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
root@node01:~#
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)
関連コンテンツ