Blogchevron_rightSunucu Yönetimichevron_rightDocker Compose ile Gelişmiş Veritabanı Yedekleme Senaryoları

Docker Compose ile Gelişmiş Veritabanı Yedekleme Senaryoları

S
Serversium
calendar_today25 Mayıs 2026
schedule5 dk okuma
Docker Compose ile Gelişmiş Veritabanı Yedekleme Senaryoları

Docker Compose ile Gelişmiş Veritabanı Yedekleme Senaryoları

Modern uygulama geliştirmede container teknolojileri standart hale gelmiştir. Docker Compose ile veritabanı yedekleme stratejileri, iş sürekliliği ve veri güvenliği açısından kritik öneme sahiptir. Araştırmalara göre, işletmelerin %60'ı düzenli veritabanı yedeklemesi yapmadıkları için ciddi veri kayıpları yaşamaktadır (Veritas Technologies, 2024). Bu kapsamlı rehberde, Docker Compose ortamlarında gelişmiş veritabanı yedekleme senaryolarını inceleyeceğiz.

Docker Compose Yedekleme Mimarisi Temelleri

Docker Compose ile veritabanı yedekleme, konteynerler arası iletişim ve volume bağlantıları kullanılarak gerçekleştirilir. Temel mimaride üç bileşen bulunur: veritabanı servisi, yedekleme servisi ve depolama alanı. Docker Swarm ve yük dengeleme konseptleriyle birlikte değerlendirildiğinde, yedekleme stratejileri daha da güçlenmektedir.

Temel Yedekleme Yapısı

Docker Compose dosyasında yedekleme için gerekli volume tanımlamaları şu şekilde yapılır:

volumes:
  db_data:
  backup_storage:
services:
  postgres:
    image: postgres:15
    volumes:
      - db_data:/var/lib/postgresql/data
  backup:
    image: postgres:15
    volumes:
      - backup_storage:/backups

PostgreSQL Yedekleme Senaryoları

PostgreSQL, açık kaynak veritabanları arasında en popüler seçeneklerden biridir. Docker ortamında PostgreSQL yedeklemesi için pg_dump aracı kullanılır.

Temel PostgreSQL Yedekleme Komutu

Aşağıdaki docker-compose.yaml yapılandırması ile PostgreSQL yedekleme servisi oluşturulabilir:

services:
  postgres:
    image: postgres:15-alpine
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - pgdata:/var/lib/postgresql/data

  backup:
    image: postgres:15-alpine
    volumes:
      - ./backups:/backups
    command: >
      sh -c "pg_dump -h postgres -U postgres -F c -b -v -f /backups/backup_$$(date +%Y%m%d_%H%M%S).dump"

Otomatik Yedekleme Zamanlaması

Düzenli yedekleme için cron entegrasyonu gereklidir. Aşağıdaki yapılandırma günlük yedekleme planlaması yapar:

services:
  scheduler:
    image: postgres:15-alpine
    volumes:
      - ./backups:/backups
    command: >
      sh -c 'while true; do
        pg_dump -h postgres -U postgres -F c -b -v -f /backups/backup_$(date +%Y%m%d_%H%M%S).dump;
        sleep 86400;
      done'

MySQL/MariaDB Yedekleme Senaryoları

MySQL ve MariaDB için mysqldump aracı standart yedekleme çözümüdür. Docker ile MariaDB veritabanı kurtarma rehberimizde detaylı kurtarma prosedürlerini inceleyebilirsiniz.

MySQL Yapılandırması

services:
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${DB_NAME}
    volumes:
      - mysql_data:/var/lib/mysql

  backup:
    image: mysql:8.0
    volumes:
      - ./backups:/backups
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    command: >
      sh -c "mysqldump -h mysql -u root -p$$MYSQL_ROOT_PASSWORD --single-transaction
      --routines --triggers ${DB_NAME} | gzip > /backups/backup_$$(date +%Y%m%d_%H%M%S).sql.gz"

Yedekleme Sıkıştırma Seçenekleri

