Web sitenizin en değerli varlığı genellikle veritabanıdır: üyeler, siparişler, yazılar, ayarlar... Bu rehberde MySQL ve MariaDB veritabanlarını mysqldump ile güvenli şekilde yedeklemeyi, sıkıştırmayı ve geri yüklemeyi; büyük veritabanlarında dikkat edilmesi gerekenleri ve phpMyAdmin yöntemini anlatıyoruz.
mysqldump nedir?
mysqldump, veritabanının yapısını ve verilerini SQL komutları olarak bir dosyaya aktaran araçtır. MySQL ve MariaDB ile birlikte gelir; ek kurulum gerekmez. Oluşan .sql dosyası başka bir sunucuya taşınabilir ve aynı veritabanını yeniden oluşturmak için kullanılabilir.
Tek bir veritabanını yedekleme
mysqldump -u kullanici -p --single-transaction --routines --triggers --default-character-set=utf8mb4 veritabani_adi > veritabani_adi.sql| Parametre | Ne işe yarar? |
|---|---|
-p | Parolayı güvenli şekilde sorar (komuta yazmayın). |
--single-transaction | InnoDB tablolarında site çalışırken tutarlı yedek alır, tabloları kilitlemez. |
--routines --triggers | Saklı yordamları ve tetikleyicileri de yedeğe ekler. |
--default-character-set=utf8mb4 | Türkçe karakterlerin ve emojilerin bozulmasını önler. |
Sıkıştırarak yedekleme
SQL dosyaları metin olduğu için çok iyi sıkışır; çoğu zaman boyut onda birine iner:
mysqldump -u kullanici -p --single-transaction veritabani_adi | gzip > veritabani_adi-$(date +%F).sql.gzTüm veritabanlarını yedekleme
sudo mysqldump --all-databases --single-transaction --routines --events | gzip > tum-veritabanlari-$(date +%F).sql.gzBelirli birkaç veritabanını yedeklemek için:
mysqldump -u root -p --databases site1 site2 > secili.sqlYalnızca yapı veya yalnızca veri
# Sadece tablo yapıları (veri olmadan)
mysqldump -u kullanici -p --no-data veritabani_adi > yapi.sql
# Sadece veriler (tablo oluşturma komutları olmadan)
mysqldump -u kullanici -p --no-create-info veritabani_adi > veri.sql
# Tek bir tablo
mysqldump -u kullanici -p veritabani_adi wp_posts > wp_posts.sqlGeri yükleme
Geri yüklemeden önce hedef veritabanının var olduğundan emin olun:
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS veritabani_adi CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"Ardından yedeği içe aktarın:
# Sıkıştırılmamış yedek
mysql -u kullanici -p veritabani_adi < veritabani_adi.sql
# .gz yedek
gunzip < veritabani_adi-2026-10-20.sql.gz | mysql -u kullanici -p veritabani_adiGeri yükleme, aynı isimli tabloların içeriğinin üzerine yazar. Canlı bir veritabanına geri yükleme yapmadan önce mevcut halinin de yedeğini alın.
Büyük veritabanları için ipuçları
- İçe aktarmayı SSH oturumu koparsa yarıda kalmaması için
screenveyatmuxiçinde çalıştırın. - İlerlemeyi görmek için
pvaracını kullanabilirsiniz:pv yedek.sql.gz | gunzip | mysql -u kullanici -p veritabani_adi - "MySQL server has gone away" hatası alırsanız sunucu yapılandırmasında
max_allowed_packetdeğerini artırın (ör.256M). - Çok büyük (onlarca GB) veritabanlarında Percona XtraBackup veya MariaDB'nin
mariabackuparacı gibi fiziksel yedekleme araçları daha hızlıdır.
phpMyAdmin ile yedekleme ve geri yükleme
SSH erişiminiz yoksa (paylaşımlı hosting) cPanel'deki phpMyAdmin'i kullanabilirsiniz:
- cPanel'de phpMyAdmin'i açın ve soldan veritabanınızı seçin.
- Dışa Aktar sekmesinde yöntem olarak Hızlı, biçim olarak SQL seçip Git'e tıklayın.
- Geri yüklemek için hedef veritabanını seçip İçe Aktar sekmesinden dosyayı yükleyin.
phpMyAdmin'in dosya yükleme sınırı vardır. Büyük dosyalarda içe aktarma başarısız olursa dosyayı .zip veya .gz olarak sıkıştırarak yükleyin ya da SSH erişimli bir sunucuda mysql komutunu kullanın.
Yedekleri otomatikleştirin
Elle alınan yedekler zamanla unutulur. Veritabanı yedeklerini her gece otomatik almak, eskilerini silmek ve uzak sunucuya kopyalamak için Linux otomatik yedekleme rehberimizi izleyin.
Sık sorulan hatalar
Türkçe karakterler "?" veya bozuk görünüyor
Yedek alırken ve geri yüklerken karakter setinin utf8mb4 olduğundan emin olun. Hedef veritabanını da utf8mb4_unicode_ci ile oluşturun.
"Access denied" hatası
Kullanıcının ilgili veritabanında yetkisi olduğundan emin olun. cPanel'de veritabanı kullanıcısının adı genellikle cpanelkullanici_ önekiyle başlar.
Sonuç
mysqldump ile birkaç komutla güvenilir veritabanı yedekleri alabilir ve dakikalar içinde geri yükleyebilirsiniz. Veritabanı yoğun projeleriniz için NVMe SSD diskli VDS sunucular ve yüksek tek çekirdek performanslı Ryzen 9 performans sunucular sorgu sürelerini belirgin şekilde kısaltır.
Sık Sorulan Sorular
Site açıkken yedek almak güvenli mi?
InnoDB tablolarında --single-transaction parametresiyle site çalışırken tutarlı yedek alabilirsiniz. MyISAM tablolarında kısa süreli kilitlenme olabilir.
Büyük veritabanını phpMyAdmin ile yükleyemiyorum, ne yapmalıyım?
phpMyAdmin'in yükleme sınırına takılan dosyaları SSH üzerinden mysql komutuyla doğrudan içe aktarın; bu yöntemde boyut sınırı yoktur.
Yedek dosyası hangi karakter setiyle alınmalı?
Türkçe karakterlerin bozulmaması için utf8mb4 kullanın ve mysqldump komutuna --default-character-set=utf8mb4 parametresini ekleyin.
