Bu yazımda,Centos 7 üzerine Postgresql 12 streaming replikasyon kurulumunu anlataya çalışacağım. Bu kısma devam etmeden önce eğer okumadıysanız repliksayon ile ilgili yazdığım yazıyı okumanızı tavsiye ederim.

Hostname IP Açıklama
primary 192.168.10.105 Primary Cluster
standby 192.168.10.106 Standby Cluster

Primary Sunucu İşlemleri

Öncelikle primary sunucu üzerine clustarımızı kuralım.

yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

yum install -y postgresql12 postgresql12-server postgresql12-contrib

/usr/pgsql-12/bin/postgresql-12-setup initdb
systemctl enable postgresql-12
systemctl start postgresql-12 

Standby üzerinden primary sunucuya bağlanmak için  REPLICATION rolüne sahip kullanıcı oluşturulur.

CREATE ROLE replicationuser WITH LOGIN PASSWORD '112233ee' REPLICATION;

--\du komutu  ile kullanıcıları görebiliriz 

Oluşturduğumuz replica_user kullanıcısının erişimi için pg_hba.conf dosyasını düzenlememiz gerekiyor. pg_hba.conf dosyasında yapılan bir değişikliğin etkin olabilmesi için Postgres sunucusu reload işlemine ihtiyaç duyar.

echo "host    replication     replicationuser 192.168.10.106/32   md5">>/var/lib/pgsql/12/data/pg_hba.conf

--Aşağıdaki komutlardan birini kullanarak reload işlemini yaparız;
SELECT pg_reload_conf();
pg_ctl reload
systemctl reload postgresql-12 

PostgreSQL varsayılan olarak localhost adresini dinler. Dışardan gelen talepleri dinleyecek IP adresini yazabileceğimiz gibi * işaretini koyarak sunucudaki tüm ip adreslerini dinlemesinide sağlayabiliriz. Ayrıca değiştirmek istersek varsayılan olarak gelen 5432 portunu düzenlemeliyiz, ben portu değiştirmeden devam ediyorum.

listen_addresses = '*'
port = 5432 

postgresql.conf dosyasında yer alan wal_level, max_wal_senders, max_replication_slots parametrelerinin değerleri postgresql-10 sürümünden itibaren varsayılan olarak replikasyon işlemi için ayarlanmış olarak gelir;

  • wal_level : wal_level parametresi ile WAL’a ne kadar bilgi yazılacağını belirler. Varsayılan değer, yedek bir sunucuda salt okunur sorguların çalıştırılması dahil, WAL arşivlemeyi ve çoğaltmayı desteklemek için yeterli veriyi yazan replica’dır. minimal, bir çökme veya anında kapanma durumundan kurtarmak için gereken bilgiler dışındaki tüm log kaydını kaldırır. logical, logical decoding için gerekli bilgileri ekler.
  • max_wal_senders :  Eş zamanlı olan replikasyon bağlantısı sayısını belirtir. Bu sayı en az slave sunucu sayısı +1 olmalıdır. Varsayılan 10’dur. 0 değeri, replikasyonun devre dışı bırakıldığı anlamına gelir. Standby sunucu çalıştırırken, bu parametreyi primary sunucudakiyle aynı veya daha yüksek bir değere ayarlamalısınız. Aksi takdirde, standby sunucusunda sorgulara izin verilmeyecektir.
  • max_replication_slots : Sunucunun destekleyebileceği maksimum replikasyon slot sayısını Varsayılan 10’dur. Mevcut slot sayısından daha düşük bir değere ayarlamak, sunucunun başlamasını engeller.

Bu parametrelerin dışında primary sunucuda replikasyon ile ilgili aşağıdaki paramtreleride düzenleyebiliriz, özellikle varsayılan olarak gelen asenkron replikasyonu değiştimek istersek synchronous_standby_names parametresini düzenlemeliyiz; (continue reading…)

Loading