Veritabanı, çoğu işletmenin en değerli dijital varlığıdır. Bir donanım arızası, hatalı bir DROP TABLE komutu, fidye yazılımı saldırısı ya da basit bir insan hatası — hepsi saniyeler içinde yılların verisini silip atabilir. İşte bu yüzden düzenli ve doğru yapılandırılmış bir yedekleme stratejisi, tercih değil zorunluluktur.
Bu rehberde MySQL veritabanınızı yedeklemenin tüm yaygın yöntemlerini, hem komut satırı hem de grafik arayüz (GUI) araçlarıyla adım adım ele alacağız. Yazının sonunda kendi ihtiyacınıza en uygun yöntemi seçebilecek ve yedekleme sürecinizi otomatikleştirebilecek bilgiye sahip olacaksınız.
Yedekleme Neden Kritik?
Çoğu veri kaybı beklenmedik bir anda gerçekleşir. Aşağıdaki senaryoların her biri, gerçek işletmelerin başına gelmiş durumlardır:
Disk arızası sonucu fiziksel veri kaybı
Yanlışlıkla silinen tablo veya kayıtlar
Fidye yazılımı ile şifrelenen veriler
Başarısız bir uygulama güncellemesinin veriyi bozması
Sunucu taşıma sırasında oluşan tutarsızlıklar
Bir yedekleme stratejisi yalnızca “yedek almak” değildir; doğru yöntemi, doğru sıklığı ve test edilmiş bir geri yükleme planını kapsar. Çünkü hiç denenmemiş bir yedek, var olmayan bir yedektir.
Yedeklemeye Başlamadan Önce: Bilmeniz Gereken 3 Temel Kavram
Yöntemlere geçmeden önce, doğru bir yedekleme stratejisini şekillendiren üç temel kavramı kısaca tanıyalım.
RPO ve RTO
RPO (Recovery Point Objective), kabul edilebilir maksimum veri kaybınızı tarif eder: “En fazla kaç saatlik veriyi kaybetmeyi göze alabilirim?” RTO (Recovery Time Objective) ise “Bir felaket anında sistemi ne kadar sürede ayağa kaldırmam gerekiyor?” sorusunun cevabıdır. Yedekleme sıklığınızı ve yönteminizi bu iki hedef belirler.
3-2-1 Kuralı
Sağlam bir yedekleme stratejisinin altın kuralı şudur: Verinizin 3 kopyası olsun, bunları 2 farklı ortamda saklayın ve en az 1 kopyayı tesis dışında (örneğin bulutta) tutun. Tek bir yedek, yedek sayılmaz.
Yedek test edilmeden yedek değildir
Hiç geri yüklenmemiş bir yedek, çalıştığından emin olamadığınız bir umuttan ibarettir. Bu yüzden bu rehberde geri yükleme (restore) adımlarını da göstereceğiz.
Mantıksal ve Fiziksel Yedekleme Arasındaki Fark
MySQL’de yedekleme yöntemleri iki ana kategoriye ayrılır. Doğru aracı seçebilmek için aralarındaki farkı anlamak önemlidir.
Mantıksal Yedekleme (Logical Backup)
Veritabanındaki yapı ve veri, CREATE TABLE ve INSERT gibi SQL komutları biçiminde bir metin dosyasına aktarılır. Donanımdan bağımsızdır, farklı MySQL sürümleri arasında taşınabilir ve okunabilir. mysqldump, MySQL Workbench ve phpMyAdmin bu kategoridedir. Dezavantajı, büyük veritabanlarında yavaş olmasıdır.
Fiziksel Yedekleme (Physical Backup)
Veritabanının disk üzerindeki ham dosyaları (.ibd, redo log vb.) doğrudan kopyalanır. Çok daha hızlıdır ve yüzlerce GB’lık veritabanları için idealdir. Percona XtraBackup bu kategoridedir.
Özellik
Mantıksal
Fiziksel
Çıktı
SQL metin dosyası
Ham veri dosyaları
Hız
Yavaş
Hızlı
Taşınabilirlik
Yüksek
Düşük (sürüm bağımlı)
Uygun veri boyutu
Küçük–orta
Büyük (100 GB+)
Sürüm taşıması
Kolay
Sınırlı
Yöntem 1: mysqldump ile Komut Satırından Yedekleme
mysqldump, MySQL ile birlikte gelen ve en yaygın kullanılan mantıksal yedekleme aracıdır. Ek bir kurulum gerektirmez. Windows’ta MySQL kuruluysa mysqldump.exe, MySQL’in bin klasöründe yer alır (örneğin C:\Program Files\MySQL\MySQL Server 8.4\bin).
Temel kullanım
Komut İstemi’ni (CMD) veya PowerShell’i açın ve tek bir veritabanını yedeklemek için aşağıdaki komutu çalıştırın:
Komut çalıştığında parola sorulur; girdikten sonra yedek.sql dosyası belirttiğiniz klasörde oluşur. Buradaki --single-transaction parametresi, InnoDB tabloları için veritabanını salt-okunur yapmadan tutarlı bir yedek almanızı sağlar ve canlı sistemlerde kritiktir.
Oluşan dosyayı bir metin editöründe açtığınızda, mantıksal yedeğin aslında bir dizi SQL komutundan ibaret olduğunu net biçimde görürsünüz:
Oluşan yedek.sql dosyası bir dizi SQL komutundan oluşur
İPUCU: Büyük veritabanlarında yedek dosyasını sıkıştırmak diskten ciddi tasarruf sağlar. Windows’ta yedeği aldıktan sonra 7-Zip gibi bir araçla arşivleyebilirsiniz.
mysqldump yedeğini geri yükleme
Komut satırından geri yükleme oldukça basittir:
mysql -u root -p narbulut_test < C:\Yedekler\yedek.sql
CMD’de mysql ile geri yükleme komutu
Geri yüklemeden önce hedef veritabanının var olduğundan emin olun. Gerekirse önce CREATE DATABASE narbulut_test; ile oluşturun.
ÖNEMLİ: Yedeğinizi düzenli olarak test ortamında geri yükleyerek deneyin. Gerçek bir felaket anında ilk kez geri yükleme denemek, en kötü senaryodur. Test edilmemiş yedek, güvenilmez yedektir.
Yöntem 2: MySQL Workbench ile Yedekleme
Komut satırıyla çalışmak istemeyenler için MySQL Workbench, resmî ve ücretsiz grafik arayüzdür. Yedekleme işlemini birkaç tıklamayla yapmanızı sağlar.
MySQL Workbench ana ekranı
Adım adım yedekleme
Workbench’i açın ve veritabanı bağlantınıza tıklayarak giriş yapın. Sol menüde Administration sekmesine geçin ve Data Export seçeneğine tıklayın. Açılan ekranda yedeklemek istediğiniz veritabanlarını ve tabloları işaretleyin.
Data Export ekranında veritabanı ve tablo seçimi
Ardından Export Options bölümünde yedeğin nasıl kaydedileceğini seçin. Export to Self-Contained File seçeneği, tüm veritabanını tek bir .sql dosyasında toplar ve taşıma için en pratik yöntemdir. Tutarlı bir yedek için Include Create Schema seçeneğini de işaretlemeniz önerilir.
Export Options: Self-Contained File ve dump seçenekleri
Start Export düğmesine tıklayın ve işlemin tamamlanmasını bekleyin. İşlem bittiğinde alt panelde tamamlanma mesajını görürsünüz.
Workbench export işlemi tamamlandı
Workbench ile geri yükleme
Geri yükleme için Data Import/Restore ekranını kullanırsınız. Import from Self-Contained File seçeneğiyle daha önce aldığınız .sql dosyasını gösterir, hedef şemayı (Default Target Schema) seçer ve Start Import dersiniz.
Data Import/Restore ekranı
İşlem tamamlandığında yedeğiniz geri yüklenmiş olur.
Workbench import işlemi tamamlandı
Yöntem 3: phpMyAdmin ile Yedekleme
Paylaşımlı hosting kullanan veya web tabanlı bir arayüz tercih edenler için phpMyAdmin en pratik çözümdür. Çoğu hosting paketinde hazır gelir.
Dışa aktarma (Export)
phpMyAdmin’e giriş yapın ve sol menüden yedeklemek istediğiniz veritabanını seçin. Üst menüden Export sekmesine tıklayın. Quick yöntemi çoğu durum için yeterlidir; format olarak SQL seçili olmalıdır. Daha fazla kontrol isterseniz Custom seçeneğini kullanabilirsiniz.
phpMyAdmin Export sekmesi
Go düğmesine tıkladığınızda .sql dosyası bilgisayarınıza iner.
İçe aktarma (Import)
Geri yüklemek istediğiniz veritabanını seçin (veya boş bir veritabanı oluşturun), Import sekmesine geçin, Choose File ile .sql dosyanızı seçin ve Go deyin.
phpMyAdmin Import sekmesi
UYARI: phpMyAdmin’in varsayılan dosya boyutu yükleme sınırı vardır (genellikle birkaç yüz MB). Büyük veritabanları için mysqldump veya Workbench daha güvenilirdir.
Yöntem 4: Percona XtraBackup ile Sıcak (Hot) Yedekleme
Yüzlerce GB veya TB boyutundaki canlı production veritabanları için mantıksal yöntemler yavaş kalır. İşte burada Percona XtraBackup devreye girer.
XtraBackup, açık kaynaklı bir sıcak (hot) yedekleme aracıdır; yani veritabanını durdurmadan, kilitlemeden InnoDB veri dosyalarının fiziksel kopyasını alır. Veritabanı sorgulara cevap vermeye devam ederken arka planda diskten sayfaları kopyalar ve InnoDB’nin çökme kurtarma (crash recovery) mekanizmasıyla tutarlı bir yedek üretir.
Başlıca avantajları:
Sıfır kesinti (zero downtime) ile yedekleme
Büyük veritabanlarında mysqldump’a kıyasla çok daha hızlı geri yükleme
Artımlı (incremental) yedekleme ile Point-in-Time Recovery desteği
Sıkıştırma ve şifreleme özellikleri
NOT: Percona XtraBackup yalnızca Linux üzerinde çalışır. Windows sunucularda doğrudan kullanılamaz; bu senaryoda bir Linux replica üzerinden yedek alınması gerekir. MariaDB için muadili Mariabackup‘tır.
Binary Log ve Point-in-Time Recovery (PITR)
Sadece günlük tam yedek almak her zaman yeterli değildir. Diyelim ki yedeğinizi gece 02.00’de aldınız ve veri kaybı öğleden sonra 15.00’te yaşandı. Aradaki 13 saatlik veri ne olacak?
İşte burada Binary Log (binlog) devreye girer. Binary log, veritabanında yapılan tüm değişiklikleri (her INSERT, UPDATE, DELETE) sırayla kaydeder. Tam yedeğinizi binlog ile birleştirerek belirli bir ana kadar (point-in-time) geri dönebilirsiniz. Bu nedenle ciddi bir yedekleme stratejisinde tam yedek ile binary log kopyaları birlikte tutulur. XtraBackup gibi araçların en güçlü yanlarından biri de bu PITR yeteneğidir.
Yedekleri Otomatikleştirme: Windows Task Scheduler
Manuel yedekleme unutulmaya mahkûmdur. Güvenilir bir strateji otomatik olmalıdır. Windows’ta bunu Task Scheduler (Görev Zamanlayıcı) ile yaparız.
1. Yedekleme batch dosyası oluşturma
Önce yedeği alan bir .bat dosyası hazırlayın. Örneğin C:\Yedekler\yedek_al.bat:
@echo off
set TARIH=%date:~-4%-%date:~3,2%-%date:~0,2%
"C:\Program Files\MySQL\MySQL Server 8.4\bin\mysqldump.exe" -u root -pSIFRE --single-transaction narbulut_test > C:\Yedekler\yedek_%TARIH%.sql
Bu betik çalıştığında dosya adına tarih ekleyerek (yedek_2026-06-04.sql) yedek üretir.
2. Görev Zamanlayıcı’da görev oluşturma
Başlat menüsünde Task Scheduler (Görev Zamanlayıcı) yazıp açın. Sağdaki panelden Create Basic Task (Temel Görev Oluştur) seçin ve göreve bir ad verin.
Task Scheduler — Create Basic Task (görev adı)
Trigger (Tetikleyici) adımında yedeğin ne sıklıkta çalışacağını seçin (örneğin her gün 02.00).
Task Scheduler — Trigger / zamanlama adımı
Action (Eylem) adımında Start a program seçin ve oluşturduğunuz .bat dosyasını gösterin.
Task Scheduler — Action / .bat dosyası seçimi
Sihirbazı tamamlayın. Artık yedeğiniz her gün otomatik alınacaktır. Birkaç gün sonra yedek klasörünüzde tarihli dosyaların biriktiğini görürsünüz:
C:\Yedekler klasöründe biriken tarihli yedek dosyaları
İPUCU: Yedekleri yalnızca aynı sunucuda tutmak risklidir. Sunucu komple çökerse yedekler de gider. Yedeklerinizi mutlaka farklı bir lokasyona veya buluta kopyalayın.
En İyi Uygulamalar
Sağlam bir MySQL yedekleme stratejisi için şu ilkelere uyun: en az 3 kopya, 2 farklı ortam ve 1 kopya farklı lokasyonda olacak şekilde 3-2-1 kuralını uygulayın. Veri değişim sıklığınıza göre düzenli bir takvim belirleyin ve büyük yedekleri gece gibi düşük yoğunluklu saatlerde alın. InnoDB tablolarında tutarlılık için --single-transaction kullanın, point-in-time recovery için binary log’u aktif tutun ve en önemlisi, geri yükleme sürecini düzenli olarak test edin. Yerel yedekler tek başına yeterli değildir; mutlaka bir off-site veya bulut kopyası bulundurun.
Verilerinizi Bulutta Güvende Tutun
Yedekleme stratejinizin en kritik halkası, yedeklerin fiziksel sunucudan bağımsız ve güvenli bir lokasyonda saklanmasıdır. Yerel diske alınan bir yedek; yangın, hırsızlık, donanım arızası veya fidye yazılımı durumunda ana veriyle birlikte kaybolabilir.
Narbulut Bulut Yedekleme çözümleri, MySQL veritabanlarınız ve tüm kritik verileriniz için otomatik, şifreli ve KVKK uyumlu bir off-site yedekleme katmanı sunar. Verileriniz Türkiye’deki veri merkezlerinde, yasal mevzuata tam uyumlu biçimde saklanır; böylece “yedeğim var ama nerede ve güvenli mi?” sorusunu tamamen ortadan kaldırırsınız.
MySQL Yedekleme Süreçlerinizi Profesyonel Düzeye Taşıyın
Veritabanı yedekleme süreçlerinizi profesyonel ve güvenli bir altyapıya taşımak için Narbulut çözümlerini inceleyebilirsiniz.