Yazılım Geliştirme

MySQL Veritabanı Nasıl Yedeklenir ve Geri Yüklenir?

16 görüntülenme 29.04.2026

MySQL Yedeklemenin Önemi

Veritabanı, web uygulamalarının en değerli bileşenidir; kullanıcı verileri, içerikler ve iş mantığını barındırır. Dosya sisteminin aksine veritabanları anlık tutarlı yedek almayı daha karmaşık hale getirir; çünkü yedekleme sırasında aktif yazma işlemleri devam ediyor olabilir. Hatalı SQL sorgusu, yetkisiz erişim, donanım arızası veya yazılım hatası gibi senaryolarda güvenilir bir veritabanı yedeğinin varlığı, iş sürekliliğinizi koruyan tek güvencedir.

MySQL veritabanı yedekleme için en yaygın araç mysqldump'tır. Mantıksal yedek (SQL dump dosyası) oluşturan bu araç, farklı MySQL sürümleri arasında taşınabilir ve okunabilir bir format üretir. Büyük veritabanları için binary yedek araçları (Percona XtraBackup gibi) daha hızlı seçenek sunar; ancak mysqldump çoğu senaryo için yeterlidir.

mysqldump ile Yedek Alma

# Tek veritabanını yedekle:
mysqldump -u root -p veritabani_adi > yedek.sql

# Şifreyi komut satırında belirtmek için (güvenlik riski):
mysqldump -u root -pSIFRE veritabani_adi > yedek.sql

# Yedegi sıkıştırarak kaydet (büyük veritabanları için):
mysqldump -u root -p veritabani_adi | gzip > yedek-$(date +%Y%m%d).sql.gz

# Tüm veritabanlarını yedekle:
mysqldump -u root -p --all-databases > tum-veritabanlari.sql

# Yalnızca belirli tabloları yedekle:
mysqldump -u root -p veritabani_adi tablo1 tablo2 > tablolar.sql

# Yalnızca yapıyı yedekle (veri olmadan):
mysqldump -u root -p --no-data veritabani_adi > yapi.sql

# Yalnızca veriyi yedekle (yapı olmadan):
mysqldump -u root -p --no-create-info veritabani_adi > veri.sql

Otomatik Yedekleme Scripti

Veritabanı yedeğini cron ile otomatikleştirmek, insan hatasını ortadan kaldırır ve yedeklerin düzenli alınmasını güvence altına alır.

#!/bin/bash
# /root/scripts/mysql_yedek.sh

DB_USER="root"
DB_PASS="sifreniz"
HEDEF="/backup/mysql"
TARIH=$(date +%d-%m-%Y-%H%M)
SAKLA=7

mkdir -p $HEDEF

# Tüm veritabanlarını listele ve yedekle:
mysql -u$DB_USER -p$DB_PASS -e "SHOW DATABASES;" | \
  grep -v "Database\|information_schema\|performance_schema\|sys" | \
  while read db; do
    mysqldump -u$DB_USER -p$DB_PASS --single-transaction "$db" | \
      gzip > "$HEDEF/$db-$TARIH.sql.gz"
    echo "✅ $db yedeklendi"
  done

# Eski yedekleri temizle:
find $HEDEF -name "*.sql.gz" -mtime +$SAKLA -delete

# Crontab:
# 0 3 * * * /bin/bash /root/scripts/mysql_yedek.sh >> /var/log/mysql-yedek.log 2>&1

Yedekten Geri Yükleme

# SQL dosyasından geri yükleme:
mysql -u root -p veritabani_adi < yedek.sql

# Sıkıştırılmış yedekten geri yükleme:
gunzip -c yedek.sql.gz | mysql -u root -p veritabani_adi

# Önce veritabanını oluşturmanız gerekebilir:
mysql -u root -p -e "CREATE DATABASE yeni_veritabani CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p yeni_veritabani < yedek.sql

# Geri yükleme sırasında ilerlemeyi takip etmek için:
pv yedek.sql | mysql -u root -p veritabani_adi

cPanel üzerinden Veritabanı Yedekleme

SSH erişimi olmayan kullanıcılar için cPanel'in phpMyAdmin arayüzü ve Yedekleme aracı kullanılabilir. cPanel'de Yedekleme bölümüne gidin, Kısmi Yedek oluştur seçeneğini seçin ve MySQL Veritabanları başlığı altında ilgili veritabanını indirin. İndirilen .sql.gz dosyasını yerel bilgisayarınıza saklayın.

Büyük veritabanlarının düzenli yedeklenmesi ve güvenli depolanması için HostingKontrol'ün otomatik yedekleme servislerini inceleyebilirsiniz. Veritabanı yedekleme stratejisi, geri yükleme testleri veya veritabanı performans optimizasyonu konularında teknik destek ekibimizden yardım alabilirsiniz.

Bu makale işinize yaradı mı?

Paylaş: Twitter LinkedIn