DBAtlas · Veritabanı operasyon atlası

Standby'ı elle yapılandır (standby.signal + primary_conninfo)

PostgreSQLReplikasyon

Komut

# Standby'da, PostgreSQL kapalıyken (PGDATA bir yedekten/kopyadan geldi):
touch $PGDATA/standby.signal
cat >> $PGDATA/postgresql.auto.conf <<'EOF'
primary_conninfo = 'host=<primary_host> port=5432 user=replicator application_name=<standby_name>'
primary_slot_name = '<slot>'
EOF
pg_ctl -D $PGDATA start
# PG13+: çalışan standby'da bağlantıyı restart'sız değiştir (ör. yeni primary'ye yönlendir):
psql -X -c "ALTER SYSTEM SET primary_conninfo = 'host=<new_primary_host> port=5432 user=replicator application_name=<standby_name>'" -c "SELECT pg_reload_conf();"

Ne yapar?

standby.signal dosyası sunucunun standby olarak açılmasını sağlar; primary_conninfo streaming bağlantısını, primary_slot_name kullanılacak replication slot'u tanımlar. PG13+ ile primary_conninfo ve primary_slot_name reload ile değiştirilebilir.

Ne zaman kullanılır?

pg_basebackup -R kullanılmadan (pgBackRest, snapshot, rsync ile) hazırlanan bir veri dizinini standby yapmak veya mevcut standby'ı yeni primary'ye yönlendirmek için.

Dikkat

Slot primary'de önceden oluşturulmalı (pg_create_physical_replication_slot), yoksa walreceiver sürekli hata verir. Parolayı conninfo yerine ~/.pgpass'e koy. application_name, synchronous_standby_names'teki adla birebir eşleşmeli. standby.signal unutulursa sunucu primary olarak açılır ve ayrı bir timeline'a geçer.

DBAtlas'ta aç →

İlgili