Postgresql Replication Failover
Postgresql Replication Failover yazımda Streaming replikasyon kullanılan sistemde failover nasıl yapılacağını anlatacağım.streaming replikasyonu bir önceki yazımda bahsetmiştim .
Bazı durumlarda veritabanı sistemlerinin çalışması veya upgrade işlemleri için failover yapmak gerekebilir . Postgresql de primary kapandığında otomatik olarak diğer tarafa geçme yoktur. Bundan dolayı manuel işlem yapılır fakat otomatik olarak yapılması için patroni,repmanager,paf vb.. Gibi çözümler bulunmaktadır.
İlk olarak karışıklık olmaması amacı ile sunucumuzun bilgilerini yazalım.
Sunucu-Adı | İp | Port | |
Primary | Postgresql01 | 52.249.216.88 | 5432 |
Secondary | Postgresql02 | 40.76.114.239 | 5432 |
Yukarıda belirtilen sunucu bilgileri failover yapılmadan önceki halidir.
Failover işlemine başlayalım.
İlk olarak PRIMARY sunucumuzu aşağıdaki komut yardımı ile durduruyoruz.
systemctl stop postgresql-12
SECONDARY sunucumuzda aşağıdaki komutu çalıştırıyoruz.
select pg_promote();
Eski SECONDARY sunucusunda aşağıdaki komutu çalıştırarak hala standy modda mı kontrol edelim.
Yukarıda görüldüğü gibi f yani false dönmektedir. Bu artık secondary değildir.
ESKIPRIMARY sunucumuz ile slot üzerinden haberleşmesi için aşağıdaki gibi slot oluşturuyoruz.
SELECT pg_create_physical_replication_slot('farukerdemm');
ESKI PRIMARY sunucumuzun postgresql.conf dosyasına gelerek aşağıdaki parametreleri kopyalıyoruz.
primary_conninfo = 'user=postgres password=* host=40.76.114.239 port=5432 sslmode=disable sslcompression=0 gssencmode=prefer krbsrvname=postgres target_session_attrs=any'
primary_slot_name = 'farukerdemm'
recovery_target_timeline='latest'
Yukarıdaki 3 parametreyi girdikten sonra aşağıdaki ki gibi data dosyamınızın bulunduğu yerde stanby.signal adında dosya ESKI PRIMARY(YENI SECONDARY) de oluşturuyoruz.
touch standby.signal
Yukarıda görüldüğü gibi dosyamızı data dizinimizde oluşturduk.
ESKI SECONDARY (YENI PRIMARY) sunucumuzda servisi başlatıyoruz ve failover işlemlerimiz tamamlanms oluyor .
Aşağıdaki sorguyu yeni primary sunucusunda çalıştırarıp kontrol edelim.
Görüldüğü gibi failover işlemi tamam ve yeni primary üzerinden işlemlerimizi yapabiliriz.
Son Durum aşağıdaki gibidir.