MySQL Import Export Rehberi: mysqldump ile Veritabanı Taşıma
Bu rehberde MySQL ve MariaDB veritabanlarını güvenli şekilde dışa aktarmayı ve geri yüklemeyi öğreneceksiniz.
Yedek alma, sunucu taşıma ve büyük .sql dosyaları yönetme adımlarını uygulayacaksınız.
Bu Rehberde Ne Öğreneceksiniz?
- mysqldump ile veritabanı export alma
- mysql istemcisiyle import işlemi
- Sadece belirli tabloları taşıma
- Kullanıcı yetkileri ve izinleri aktarma
- Büyük
.sqldosyalarını optimize etme
Ön Koşullar
- Ubuntu, Debian veya CentOS sunucu
- MySQL veya MariaDB kurulumu
- sudo yetkisine sahip kullanıcı
- Aktarılacak bir veritabanı
1️⃣ Veritabanı Export Alma (Yedekleme)
mysqldump, MySQL ve MariaDB için standart mantıksal yedekleme aracıdır.
mysqldump -u kullanici_adi -p veritabani_adi > yedek.sql
- Bu komut, veritabanının şema ve verilerini .sql dosyasına yazar.
Dosyanın oluştuğunu kontrol edin:
head -n 5 yedek.sql
- Bu çıktı dosyanın geçerli bir SQL dump olduğunu gösterir.
2️⃣ Veritabanı Import Etme (Geri Yükleme)
- Önce hedef veritabanını oluşturmanız gerekir.
mysql -u root -p
- Bu komut MySQL kabuğunu açar.
CREATE DATABASE yeni_veritabani;
- Veritabanı oluşturulduktan sonra çıkın ve import işlemini başlatın:
mysql -u kullanici_adi -p yeni_veritabani < yedek.sql
- Bu komut yedeği hedef veritabanına aktarır.
3️⃣ Sadece Belirli Tabloları Export Etme
- Tüm veritabanı yerine seçili tabloları taşıyabilirsiniz.
mysqldump -u kullanici_adi -p veritabani_adi tablo1 tablo2 > tablolar.sql
- Bu komut yalnızca belirtilen tabloları yedekler.
4️⃣ Kullanıcı ve Yetkileri Taşıma
- Kullanıcı hesapları veritabanı dump’larına dahil edilmez.
- Yetkiler mysql sistem veritabanında saklanır.
Yöntem 1: Yetki Tablolarını Export Etme
mysqldump -u root -p mysql user db tables_priv columns_priv procs_priv > yetkiler.sql
- Bu komut kullanıcıları ve izinleri taşır.
Import işlemi:
mysql -u root -p mysql < yetkiler.sql
- Ardından yetkileri yenileyin:
FLUSH PRIVILEGES;
Yöntem 2: GRANT Komutlarıyla Taşıma (Önerilen)
- Bu yöntem sürümler arası uyumluluk sağlar.
mysql -B -N -u root -p -e "SELECT CONCAT('SHOW GRANTS FOR ''', user, '''@''', host, ''';') FROM mysql.user WHERE user NOT IN ('root','mysql.sys')" \
| mysql -B -N -u root -p \
| sed 's/$/;/' > grantlar.sql
- Bu dosya okunabilir ve taşınabilirdir.
mysql -u root -p < grantlar.sql
5️⃣ Büyük SQL Dosyalarıyla Çalışma
- Sıkıştırarak Export Alma
mysqldump -u kullanici_adi -p veritabani | gzip > veritabani.sql.gz
- Bu komut disk alanından tasarruf sağlar.
Import işlemi:
gunzip < veritabani.sql.gz | mysql -u kullanici_adi -p veritabani
- Performans İçin İyileştirme
Export sırasında önerilen bayraklar:
mysqldump -u kullanici_adi -p --single-transaction --quick veritabani > yedek.sql
- Bu ayarlar tablo kilitlemeden yedek alır.
- Büyük Dosyayı Parçalama
split -l 5000 buyuk.sql parca_
- Bu komut büyük dump dosyasını küçük parçalara böler.
for f in parca_*; do mysql -u kullanici_adi -p veritabani < "$f"; done
Sıkça Sorulan Sorular (SSS)
1. mysqldump binary yedek mi alır? Hayır. SQL tabanlı mantıksal yedek alır.
2. MySQL dump MariaDB’ye import edilir mi? Evet. Büyük oranda uyumludur.
3. Sadece şemayı export edebilir miyim? Evet. --no-data bayrağını kullanın.
mysqldump -u kullanici_adi -p --no-data veritabani > schema.sql
4. Import çok yavaş, ne yapmalıyım? Foreign key kontrollerini geçici kapatın ve dosyayı sıkıştırın.
5. Canlı veritabanına import güvenli mi? Önerilmez. Önce staging ortamında test edin.
Sonuç
Bu rehberde MySQL ve MariaDB veritabanlarını güvenli şekilde import ve export etmeyi öğrendiniz. Bu yöntemler yedekleme, taşıma ve kurtarma senaryolarında kritik öneme sahiptir.
Yüksek performanslı veritabanı sunucuları ve yedekleme altyapıları için Rabisu Bulut platformunu hemen deneyebilirsiniz.