Blogchevron_rightSunucu Yönetimichevron_rightSSH ile Büyük Veritabanı İçe/Dışa Aktarma Rehberi

SSH ile Büyük Veritabanı İçe/Dışa Aktarma Rehberi

S
Serversium
calendar_today2 Mayıs 2026
schedule5 dk okuma
SSH ile Büyük Veritabanı İçe/Dışa Aktarma Rehberi

format_list_bulletedBu İçerikte Bahsedilen Konular

SSH Üzerinden Büyük Veritabanlarını İçe/Dışa Aktarma: Kapsamlı Rehber

Büyük veritabanlarını taşımak veya yedeklemek, web geliştiricileri ve sistem yöneticileri için kritik bir görevdir. PHPMyAdmin gibi grafik arayüzler, küçük veritabanları için işe yarasa da, GB ölçeğindeki büyük veritabanlarında timeout hataları ve bağlantı sorunlarıyla karşılaşılır. SSH üzerinden veritabanı içe/dışa aktarma, bu sorunları tamamen ortadan kaldırır ve sunucu kaynaklarını doğrudan kullanarak işlemleri saniyeler içinde tamamlar.

Bu rehberde, MySQL, MariaDB ve PostgreSQL veritabanlarını SSH ile nasıl aktaracağınızı adım adım öğreneceksiniz.

Bu Rehberde Neler Öğreneceksiniz?

  • SSH bağlantısı kurma ve sunucu hazırlığı
  • MySQL/MariaDB veritabanı dışa aktarma (export)
  • MySQL/MariaDB veritabanı içe aktarma (import)
  • PostgreSQL veritabanı taşıma yöntemleri
  • Büyük veritabanları için en iyi uygulamalar
  • Sık karşılaşılan hatalar ve çözümleri

SSH ile Veritabanı Aktarmadan Önce Yapılması Gerekenler

Başarılı bir veritabanı aktarımı için öncelikle sunucunuzun hazır olması ve gerekli erişim izinlerine sahip olmanız gerekir.

1. SSH Erişim Gereksinimleri

SSH üzerinden veritabanı işlemleri yapabilmek için aşağıdaki gereksinimleri karşılamalısınız:

  • SSH erişimi olan bir sunucu (VPS, VDS veya fiziksel sunucu)
  • Root veya sudo yetkili bir kullanıcı hesabı
  • MySQL/MariaDB veya PostgreSQL veritabanı sunucusunun kurulu olması
  • Terminal veya SSH istemcisi (PuTTY, Terminal, vs.)

2. Veritabanı Bağlantı Bilgilerinizi Hazırlayın

Aktarım işlemleri için aşağıdaki bilgilere ihtiyacınız olacak:

  • Veritabanı sunucu hostname (genellikle localhost)
  • Veritabanı kullanıcı adı ve şifresi
  • Veritabanı adı
  • Hedef sunucuda aynı bilgiler (varsa)

3. Sunucu Disk Alanı Kontrolü

Büyük veritabanlarını aktarırken yeterli disk alanınız olduğundan emin olun. SQL dosyaları, orijinal veritabanı boyutunun 1.5 ila 3 katı kadar alan kaplayabilir.

df -h

Bu komut disk kullanımını görüntüler. Kök partition'da en az veritabanı boyutu kadar boş alan olmalıdır.

MySQL/MariaDB Veritabanı Dışa Aktarma (Export)

MySQL ve MariaDB veritabanlarını SSH üzerinden dışa aktarmak için mysqldump aracı kullanılır. Bu araç, veritabanını SQL komutlarına dönüştürerek bir dosya oluşturur.

Temel mysqldump Kullanımı

Aşağıdaki komut, veritabanınızı SQL dosyası olarak dışa aktarır:

mysqldump -u KULLANICI_ADI -p VERITABANI_ADI > yedek.sql

Bu komutu çalıştırdığınızda, şifrenizi girmeniz istenecektir. Komut çalıştıktan sonra, yedek.sql dosyası oluşturulmuş olacaktır.

Büyük Veritabanları için optimize edilmiş Export

GB ölçeğindeki büyük veritabanları için aşağıdaki parametreleri kullanmanızı öneriyoruz:

mysqldump -u KULLANICI_ADI -p VERITABANI_ADI --single-transaction --quick --lock-tables=false > buyuk_yedek.sql

