PostgreSQL15 ストリーミングレプリケーションの設定方法

2023年12月28日

環境
Ubuntu 23.04
PostgreSQL 15

操作方法
1.プライマリー側ノードの設定を行います
# vi /etc/postgresql/15/main/postgresql.conf

1) 60行目 コメント解除して変更
listen_addresses = '*'

2) 205行目 コメント解除
wal_level = replica
3) 210行目 コメント解除
synchronous_commit = on

4) 308行目 コメント解除 (レプリケーションリクエストを受ける接続最大値)
max_wal_senders = 10

5).322行目 コメント解除して変更
synchronous_standby_names = '*'

2.接続許可の設定を行います
1).host replication [レプリケーションユーザー] [接続許可IP] [認証方式]

host replication rep_user 10.0.0.31/32 scram-sha-256
host replication rep_user 10.0.0.51/32 scram-sha-256

3. レプリケーション用ユーザーを作成する

# su - postgres
$ createuser --replication -P rep_user
Enter password for new role: # 任意のパスワード設定
Enter it again:
$ exit

postgresqlを再起動します
# systemctl restart postgresql

4.レプリカ側ノードの設定を行います
1). サービスを停止して既存データは削除

root@node01:~# systemctl stop postgresql
root@node01:~# rm -rf /var/lib/postgresql/15/main/*

2).プライマリー側のデータバックアップを取得する

root@node01:~# su - postgres
postgres@node01:~$ pg_basebackup -R -h www.arkgame.com -U rep_user -D /var/lib/postgresql/15/main -P
Password: # レプリケーション用ユーザーのパスワード
postgres@node01:~$ exit

# vi /etc/postgresql/15/main/postgresql.conf

# 60行目 : コメント解除して変更
listen_addresses = '*'

# 335行目 : コメント解除
hot_standby = on

# systemctl start postgresql

5.プライマリー側で SQL 実行します。 プライマリー側データベースを作成する等してレプリケーションが行われています

$ psql -c "select usename, application_name, client_addr, state, sync_priority, sync_state from pg_stat_replication;"

 

Ubuntu 23.04

Posted by arkgame