Büyük veritabanları için sıkıştırma kritik önem taşır. Aşağıdaki tabloda sıkıştırma yöntemleri karşılaştırılmıştır:

Yöntem Ortalama Sıkıştırma CPU Kullanımı Önerilen Kullanım
gzip %70-80 Düşük Günlük yedeklemeler
bzip2 %75-85 Orta Haftalık yedeklemeler
xz %80-90 Yüksek Arşiv yedeklemeler
pigz (paralel) %70-80 Yüksek Büyük veritabanları

MongoDB Yedekleme Senaryoları

MongoDB, NoSQL veritabanı olarak doküman tabanlı yapısı ile farklı yedekleme stratejileri gerektirir. mongodump aracı kullanılarak tutarlı yedeklemeler oluşturulabilir.

MongoDB Yedekleme Yapılandırması

services:
  mongodb:
    image: mongo:7.0
    volumes:
      - mongo_data:/data/db

  backup:
    image: mongo:7.0
    volumes:
      - ./backups:/backups
    environment:
      MONGO_INITDB_ROOT_USERNAME: ${MONGO_USER}
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASS}
    command: >
      sh -c "mongodump --host=mongodb -u $$MONGO_INITDB_ROOT_USERNAME
      -p$$MONGO_INITDB_ROOT_PASSWORD --authenticationDatabase admin
      --archive=/backups/mongo_$$(date +%Y%m%d_%H%M%S).archive --gzip"

MongoDB Sharded Cluster Yedeklemesi

Dağıtık MongoDB yapılarında yedekleme daha karmaşıktır. Shard'ların her biri için ayrı yedekleme prosesi çalıştırılmalıdır:

services:
  backup_shard1:
    image: mongo:7.0
    command: >
      sh -c "mongodump --host=mongos --db=config
      --out=/backups/shard1_$$(date +%Y%m%d)"

Uzaktan Depolama Entegrasyonu

Yerel yedeklemeler tek başına yeterli değildir. Bulut depolama entegrasyonu ile felaket kurtarma kapasitesi artırılmalıdır. Sunucu yönetimi konseptleriyle birlikte değerlendirildiğinde, yedekleme stratejileri daha kapsamlı hale gelmektedir.

AWS S3 Entegrasyonu

services:
  backup-s3:
    image: amazon/aws-cli:2.15
    environment:
      AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
      AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
      AWS_DEFAULT_REGION: ${AWS_REGION}
    volumes:
      - ./backups:/backups
    command: >
      sh -c "aws s3 sync /backups s3://${S3_BUCKET}/database-backups/ --storage-class STANDARD_IA"

MinIO (S3 Uyumlu) Kurulumu

MinIO, kendi S3 uyumlu depolama altyapınızı oluşturmanızı sağlar:

services:
  minio:
    image: minio/minio
    command: server /data --console-address ":9001"
    environment:
      MINIO_ROOT_USER: ${MINIO_USER}
      MINIO_ROOT_PASSWORD: ${MINIO_PASS}
    volumes:
      - minio_data:/data

  backup-minio:
    image: amazon/aws-cli:2.15
    command: >
      sh -c "aws s3 cp /backups/ s3://${MINIO_BUCKET}/ --recursive
      --endpoint-url http://minio:9000"

Yedekleme Otomasyonu ve Zamanlama

Düzenli yedeklemeler için zamanlama mekanizmaları kritik öneme sahiptir. Docker Compose içinde çeşitli otomasyon yöntemleri kullanılabilir.

Cron Tabanlı Yedekleme

services:
  backup-cron:
    image: postgres:15-alpine
    volumes:
      - ./backups:/backups
    command: >
      sh -c 'echo "0 2 * * * pg_dump -h postgres -U postgres -Fc -f /backups/daily_$$(date +\%Y\%m\%d).dump" > /etc/crontabs/root && crond -f -l 2'

Yedekleme Sıklığı Önerileri

Veritabanı Türü Günlük Haftalık Aylık
Küçük (<1GB) Evet Full Arşiv
Orta (1-50GB) Incremental Full Arşiv
Büyük (>50GB) Incremental Differential Full

