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