pgBackrest

İbrahim Yıldız
3 min readSep 22, 2023

Herhangi bir işletme veya organizasyon, veri kaybını önlemek ve veritabanlarını güvence altına almak için güçlü bir yedekleme ve kurtarma çözümüne ihtiyaç duyar. PostgreSQL veritabanları için bu ihtiyacı karşılayan pgBackRest, güvenilir ve esnek bir yedekleme ve kurtarma aracı olarak öne çıkıyor. Bu yazıda, pgBackRest’in ne olduğunu, nasıl çalıştığını ve nasıl kullanılacağını ayrıntılı bir şekilde inceleyeceğiz.

Bölüm 1: pgBackRest Nedir?

pgBackRest, PostgreSQL veritabanlarının güvenilir yedeklemelerini oluşturmanıza, sıkıştırmanıza ve yönetmenize olanak tanıyan açık kaynaklı bir araçtır. Ayrıca, yedeklemeleri geri yüklemek ve veritabanını kurtarmak için gelişmiş işlevsellik sunar. pgBackRest, verilerin güvenliğini ve bütünlüğünü korumak için tasarlanmıştır ve yüksek erişilebilirlik gereksinimlerini karşılayabilir.

Bölüm 2: pgBackRest Nasıl Çalışır?

pgBackRest, PostgreSQL veritabanının fiziksel düzeyde yedeğini alır. Bu, verilerin doğrudan diske yazıldığı anlamına gelir ve veritabanının fiziksel düzeni korunur. pgBackRest, yedeklemeleri hızlı ve verimli bir şekilde oluştururken aynı zamanda veritabanının sürekli çalışmasına olanak tanır.

Bölüm 3 :pgBackRest Kurulumu

sudo yum install postgresql-libs libssh2

sudo scp build:/build/pgbackrest-release-2.47/src/pgbackrest /usr/bin
sudo chmod 755 /usr/bin/pgbackrest

sudo mkdir -p -m 770 /var/log/pgbackrest
sudo chown postgres:postgres /var/log/pgbackrest
sudo mkdir -p /etc/pgbackrest
sudo mkdir -p /etc/pgbackrest/conf.d
sudo touch /etc/pgbackrest/pgbackrest.conf
sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf


sudo -u postgres pgbackrest


sudo mkdir -p /var/lib/pgbackrest
sudo chmod 750 /var/lib/pgbackrest
sudo chown postgres:postgres /var/lib/pgbackrest

postgreSQL Ayarları

archive_command = 'pgbackrest --stanza=demo archive-push %p'
archive_mode = on
log_filename = 'postgresql.log'
max_wal_senders = 3
wal_level = replica
vi /etc/pgbackrest/pgbackrest.conf


[demo]
pg1-path=/var/lib/pgsql/11/data

[global]
repo1-path=/var/lib/pgbackrest

[global:archive-push]
compress-level=3

pgbackrest.conf Parametreleri

compress-level=3: Bu ayar, yedeklemelerin sıkıştırma seviyesini belirtir. Değer 1 ile 9 arasında bir tamsayı olmalıdır. Daha yüksek değerler daha fazla sıkıştırma sağlar, ancak işlem daha uzun sürebilir. 3, genellikle iyi bir dengeyi temsil eder.

repo1-cipher-pass: Bu ayar, yedeklemelerin şifrelenmesi için kullanılan parolayı belirtir. Yedeklemeleriniz şifrelenirse, yedeklerinizi sadece doğru parolayı bilenler açabilir. Bu parola güçlü ve güvenli olmalıdır.

repo1-cipher-type=aes-256-cbc: Bu ayar, kullanılacak şifreleme türünü belirtir. aes-256-cbc, Advanced Encryption Standard (AES) şifrelemesini kullanır ve 256-bit anahtar uzunluğuna sahiptir. Bu, güçlü bir şifreleme algoritmasıdır ve çoğu durumda güvenlidir.

repo1-path=/var/lib/pgbackrest: Bu ayar, yedeklemelerin nereye saklanacağını belirtir. Yedeklemeler, /var/lib/pgbackrest dizini altında depolanacaktır. Bu yol, yedeklemelerin depolanacağı dizini gösterir.

repo1-retention-full=2: Bu ayar, tam yedeklemelerin kaç adet saklanacağını belirtir. Örneğin, 2 değeri, sadece en son 2 tam yedeklemenin saklanacağı anlamına gelir. Eski yedeklemeler otomatik olarak silinir.

repo1-retention-diff=2: Bu ayar, fark yedeklemelerinin kaç adet saklanacağını belirtir. Fark yedeklemeleri, tam yedeklemeler arasındaki değişiklikleri yakalamak için kullanılır. 2 değeri, sadece en son 2 fark yedeklemenin saklanacağı anlamına gelir.

process-max=3: Bu ayar, eşzamanlı yedekleme işlemlerinin maksimum sayısını belirtir. Yedeklemeler eşzamanlı olarak oluşturulabilir, bu nedenle bu ayar, aynı anda kaç yedeklemenin çalıştırılabileceğini sınırlar. 3 değeri, aynı anda en fazla 3 yedekleme işleminin çalıştırılmasına izin verir.

pgBackRest için herbir postgresql cluster yedeğine stanza adı verilir
gelin bizde stanza oluşturalım

sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create

Kontrol

sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check

Backup , Diff Backup ve Backupları Görme

sudo -u postgres pgbackrest --stanza=demo \
--log-level-console=info backup

sudo -u postgres pgbackrest --stanza=demo --type=diff \
--log-level-console=info backup

sudo -u postgres pgbackrest info

Restore işlemleri için postgresql servisini durdurup yükledikten sonra başlatmalsınız

systemctl stop postgresql-12.service 

sudo -u postgres pgbackrest --stanza=demo restore --delta

sudo systemctl start postgresql-12.service

--

--

No responses yet