metrics.gokgoz.net

yüksek çözünürlüklü postgresql logosu

Pgbackrest ile PostgreSQL’de full ve incremental yedek nasıl alınır?

PostgreSQL veritabanlarında veri güvenliği ve sürekliliği kritik bir öneme sahiptir. Bu noktada pgBackRest, açık kaynaklı bir yedekleme ve kurtarma çözümü olarak öne çıkmaktadır. Geleneksel yedekleme araçlarının aksine, pgBackRest performans, güvenilirlik ve esneklik konularında PostgreSQL yöneticilerine benzersiz avantajlar sağlar.

pgBackRest, veritabanı yedeklemelerinde tam (full) ve artımlı (incremental) yedekleme seçenekleri sunarak veri yönetimini kolaylaştırır. Tam yedekleme tüm veritabanı içeriğini kapsarken, artımlı yedekleme yalnızca son yedeklemeden bu yana değişen verileri kaydeder. Bu yaklaşım, hem depolama alanından tasarruf sağlar hem de yedekleme süresini önemli ölçüde kısaltır.

pgBackRest’in kullanımı basit yapılandırma dosyaları ve net komutlarla oldukça pratiktir.

Ubuntu/debian sistemlere aşağıdaki gibi dahil edilebilir.

apt install pgbackrest
Bash

Ardından aşağıdaki /etc/pgbackrest.conf dosyasında gerekli yapılandırmalar yapılır.

[global]
process-max=2
start-fast=y
stop-auto=y
log-path=/mnt/pgbackrest/log
log-level-file=warn
log-level-console=detail
backup-standby=n
resume=n
exclude=log/
archive-async=y
archive-timeout=360

repo1-type=s3
repo1-s3-bucket=<BUCKET_ADI>
repo1-path=<KLASÖR>
repo1-s3-endpoint=s3.amazonaws.com
repo1-s3-region=eu-west-1
repo1-s3-key=<ANAHTAR>
repo1-s3-key-secret=<GİZLİ_ANAHTAR>
repo1-retention-full=2
repo1-retention-diff=1

repo2-path=/backup/pgbackrest/repo
repo2-retention-full=2
repo2-retention-diff=1

repo1-cipher-type=aes-256-cbc
repo1-cipher-pass=<ŞİFRE>
repo2-cipher-type=aes-256-cbc
repo2-cipher-pass=<ŞİFRE>

[pg16_pg]
pg1-path=/mnt/data/16/main
pg1-port=5432
Plaintext

Yapılandırmayı kayıt ettikten hemen sonra tabii ki bu yapılandırmayı PostgreSQL için geçerli kılmalıyız ki WAL kayıtlarınıda alalım,

-- Arşivleme modunu etkinleştirin
ALTER SYSTEM SET archive_mode = on;
ALTER SYSTEM SET archive_command = 'pgbackrest --stanza=pg16_pg archive-push %p';

-- Yapılandırmayı yeniden yükleyin
SELECT pg_reload_conf();
SQL

Ardından WAL arşivlerini almaya pg başlayacak bu noktada hızlı olmak lazım çünkü çok WAL birikmemesi gerekiyor.

pgbackrest --stanza=pg16_pg stanza-create && pgbackrest --stanza=pg16_pg check  --log-level-console=info
Bash

İlk sefer full yedek alalım

pgbackrest --stanza=pg16_pg --log-level-console=info --type=full backup
Bash

Artımlı yedek almak için

pgbackrest --stanza=pg16_pg --log-level-console=info --type=incr backup
Bash