Bu parametrelerin anlamları:

  • --single-transaction: transaction kullanarak tutarlı bir yedek oluşturur
  • --quick: Büyük sonuç kümelerini satır satır okur, bellek sorunlarını önler
  • --lock-tables=false: Tabloları kilitlemeden yedek alır

Tüm Veritabanlarını Tek Seferde Yedekleme

Sunucudaki tüm veritabanlarını yedeklemek için:

mysqldump -u root -p --all-databases > tum_veritabanlari.sql

Belirli tabloları yedeklemek için ise:

mysqldump -u KULLANICI_ADI -p VERITABANI_ADI tablo1 tablo2 > tablolar_yedek.sql

Sıkıştırılmış Yedekleme

Disk alanından tasarruf etmek ve aktarım hızını artırmak için gzip ile sıkıştırma kullanabilirsiniz:

mysqldump -u KULLANICI_ADI -p VERITABANI_ADI | gzip > yedek.sql.gz

Bu yöntem, 1GB'lık bir veritabanını yaklaşık %70-80 oranında sıkıştırabilir.

MySQL/MariaDB Veritabanı İçe Aktarma (Import)

Dışa aktardığınız SQL dosyasını yeni bir sunucuya veya mevcut veritabanına aktarmak için mysql komutu kullanılır.

Temel Import İşlemi

mysql -u KULLANICI_ADI -p YENI_VERITABANI_ADI < yedek.sql

Bu komut, yedek.sql dosyasındaki tüm SQL komutlarını çalıştırarak veritabanını oluşturur.

Büyük SQL Dosyalarını İçe Aktarma

Büyük dosyalar için timeout sorunlarını önlemek için my.cnf ayarlarını düzenleyebilir veya doğrudan komut satırında parametre belirtebilirsiniz:

mysql -u KULLANICI_ADI -p --max_allowed_packet=512M YENI_VERITABANI_ADI < buyuk_yedek.sql

max_allowed_packet parametresi, maksimum paket boyutunu artırarak büyük veri transferlerini mümkün kılar.

Sıkıştırılmış Dosyadan Import

gzip ile sıkıştırılmış yedek dosyasından direkt olarak içe aktarmak için:

gunzip < yedek.sql.gz | mysql -u KULLANICI_ADI -p YENI_VERITABANI_ADI

Bu yöntem, hem açma işlemini hem de import işlemini tek adımda yapar.

Veritabanı Oluşturma

İçe aktarma işleminden önce boş bir veritabanı oluşturmanız gerekebilir:

mysql -u root -p -e "CREATE DATABASE yeni_veritabani CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

PostgreSQL Veritabanı Aktarım Yöntemleri

PostgreSQL veritabanları için farklı araçlar ve yöntemler kullanılır. pg_dump ve pg_restore, PostgreSQL'in resmi yedekleme araçlarıdır.

PostgreSQL Dışa Aktarma (pg_dump)

pg_dump -U KULLANICI_ADI -h localhost -Fc VERITABANI_ADI > yedek.dump

-Fc parametresi, PostgreSQL'in özel sıkıştırılmış formatını kullanır. Bu format, pg_restore ile hızlı bir şekilde geri yüklenebilir.

PostgreSQL İçe Aktarma (pg_restore)

pg_restore -U KULLANICI_ADI -h localhost -d YENI_VERITABANI_ADI yedek.dump

PostgreSQL plain SQL Export

SQL formatında dışa aktarmak için:

pg_dump -U KULLANICI_ADI -h localhost -f yedek.sql VERITABANI_ADI

Bu format, MySQL'e geçiş yapmak istediğinizde veya SQL dosyasını manuel olarak düzenlemeniz gerektiğinde kullanışlıdır.

PostgreSQL SQL Import

psql -U KULLANICI_ADI -h localhost -d YENI_VERITABANI_ADI < yedek.sql

Büyük Veritabanları için En İyi Uygulamalar ve İpuçları

GB ölçeğindeki veritabanlarıyla çalışırken performans ve güvenlik için aşağıdaki en iyi uygulamaları takip etmenizi öneriyoruz.

1. Screen veya Tmux Kullanımı

Uzun süren işlemlerde SSH bağlantısı kesilirse işlem yarım kalabilir. screen veya tmux kullanarak oturumunuzu koruyabilirsiniz:

screen -S yedekleme
mysqldump -u KULLANICI_ADI -p VERITABANI_ADI > yedek.sql
# Ctrl+A, sonra D ile screen'den çıkın
# Tekrar bağlanmak için: screen -r yedekleme

