1) Kısa özet — hangi durumlarda hangi yöntem
-
Küçük/orta boyutlu veritabanları:
mysqldump+ gzip — en yaygın, taşınması kolay. -
Büyük veritabanları / yüksek performans ihtiyacı: Percona XtraBackup veya LVM snapshot — online (hot) yedekleme, hızlı kurtarma.
-
Hızlı tek komut ile uzak sunucudan yedek indirme: SSH ile
mysqldump | gzippipe yöntemi. -
Güvenlik: Parolayı terminalde doğrudan yazma yerine
~/.my.cnfkullan veya SSH anahtar ile eriş. -
Tutarlılık (InnoDB):
--single-transaction --quick --skip-lock-tableskullan. (MyISAM için--lock-tablesgerekebilir.)
2) Temel: tek komutla uzak sunucudan yedek alma (en sık kullanılan)
Sunucuda root/ssh erişimin varsa ve mysqldump kurulu ise local bilgisayarına yedek almak için:
Açıklamalar:
-
ssh kullanıcı@uzak-sunucu-ip "..."— uzak komutu çalıştırır. -
mysqldump -u dbuser -p'dbpassword'— dikkat: parola komutta görünür (güvenlik riski). Mümkünse.my.cnfkullan. -
--single-transaction --quick— InnoDB için tutarlı, bellek kullanımını düşürür. -
--routines --events --triggers— prosedür, olay ve trigger yakalamak için. -
gzip -c→ sıkıştırıp STDOUT’a yazıyor,>ile local dosyaya kaydediyoruz.
Daha güvenli parola yöntemi (önerilen):
-
Uzak sunucuda
/root/.my.cnfveya/home/backupuser/.my.cnfiçine:
ve dosya izinleri chmod 600 ~/.my.cnf olmalı. Böylece mysqldump -p sormazken parola görünmez.
Komut örneği (.my.cnf kullanılarak):
3) Alternatif: yerel bilgisayardan SSH tüneli açıp mysqldump çalıştırma
Eğer MySQL portu (3306) sadece localhost’ta açıksa ve SSH ile tünel açmak istersen:
-
-L 33306:127.0.0.1:3306→ local 33306 portunu uzakın 3306 portuna bağlarsın. -
Tünel kullanışlıysa otomasyonun parolasız bağlantı (my.cnf) ile yapılmalı.
4) Restore (geri yükleme) nasıl yapılır?
Sıkıştırılmış yedeği geri yüklemek:
Eğer dosya büyükse pv ile izleyebilirsin:
5) mysqldump seçenekleri — hangi durumda ne kullanmalı
-
--single-transaction: InnoDB için online ve tutarlı snapshot sağlar (tablo kilidi yok). Mutlaka kullan. -
--quick: Dump sırasında satır satır okur, belleği korur. -
--skip-lock-tables: Tabloları kilitlemeyi atlar (InnoDB ile uyumlu). -
--lock-tables: MyISAM vb için tablo kilidi gerekir. -
--routines --events --triggers --gtids: Stored procedure, event ve trigger’ları da yedekler. -
--databases db1 db2veya--all-databases: birden fazla DB ya da tümünü dump eder. -
--single-transaction --master-data=2: replika kurulumları için binlog pozisyonunu kaydetmek istiyorsan kullan.
6) Büyük veritabanları — performans & alternatif çözümler
-
Percona XtraBackup: fiziksel (binary) hot-backup alır, InnoDB tabloları için ideal, point-in-time recovery ile güçlü.
-
LVM snapshot: disk seviyesinde snapshot alıp ardından dosyaları kopyalamak.
-
mydumper / myloader: paralel dump/restore yaparak hız kazandırır.
Eğer DB boyutu GB’larca ise mysqldump yedekleme ve geri yükleme çok uzun sürebilir. O zaman XtraBackup tercih et.
7) Otomasyon: basit yedekleme script + cron + retention
backup_mysql.sh örneği (uzak sunucudan çekme):
Cron Satırı (günlük 03:15):
8) Güvenlik tavsiyeleri
-
Parolayı komutta yazma. Kullan
.my.cnfdosyası vechmod 600. -
SSH anahtar ile parola olmadan ama güvenli bağlantı kur (public key auth).
-
Yedeklere erişimi kısıtla (sadece backup kullanıcıları).
-
Yedekleri şifrele:
openssl enc -aes-256-cbc -salt -pbkdf2 -pass file:/root/.backup_passveyagpg --symmetric. -
Yedekleri farklı lokasyona (offsite) kopyala (rsync SFTP/Scp/ rclone ile S3).
-
Yedekleme scriptlerini logla ve başarı/başarısızlığı monitör et.
Örnek şifreleme komutu:
9) Yedek bütünlüğünü kontrol etme
-
gunzip -t file.sql.gz: gzip içeriğini test eder. -
Gerekirse yedeği geçici bir veritabanına geri yükleyerek doğrula:
10) Örnekler — pratik senaryolar
A) Tek veritabanını uzak sunucuda alıp local’e kaydet (parolasız MySQL config)
B) Tüm veritabanlarını çek (all-databases)
C) Remote mysqldump çalıştırıp remote sunucuda sıkıştırılmış dosya bırak (sonra scp ile çek)
Uzakta depolama alanı yeterliyse:
11) MySQL Veritabanı Yedeği Alma Özet öneriler (quick checklist)
-
Küçük veritabanları →
mysqldump --single-transaction --quick+ gzip. -
Büyük ve aktif veritabanları → XtraBackup veya LVM snapshot.
-
Parolaları terminalde yazma;
.my.cnfveya başka güvenli metod kullan. -
Cron ile otomasyon + retention (ör: 7 gün).
-
Yedekleri test et (gunzip -t veya test restore).
-
Offsite kopya + şifreleme (opsiyonel ama önerilir).