Yedek Tipleri

Logical backup, içeriği text editörle okunup değiştirilebilen text formatındaki
yedektir. Küçük yapılarda, hareketin az olduğu web sayfaları gibi, bir önceki güne geri
yüklemenin sorun olmadığı yapılar için logical backup yani pg_dump kullanılabilir.
Gene de yedekleme politikalarına kurum karar vermelidir.
Physical backup, içeriğinde binary verilerin de olduğu yedek tipidir.
Offline physical backup, Scriptle otomatik olarak yapılsa dahi veritabanının kapatılıp
yedek alınıp tekrar açılması çok sürdürülebilir bir yöntem değildir.
Zaten kapatılmaya tahammülü olmayan yapılarda kullanılamaz. Online yedek almak
veritabanları için olmazsa olmaz bir özelliktir. Online satış siteleri, sağlık sektörü, finans
kurumları gibi 7/24 hizmet veren kurumlarda online yedek zorunluluktur. Yıllarca
hiç kapatılmadan çalışan sistemlerdir. Bakım, güncelleme vb. zaruretlerden dolayı
kapatmak gerekse bile, planlayıp kesinti alınarak kapatılabilen yapılardır.
Not: apt/yum ile hazır paketlerden kurulum yapılmış sunucularda $PGDATA/var/lib/postgresql/$version yani örnekteki/var/lib/postgresql/14 dizinini adresliyor olurdu.
Physical Backup
Offline File System (user managed / Cold) Backup
postgres@srv1:~$ sudo systemctl stop postgresql@14-main.service postgres@srv1:~$ tar -cf pg_bck.tar /var/lib/postgresql/14/ #veya PGDATA değişkeni .profile da tanımle ise (echo $PGDATA) postgres@srv1:~$ tar -cf pg_bck.tar $PGDATA sudo systemctl start postgresql@14-main.service
İşletim sistemi komutları/scriptleri ile alınır.
Bu yedek türüne consistent backup , cold/offline backup da denilmektedir.
Dez avantajları;
Veritabanını kapatmak gerekir.
Yedek alınan zamana dönülebilir.
Not: Veritabanı açıkken storage (SAN) imaj snap-shot, veam imaj vb. yedekler
desteklenmez.
Continuous Archiving

$PGDATA/pg_wal dizininde oluşan wal dosyaları, farklı bir lokasyona işletim sistemi
komutları ile kopyalanarak arşivlenir. cp, rsync ve script ile kopyalanabilir. Network
üzerindeki farklı bir sunucuya ya da diske de (NFS) gönderilebilir.
Saniyedeki transaction sayısı, (TPS) IOPS kapasitesi ve network hızına göre aşağıdaki
parametrelere değerler atanır.
Veritabanını (instance) kapatmadan (online/hot) yedek alabilmek için arşiv modun
(archive_mode=on) aktif edilmesi gerekir.
Not: postgresql 9.6 ve öncesinde pg_xlog sonrasında pg_wal olarak değişti.
wal_level : WAL dosyalarının hangi kayıtları içereceğini tanımlar.
Default değer replica’dır. Bu değer WAL archiving, hot standby (readonly) için yeterlidir.
minimal’da crash ve immediate shutdown durumlarında gerekli olan bilgiler
haricindeki tüm logları siler. Baseback için uygun değildir. Veritabanının basebackup
restore ve recover işlemleri için gerekli bilgileri içermez. Base backup için replica ya da
logical olmalıdır.
Logical’da replica’ya ek olarak logical standby için gerekli olan decoding bilgilerini de
içerir.
wal_writer_delay : Hangi sıklıkla wal buffer’ın flush edilip içeriğinin diske
yazılacağını berlirler.
wal_keep_size : pg_wal dizininde en az bulundurulması gereken WAL
boyutunu belirler. Eğer standby sunucularınız herhangi bir nedenden dolayı geride
kalırsa pg_wal daki WAL’lar ile kendini günceller.
min_wal_size : WAL dosyalarının disk kullanımı buradaki boyuttan küçük kaldığı
sürece, check point işlemlerinde eski WAL dosyalarını silmek yerine, üzerine yazılarak
yeniden kullanılır. Böylece burada belirtilen disk alanı rezerve edilmiş olur. Default
değer 80 MB’dır.
max_wal_size : Otomatik checkpoint sürecinde büyümesine izin verilen boyuttur.
Soft limittir, ağır yük altında iken archive_command hata alıp arşivleme
yapamadığında veya wal_keep_size’a yüksek değer verildiğinde burada belirtilen
boyutu geçebilir.
