PostgreSQL Otomatik Yedekleme

PostgreSQL veritabanlarını otomatik yedekler, sıkıştırır ve eski yedekleri temizler.

Yayınlanma: 30.03.2024

Detaylı Bilgi

Bu script, PostgreSQL veritabanlarınızı otomatik olarak yedekler, sıkıştırır ve eski yedekleri temizler. MySQL yedekleme scriptine benzer şekilde çalışır ancak PostgreSQL için optimize edilmiştir.

Script Ne İşe Yarar?

Bu script, PostgreSQL veritabanlarını yedekler:

  • Tüm kullanıcı veritabanlarını yedekler
  • Sistem veritabanlarını hariç tutar
  • Yedekleri gzip ile sıkıştırır
  • Eski yedekleri otomatik temizler

Neden Kullanmalısınız?

PostgreSQL yedekleme, veri kaybına karşı koruma sağlar:

  • Otomasyon: Cron job ile tam otomasyon
  • Disk Tasarrufu: Sıkıştırma ile alan tasarrufu
  • Disaster Recovery: Hızlı geri yükleme

Nasıl Kullanılır?

Adım Adım Kullanım Kılavuzu

1. Yapılandırma

Script başındaki değişkenleri düzenleyin:

BACKUP_DIR="/backup/postgresql"
RETENTION_DAYS=7

2. Scripti Çalıştırın

sudo chmod +x pg_backup.sh
sudo ./pg_backup.sh

3. Otomatikleştirme

# Crontab ile günlük yedekleme
0 2 * * * /path/to/pg_backup.sh

Gereksinimler

Gereksinimler

  • PostgreSQL: PostgreSQL kurulu olmalı
  • pg_dump: PostgreSQL yedekleme aracı
  • Postgres Kullanıcı Erişimi: Veritabanlarına erişim

Kullanım Senaryoları

Kullanım Senaryoları

1. Günlük Otomatik Yedekleme

PostgreSQL veritabanlarınızı her gün otomatik yedekleyin.

2. Disaster Recovery

Sunucu çökmesi durumunda hızlıca geri yükleme yapın.

Örnekler

Kullanım Örnekleri

Örnek 1: Temel Kullanım

sudo ./pg_backup.sh

Kod

#!/bin/bash

# PostgreSQL Backup Script

BACKUP_DIR="/backup/postgresql"
PG_USER="postgres"
RETENTION_DAYS=7
DATE=$(date +%Y%m%d_%H%M%S)

mkdir -p "$BACKUP_DIR"

echo "Starting PostgreSQL backup..."

ALL_DBS=$(sudo -u postgres psql -t -c "SELECT datname FROM pg_database WHERE datistemplate = false")
DATABASES=$(echo "$ALL_DBS" | grep -v -E "^(postgres|template0|template1)$")

for DB in $DATABASES; do
    echo "Backing up: $DB"
    BACKUP_FILE="$BACKUP_DIR/${DB}_${DATE}.sql"
    
    sudo -u postgres pg_dump "$DB" > "$BACKUP_FILE"
    gzip "$BACKUP_FILE"
    
    echo "✓ Backup completed: ${BACKUP_FILE}.gz"
done

find "$BACKUP_DIR" -name "*.sql.gz" -mtime +$RETENTION_DAYS -delete

echo "Backup process completed!"

Kullanım

sudo chmod +x pg_backup.sh
sudo ./pg_backup.sh

# Crontab ile otomatikleştir
sudo crontab -e
# Ekle: 0 2 * * * /path/to/pg_backup.sh

Sorun Giderme

Sorun Giderme

Problem: "pg_dump: command not found"

Çözüm: PostgreSQL client kurun:

sudo apt-get install postgresql-client

Etiketler

postgresql backup pg_dump database