Felaket Kurtarma Senaryoları

Yedeklemenin gerçek değeri, kriz anında ne kadar hızlı geri yükleme yapılabileceğinde ortaya çıkar. Siber güvenlik ve veri koruma stratejileri kapsamında felaket kurtarma planları oluşturulmalıdır.

PostgreSQL Geri Yükleme

services:
  restore:
    image: postgres:15-alpine
    volumes:
      - ./backups:/backups
      - pgdata:/var/lib/postgresql/data
    command: >
      sh -c "pg_restore -h postgres -U postgres -d ${DB_NAME}
      -c /backups/backup_20240115_120000.dump"

MySQL Geri Yükleme

services:
  restore:
    image: mysql:8.0
    volumes:
      - ./backups:/backups
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    command: >
      sh -c "mysql -h mysql -u root -p$$MYSQL_ROOT_PASSWORD ${DB_NAME}
      < /backups/backup_20240115_120000.sql"

Güvenlik Best Practices

Yedekleme dosyaları, orijinal veritabanı kadar koruma gerektirir. Şifreleme ve erişim kontrolü kritik öneme sahiptir.

Yedekleme Şifreleme

GPG ile yedekleme şifreleme uygulanması önerilir:

services:
  backup-encrypted:
    image: postgres:15-alpine
    volumes:
      - ./backups:/backups
    command: >
      sh -c "pg_dump -h postgres -U postgres -Fc | gpg --symmetric
      --cipher-algo AES256 --output /backups/backup_$$(date +%Y%m%d_%H%M%S).gpg"

Erişim Kontrolü Listesi

  1. Yedekleme dizinleri için Unix izinleri 600 olarak ayarlanmalıdır
  2. S3 bucket'ları için bucket policy uygulanmalıdır
  3. Şifreleme anahtarları ayrı bir secret management sisteminde tutulmalıdır
  4. Yedekleme logları düzenli olarak incelenmelidir

Monitoring ve Alerting

Yedekleme süreçlerinin izlenmesi, hata anında müdahale kapasitesini artırır. Uptime monitoring araçları ile entegre edilebilir.

Health Check Uygulaması

services:
  postgres:
    image: postgres:15
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 10s
      timeout: 5s
      retries: 5

  backup:
    image: postgres:15
    depends_on:
      postgres:
        condition: service_healthy

Performans Optimizasyonu

Büyük veritabanlarında yedekleme performansı kritik önem taşır. Aşağıdaki tekniklerle süreç optimize edilebilir:

Paralel Yedekleme

PostgreSQL'de -j parametresi ile paralel yedekleme:

pg_dump -h postgres -U postgres -Fd -j 4 -f /backups/parallel_dump

Compression Seviyesi

library_booksBenzer İçerikler

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber
Sunucu Yönetimi
calendar_today5 Nisan 2026
schedule5 dk

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber

Cloud sunucular, dinamik kaynak dağıtımıyla işletmelerin kesintisiz büyümesini sağlar. Avantajlardan karşılaştırmalara tüm detaylar bu rehberde yer alıyor.

S
Serversiumarrow_forward
Linux vs Windows Sunucu: Hangisi Projeye Uygun?
Sunucu Yönetimi
calendar_today6 Nisan 2026
schedule5 dk

Linux vs Windows Sunucu: Hangisi Projeye Uygun?

Linux ve Windows Sunucu arasındaki teknik farkları, maliyet avantajlarını ve proje uyumluluğunu detaylı olarak karşılaştırıyoruz. Yazılım stack'inize en uygun işletim sistemini seçmek için kapsamlı rehberimizle doğru altyapı kararını verin.

S
Serversiumarrow_forward
Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber
Sunucu Yönetimi
calendar_today16 Nisan 2026
schedule5 dk

Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber

Ubuntu 24 üzerinde Plesk kurulumunu adım adım öğrenin. Bu rehberde sistem gereksinimleri, kurulum adımları ve temel yapılandırma ayarlarını bulabilirsiniz.

S
Serversiumarrow_forward
Level Hız Boyut
1 En hızlı En büyük