MySQL Yedekleme ve Geri Yükleme
Sunucu Yönetimi

MySQL/MariaDB Veritabanı Yedekleme ve Geri Yükleme (mysqldump)

mysqldump ile MySQL/MariaDB veritabanlarını yedekleyin, sıkıştırın ve geri yükleyin. Tek tablo, tüm veritabanları, büyük veritabanları ve phpMyAdmin yöntemi.

  • MerkezHost Teknik Ekibi
  • 4 dk okuma
  • Seviye: Orta
  • Güncelleme:

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
ParametreNe işe yarar?
-pParolayı güvenli şekilde sorar (komuta yazmayın).
--single-transactionInnoDB tablolarında site çalışırken tutarlı yedek alır, tabloları kilitlemez.
--routines --triggersSaklı yordamları ve tetikleyicileri de yedeğe ekler.
--default-character-set=utf8mb4Tü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.gz

Tüm veritabanlarını yedekleme

sudo mysqldump --all-databases --single-transaction --routines --events | gzip > tum-veritabanlari-$(date +%F).sql.gz

Belirli birkaç veritabanını yedeklemek için:

mysqldump -u root -p --databases site1 site2 > secili.sql

Yalnı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.sql

Geri 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_adi
Dikkat

Geri 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 screen veya tmux içinde çalıştırın.
  • İlerlemeyi görmek için pv aracı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_packet değerini artırın (ör. 256M).
  • Çok büyük (onlarca GB) veritabanlarında Percona XtraBackup veya MariaDB'nin mariabackup aracı 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:

  1. cPanel'de phpMyAdmin'i açın ve soldan veritabanınızı seçin.
  2. Dışa Aktar sekmesinde yöntem olarak Hızlı, biçim olarak SQL seçip Git'e tıklayın.
  3. Geri yüklemek için hedef veritabanını seçip İçe Aktar sekmesinden dosyayı yükleyin.
Yükleme sınırı

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.

  • #mysql
  • #mariadb
  • #mysqldump
  • #veritabanı yedekleme
  • #phpmyadmin
Paylaş:
Devamını Okuyun

İlgili Rehberler