Yüksek Erişebilirlik Patroni & PGBackRest

Yüksek Erişebilirlik (High Availability) Kavramları

Donanım arızası, dosya bozulmaları vb. nedenlerden veritabanı erişilemez olduğundayedekten geri yüklemenin (restore/recover) zaman maliyeti yüksektir.Terabyte’larca verinin olduğu bir veritabanının geri yüklenmesi donanım performansına(disk/san IOPS, CPU, Network) bağlı olarak yarım gün veya daha fazla sürebilir.Kaybedilecek iş kaybı ve itibar da düşünüldüğünde bu riskleri eleminize etmekönceliklidir. Postgresql’in en yaygın kullanılan streaming replication, yukarıda bahsedilen riskler içiniyi bir Yüksek Erişebilirlik (High Availability) Kavramları

Streaming Replikasyon kurulumu

Bu kurulumda herhangi bir yazılım kullanılmamıştır. Postgresql’in gömülü gelenözellikleri aktif edilmiştir.db1 makinesi primary/master rolünde ve hem yazma hem de okuma işlemlerine açıkolacak.db2 sunucusu standby/slave rolünde ve sadece okumalara açık olacak. Primary sunucudaki adımlar (db1) Adım 1 Adım 2 Adım 3 Adım 4 Standby sunucudaki adımlar (db2) Adım 1 Not: Dedike standby olduğu için diğer cluster’lar Streaming Replikasyon kurulumu

Patroni

Postgresql replikasyon, failover ve switchover işlemlerini yönetmeye yarayan açıkkaynak ve ticari yazılımlar ve şablonlar (template) geliştirilmiştir. Bunlardan bellibaşlıları repmgr, EPRS, PAF ve Patroni’dir.Canlı ortamlarda en çok kullanılan açık kaynak çözümlerden biri olan patroni aslında birşablondur (template). Patroni, otomatik failover özelliğini gerçekleştirilebilen en stabilçözümlerden biridir diyebiliriz. Pgbackrest ile uyumlu olması diğer bir tercih nedenidir. Postgresql cluster Patroni

Patroni Cluster Kurulumu ve Yönetimi

Canlı ortamda lokalde en az 2 adet ve bir adet de FKM’de (Felaket Kurtarma Merkezi)standby veritabanı olmalıdır. Diğer standby’ların da kurulumları pgdb2 ile aynı adımlarıiçerir.Kurulumlara geçmeden önce işletim sistemi seviyesindeki ayarlar tüm sunucularda aynıolmalı. host dosyaları düzenlenir. ETCD Kurulumu etcd1, etcd2 ve etcd3 sunucularına daha önce kurulum yapıldı ise eski sürüm etcd’lersilinir. En son sürümü Patroni Cluster Kurulumu ve Yönetimi

Patroni Cluster Ayarları

Global Settings scope, namespace ve name parametreleri sunucunun hangi cluster’ın üyesi (node)olduğunu belirtir. Dynamic Configuration Setings (DCS)DCS’te yapılan ayarlar Distributed Configuration Store’da yani etcd’de tutulur.Ve tüm sunuculara asenkron olarak uygulanır.loop_wait, ttl, postgresql.parameters.max_connections,postgresql.parameters.max_worker_processes vb. parametrelersadece burada ayarlanabilir. Bu ayarları $PGDATA/patroni.dynamic.jsondosyasından görmek mümkündür.postgresql.listen, postgresql.data_dir gibi ayarlarda sadece lokaldepatroni konfigurasyon dosyasında veya konfigurasyon değişkenleri ile ayarlanabilir. Postgresql instance’ının Patroni Cluster Ayarları

Patroni Switchover/Failover & Monitoring

Switchover:Manuel olarak geçiş yapmak(switchover) için aşağıdaki komut kullanılır. patronictl -c /etc/patroni/config.yml switchover Not: Pgbackrest, yeni primary sunucuyu otomatik olarak tanımlayacak ve buna göreyedekleme yapacaktır. Failover:Patroni, leader yani primary statüsündeki veritabanına ulaşılamadığında, otomatikolarak, öncelik sırası yüksek olan standby sunucuyu primary yapar. Eski primary tekrarulaşılabilir olduğunda otomatik olarak standby rolünü alır. Monitoring primary \x select * from Patroni Switchover/Failover & Monitoring

Patroni ile Pgbackrest Entegrasyonu

Patroni ve pgbackrest’in beraber çalışabilmesi için öncelikli olarak pgbr’a pgbackrestkurulmuş olmalı ve backup server olarak ayarlanmalı.Tüm veritabanı sunucularına da pgbackrest kurulmalı ve pgbr aralarında postgreskullanıcısı ile şifresiz erişim sağlanmış olmalı. pgbackrest kurulum adımları için 11. bölümü inceleyebilirsiniz.pgbr backup server’a pgbackrest ile primary sunucudan yani pgdb1’de yedek alınır.Rol değişimi olursa (Failover/switchover) yani standby primary , primary Patroni ile Pgbackrest Entegrasyonu