私のMastodonデータベース移設作業ですが、移設先をレプリケーションのスタンバイサーバにしてから切り替えることがほとんどです。
旧鯖のpostgresql.confに
listen_addresses = '*'
synchronous_commit = off
max_wal_senders = 3
wal_level = replica
hot_standby = on
pg_hba.confに
host replication replication_user xx.xx.xx.xx/32 md5
ufw allow from xx.xx.xx.xx to any port 5432 proto tcp
などと準備しておいて、新鯖で
pb_basebackup -h yy.yy.yy.yy -D /var/lib/postgresql/12/main -U replication_user -R -P
pg_ctl start
.env.productionを新鯖に書き換え、鯖とめて、
pg_ctl promote
でDB本番移行。鯖再開という感じです。
replication_userを事前に作成しておくのを説明してないな……。まぁ、イメージがわかればOKということで。
psql -c "CREATE ROLE replication_user LOGIN REPLICATION PASSWORD 'xxxxxxxxx'";
レプリケーションやDB鯖移設、難しくないよ、というお話でした。
以前、そのへんを少し丁寧に書いたヤツはこちら。
https://noellabo.qrunch.io/entries/xvEfTs4zVrTzqSM7