Themenersteller
#1
mysqldump ile mantıksal yedekleme
Mantıksal yedekleme, veritabanındaki yapı ve veriyi SQL komutları olarak dışa aktarmayı ifade eder. Mysqldump bu işlemi en sık kullanılan araçtır ve özellikle küçükten orta ölçekli veritabanlarında hızlı, güvenilir çözümler sunar. Bu yazıda adım adım temel kullanımı, sık karşılaşılan sorunlar ve performans/kayıt sandağına ilişkin önerileri derledim.
İlk adımlar ve temel kullanımlar
[mq] mysqldump --host host_adı --user kullanıcı --password=parola veritabani_adı > yedek.sql
Bu komut, belirtilen veritabanını tek bir SQL dosyasına dönüştürür. Veritabanı yapısı (tablolar, anahtarlar) ve verisi birlikte çıkarılır. Tablo bazlı seçeneklerle karşı koyamıyorsanız, --single-transaction (InnoDB için) ile kilitlenmeyi minimize edebilirsiniz. Ayrıca tüm veritabanını yedeklemek için --all-databases; tüm kullanıcılar ve fonksiyonlar dahil edilince --routines ve --triggers seçeneklerini kullanabilirsiniz.
Güncel ve tutarlı yedekler için ipuçları
Geri yükleme ve güvenilirlik
İddialı senaryolar ve sınırlamalar
ALT YAKLAŞIMLAR ve sorunsuz kullanım için olası sorunlar
Bu konuya dair kendi ekip pratiğiniz veya karşılaştığınız özel bir senaryo var mı? Hangi büyüklükte veritabanlarında hangi ayarları tercih ettiniz, ve geri yükleme süreçlerinde karşılaştığınız güçlükler neler oldu?
Mantıksal yedekleme, veritabanındaki yapı ve veriyi SQL komutları olarak dışa aktarmayı ifade eder. Mysqldump bu işlemi en sık kullanılan araçtır ve özellikle küçükten orta ölçekli veritabanlarında hızlı, güvenilir çözümler sunar. Bu yazıda adım adım temel kullanımı, sık karşılaşılan sorunlar ve performans/kayıt sandağına ilişkin önerileri derledim.
İlk adımlar ve temel kullanımlar
[mq] mysqldump --host host_adı --user kullanıcı --password=parola veritabani_adı > yedek.sql
Bu komut, belirtilen veritabanını tek bir SQL dosyasına dönüştürür. Veritabanı yapısı (tablolar, anahtarlar) ve verisi birlikte çıkarılır. Tablo bazlı seçeneklerle karşı koyamıyorsanız, --single-transaction (InnoDB için) ile kilitlenmeyi minimize edebilirsiniz. Ayrıca tüm veritabanını yedeklemek için --all-databases; tüm kullanıcılar ve fonksiyonlar dahil edilince --routines ve --triggers seçeneklerini kullanabilirsiniz.
Güncel ve tutarlı yedekler için ipuçları
- InnoDB kullanan tablolar için --single-transaction ile çalıştırmak, dump sırasında uzun kilitlenmeleri önler; ancak bu modda LOCK TABLES gereksiz hale gelir. Ayrıca --quick ile satır düzeyinde bellek kullanımı azaltılır.
- Veritabanı boyutu büyüdükçe çıktı akışını iyileştirmek adına --compress ve SSH tünelleme gibi yöntemlerle aradaki ağ yükünü yönetin. Yereldeyse çıktı dosyasını doğrudan disk isabetli oluşturun.
- Kodlamanın sadık kalması için --set-gtid-purged=OFF gibi seçeneklerle GTID tabanlı replikasyon ortamlarında tutarlı bir dump elde etmek önemlidir.
- Farklı ortamlar için düzenli otomasyon şart: günlük/haftalık planlı görevler, yedeklerin adlandırılması (veritabani_YYMMDD.sql) ve saklama politikası (çoğaltma, süre sonu).
Geri yükleme ve güvenilirlik
- Geri yüklemek için basitçe: mysql -u kullanıcı -p veritabani_adı < yedek.sql
- Veriyi doğrulamak adına dump sırasında --no-data ile yapı çıktısını almak ve ayrı olarak veriyi kontrol etmek, daha sonra --where ile kısıtlı bir geri yükleme planlamak pratik olabilir.
- Dışa aktarımın bütünlüğünü sağlamak için yedek dosyasını kontrol etmek amacıyla md5sum veya benzeri bir imza sistemi kullanın.
İddialı senaryolar ve sınırlamalar
- Çok büyük veritabanlarında tek seferlik dump üretimi pratik olmayabilir; parçalara bölünmüş dumplar (partitioned dumps) veya table-based dumplar daha yönetilebilir olabilir.
- Yedeklerin tutarlılığı, kullanılan depolama altyapısına bağlı olarak farklı riskler taşır. Bu yüzden fiziksel yedeklerle birlikte mantıksal yedeklerin karşılaştırmalı bir stratejisi oluşturmaya dikkat edin.
ALT YAKLAŞIMLAR ve sorunsuz kullanım için olası sorunlar
- Yetki hataları: Dump sırasında yeterli izne sahip kullanıcı kullanın; --host, --port ayarlarını doğru yapılandırın.
- Karakter seti hataları: Veritabanı ve yedek dosyası arasında utf8mb4 uyumunu sürdürün; dump sırasında --default-character-set=utf8mb4 kullanımı faydalı olabilir.
- Dosya boyutu: Büyük dumplar için arabelleğe alınmış çıktı dosyası yerine doğrudan dosyaya yönlendirme güvenli bir pratiktir; ayrıca sıkıştırma için | gzip ile adım adım şifreli çözümler uygulanabilir.
Bu konuya dair kendi ekip pratiğiniz veya karşılaştığınız özel bir senaryo var mı? Hangi büyüklükte veritabanlarında hangi ayarları tercih ettiniz, ve geri yükleme süreçlerinde karşılaştığınız güçlükler neler oldu?
