Selamalar arkadaşlar bu yazımda sizlerle PostgreSql üzerinde bir adet Master ve Slave üzerinde Promote işlemi yapacağız. Bu yazımda 2 adet Ubuntu 20.04 server kullanacağım ve cihazlarımda PostgreSql 13 yüklenmiş ve Slot ile bağlı olarak Streaming Replication işlemi yapılmış olacak.
PostgreSql kurulumu için Official Sitesi için buraya, Sistemdostu’ndaki yazım için ise buraya tıklayabilirsiniz.
PostgreSql üzerinde Streaming Replication işlemi için buraya tıklayabilirsiniz.
Cihazlarımda gerekli olan Replication ve ayarlamaları yapılmıştır. pg_hba.conf dosyasındaki ayarlamalar iki cihaz için aynı şekilde ayarlandı.
İki sunucu arasında Replication yaptığımdan dolayı birbirlerine bağlanma sırasında sorun yaşamamaları adına PostgreSql tarafında nano /etc/postgresql/13/main/pg_hba.conf dosyasında ip adreslerini trust ve md5 olarak ekledim ve dosyayı kaydettim.
İlk olarak aşağıdaki kodlar yardımıyla Master ve Slave cihazlarımızda Replicationlarımızı kontrol ediyoruz. Master için ilk kodu, Slave için ikinci kodu kullanarak Replication kontrolü yapabilirsiniz.
> select * from pg_replication_slots;
> select * from pg_stat_wal_receiver;
Daha sonra \l komutu ile DB listemi çekiyorum.
Sonrasında \c ile DB’mize bağlanıyoruz ve sonrasında \dt+ komutu yardımıyla tabloların boyutunun eşit olduğunu görüp, Replication’ımızın düzgün çalıştığını görüyoruz.
Promote işlemi :
İlk olarak Master sunucunuzu kapatmalı ve daha sonrasında Slave sunucunuzda Postgresql’in Recovery Mode’a alındığını görmelisiniz. Gerekli sunucu kapama işlemini yapıyorum ve aşağıdaki kod ile kontrol sağlıyorum.
> Select pg_is_in_recovery();
Komutu sonucunda t ‘yi gördük. Bu Postgresql DB’mizin Recovery Mode’da olduğunu göstermektedir.
Daha sonra aşağıdaki komutu çalıştırarak Promote işlemi yapıyoruz ve Eski Slave cihazımızı Yeni Master olarak ayarlıyoruz.
> SELECT pg_promote();
Ve Sorasında tekrar Recovery komutunu çalıştırdığınızda f olarak geldiğini göreceksiniz. Bundan sonrasında yeni oluşturacağınız Slave’leri artık Yeni Master sunucunuz ile Replica edebilirsiniz.
Promote sonrasında Slave düzenlenmesini önerdiğim alanlar :
İlk olarak nano /etc/postgresql/13/main/postgresql.conf yolunu izlemeli ve Primary_conninfo ve Primary_slot_name alanlarını yorum satırına almalısınız.
nano /var/lib/postgresql/13/main/postgresql.auto.conf dosyasına girmeli ve Primary_conninfo yazan alanı yorum satırına almalısınız. Bu işlemlerin varlığı Slave sunucularda önemli olduğundan dolayı karışıklılığa sebep vermemek adına düzenlenmesi iyi olacaktır.
NOT : Yeni deneyimlerimle birlikte konudan bağımsız olarak şunu söylemek istiyorum. TB’larca datanızın olduğu bir ortamda yeni Slave cihazı eklemek istiyorsanız, nano /etc/postgresql/13/main/postgresql.conf dosyası altında bulunan wal_keep_size alanındaki parametreyi hesaplayarak büyük vermelisiniz ve Slave’i ayağa kaldırana kadar Wal dosyalarının tutulmasını sağlamalısınız. Aksi halde replication yaptığınızda Wal dosyalarının otomatik silinmesinden dolayı Slave cihaz kalkmıyor ve replication başlamıyor arkadaşlar. Bu bilgide burada kalsın. 🙂
Bu şekilde cihazınızı Promote yaparak yeni master olarak ayarlayabilirsiniz. Bu yazımda bu kadar arkadaşlar. Bana destek vermek isterseniz Youtube kanalıma abone olabilirsiniz. Ayrıca sorularınız ve görüşleriniz için Yorumlar alanınıda kullanabilirsiniz. Hepimize kolay gelsin.