2. Tablo Bazlı Yedekleme

Çok büyük veritabanlarını parçalara bölerek yedekleyebilirsiniz:

mysqldump -u KULLANICI_ADI -p VERITABANI_ADI tablo_adi --where="id <= 100000" > yedek1.sql
mysqldump -u KULLANICI_ADI -p VERITABANI_ADI tablo_adi --where="id > 100000 AND id <= 200000" > yedek2.sql

3. İlerleme Durumunu İzleme

pv (pipe viewer) aracını kullanarak aktarım hızını ve ilerlemeyi izleyebilirsiniz:

mysqldump -u KULLANICI_ADI -p VERITABANI_ADI | pv | gzip > yedek.sql.gz

Bu komut, MB/s cinsinden aktarım hızını ve toplam aktarılan veri miktarını görüntüler.

4. SQL Dosyası Boyutunu Kontrol Etme

Yedekleme işlemi tamamlandıktan sonra dosya boyutunu kontrol edin:

ls -lh yedek.sql

Orijinal veritabanı boyutuyla karşılaştırarak yedekleme işleminin başarılı olup olmadığını doğrulayabilirsiniz.

5. Veritabanı Boyutuna Göre Yöntem Seçimi

Veritabanı BoyutuÖnerilen Yöntem Tahmini Süre
100 MB'a kadarStandart mysqldump1-2 dakika
100 MB - 1 GBmysqldump + gzip5-15 dakika
1 GB - 10 GBmysqldump + parametreler + screen30 dakika - 2 saat
10 GB üzerimydumper/myloader veya物理 yedekleme2+ saat

Sunucular Arası Direkt Transfer

İki sunucu arasında doğrudan veritabanı aktarımı yaparak yerel disk kullanımından tasarruf edebilirsiniz.

MySQL'de Sunucu Arası Transfer

ssh -C root@hedef_sunucu "mysql -u KULLANICI_ADI -p VERITABANI_ADI" < yedek.sql

Bu komut, yerel yedek.sql dosyasını açmadan direkt olarak hedef sunucuya aktarır.

PostgreSQL'de Uzaktan Yedekleme

pg_dump -h kaynak_sunucu -U kullanici veritabani | pg_restore -h hedef_sunucu -U kullanici -d veritabani

Sık Karşılaşılan Hatalar ve Çözümleri

Veritabanı aktarımı sırasında karşılaşabileceğiniz hatalar ve çözümleri aşağıda derlenmiştir.

1. "Access denied for user"

Bu hata, kullanıcı izinlerinin yetersiz olduğunu gösterir. Kullanıcının veritabanı üzerinde gerekli yetkilere sahip olduğundan emin olun:

mysql -u root -p -e "GRANT ALL PRIVILEGES ON veritabani.* TO 'kullanici'@'localhost';"

2. "Lost connection during query"

Bağlantı zaman aşımı sorunu. max_allowed_packet ve net_read_timeout değerlerini artırın:

mysql -u KULLANICI_ADI -p --max_allowed_packet=1G --net_read_timeout=600 VERITABANI_ADI < yedek.sql

library_booksBenzer İçerikler

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber
Sunucu Yönetimi
calendar_today5 Nisan 2026
schedule5 dk

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber

Cloud sunucular, dinamik kaynak dağıtımıyla işletmelerin kesintisiz büyümesini sağlar. Avantajlardan karşılaştırmalara tüm detaylar bu rehberde yer alıyor.

S
Serversiumarrow_forward
Linux vs Windows Sunucu: Hangisi Projeye Uygun?
Sunucu Yönetimi
calendar_today6 Nisan 2026
schedule5 dk

Linux vs Windows Sunucu: Hangisi Projeye Uygun?

Linux ve Windows Sunucu arasındaki teknik farkları, maliyet avantajlarını ve proje uyumluluğunu detaylı olarak karşılaştırıyoruz. Yazılım stack'inize en uygun işletim sistemini seçmek için kapsamlı rehberimizle doğru altyapı kararını verin.

S
Serversiumarrow_forward
Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber
Sunucu Yönetimi
calendar_today16 Nisan 2026
schedule5 dk

Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber

Ubuntu 24 üzerinde Plesk kurulumunu adım adım öğrenin. Bu rehberde sistem gereksinimleri, kurulum adımları ve temel yapılandırma ayarlarını bulabilirsiniz.

S
Serversiumarrow_forward