Fedora 39 PostgreSQL 15 ストリーミングレプリケーションの設定方法
環境
Fedora release 39 (Thirty Nine)
PostgreSQL 15.4
操作方法
1.プライマリー側ノードの設定方法
# vi /var/lib/pgsql/data/postgresql.conf
# 60行目 : コメント解除して変更
listen_addresses = '*'
# 205行目 : コメント解除
wal_level = replica
# 210行目 : コメント解除
synchronous_commit = on
# 308行目 : コメント解除 (レプリケーションリクエストを受ける接続最大値)
max_wal_senders = 10
# 322行目 : コメント解除して変更する
synchronous_standby_names = '*'
# 60行目 : コメント解除して変更
listen_addresses = '*'
# 205行目 : コメント解除
wal_level = replica
# 210行目 : コメント解除
synchronous_commit = on
# 308行目 : コメント解除 (レプリケーションリクエストを受ける接続最大値)
max_wal_senders = 10
# 322行目 : コメント解除して変更する
synchronous_standby_names = '*'
# 60行目 : コメント解除して変更 listen_addresses = '*' # 205行目 : コメント解除 wal_level = replica # 210行目 : コメント解除 synchronous_commit = on # 308行目 : コメント解除 (レプリケーションリクエストを受ける接続最大値) max_wal_senders = 10 # 322行目 : コメント解除して変更する synchronous_standby_names = '*'
2.接続許可の設定を行います
# vi /var/lib/pgsql/data/pg_hba.conf
最終行に追記 (接続許可の設定)
# host replication [レプリケーションユーザー] [接続許可IP] [認証方式]
host replication rep_user 10.0.0.51/32 scram-sha-256
host replication rep_user 10.0.0.52/32 scram-sha-256
# host replication [レプリケーションユーザー] [接続許可IP] [認証方式]
host replication rep_user 10.0.0.51/32 scram-sha-256
host replication rep_user 10.0.0.52/32 scram-sha-256
# host replication [レプリケーションユーザー] [接続許可IP] [認証方式] host replication rep_user 10.0.0.51/32 scram-sha-256 host replication rep_user 10.0.0.52/32 scram-sha-256
3.レプリケーション用ユーザーを作成する
postgres@localhost ~]$ createuser --replication -P rep_user
新しいロールのためのパスワード:
もう一度入力してください:
$ exit
ログアウト
# systemctl restart postgresql
postgres@localhost ~]$ createuser --replication -P rep_user
新しいロールのためのパスワード:
もう一度入力してください:
$ exit
ログアウト
# systemctl restart postgresql
postgres@localhost ~]$ createuser --replication -P rep_user 新しいロールのためのパスワード: もう一度入力してください: $ exit ログアウト # systemctl restart postgresql
4.レプリカ側ノードの設定を行います
サービスを停止して既存データを削除する
# systemctl stop postgresql
# rm -rf /var/lib/pgsql/data/*
# systemctl stop postgresql
# rm -rf /var/lib/pgsql/data/*
# systemctl stop postgresql # rm -rf /var/lib/pgsql/data/*
プライマリー側のデータバックアップを取得する
# su - postgres
$ pg_basebackup -R -h www.arkgame.com -U rep_user -D /var/lib/pgsql/data -P
Password: # レプリケーション用ユーザーのパスワード
$ exit
# su - postgres
$ pg_basebackup -R -h www.arkgame.com -U rep_user -D /var/lib/pgsql/data -P
Password: # レプリケーション用ユーザーのパスワード
$ exit
# su - postgres $ pg_basebackup -R -h www.arkgame.com -U rep_user -D /var/lib/pgsql/data -P Password: # レプリケーション用ユーザーのパスワード $ exit
hot_standbyを有効にする
# vi /var/lib/pgsql/data/postgresql.conf
# 60行目 : コメント解除して変更
listen_addresses = '*'
# 335行目 : コメント解除
hot_standby = on
# 60行目 : コメント解除して変更
listen_addresses = '*'
# 335行目 : コメント解除
hot_standby = on
# 60行目 : コメント解除して変更 listen_addresses = '*' # 335行目 : コメント解除 hot_standby = on
postgresqlを再起動します
# systemctl start postgresql
# systemctl start postgresql
# systemctl start postgresql
5.全ノードで、Firewalld を有効にしている場合は、サービスを許可します
# firewall-cmd --add-service=postgresql
success
# firewall-cmd --runtime-to-permanent
success
# firewall-cmd --add-service=postgresql
success
# firewall-cmd --runtime-to-permanent
success
# firewall-cmd --add-service=postgresql success # firewall-cmd --runtime-to-permanent success
6.プライマリー側で SQL 実行し、以下の結果を返します
$ psql -c "select usename, application_name, client_addr, state, sync_priority, sync_state from pg_stat_replication;"
$ psql -c "select usename, application_name, client_addr, state, sync_priority, sync_state from pg_stat_replication;"
$ psql -c "select usename, application_name, client_addr, state, sync_priority, sync_state from pg_stat_replication;"