Uncategorized

      SQLite’ten MySQL’e Taşıma İşlemi Nasıl Yapılır?

      SQLite, küçük ölçekli projelerde yaygın olarak tercih edilen hafif bir veritabanı sistemidir. Ancak proje büyüdükçe ve veri trafiği arttıkça, VDS sunucular gibi daha güçlü altyapılarda barınma ihtiyacı doğar. Bu durumda daha yüksek ölçeklenebilirlik ve çok kullanıcılı yapı sunan MySQL’e geçiş yapmak gerekir. Bu yazıda, SQLite veritabanını MySQL’e dönüştürmenin pratik yollarını, dikkat edilmesi gereken adımları ve veri kaybı yaşamadan geçiş yapmanın ipuçlarını bulacaksınız.

      SQLite ve MySQL Arasındaki Temel Farklar

      SQLite, dosya tabanlı bir veritabanı sistemidir; tüm veriler tek bir .db dosyasında saklanır ve uygulama bu dosya üzerinde doğrudan işlem yapar.

      MySQL ise istemci-sunucu mimarisine dayanır. Bağımsız bir hizmet olarak çalışır ve ağ üzerinden birden fazla istemciye eşzamanlı erişim imkânı tanır. Özellikle cPanel MySQL yapılandırmalarında bu mimari, web tabanlı yönetim açısından büyük kolaylık sağlar. Veri türleri yönünden de belirgin farklar bulunur: SQLite esnek tipleme kullanarak sütun tiplerini dinamik biçimde yorumlarken, MySQL katı veri türü eşleşmesi ister.

      Ön Hazırlık

      Geçiş işleminden önce SQLite veritabanında bütünlük doğrulaması yapmak, veri kaybı riskini azaltmak açısından önemlidir. Bu adım, veritabanının hatasız şekilde taşınmasını sağlar.

      Veri Bütünlüğü Testi
      Aşağıdaki komut yardımıyla, SQLite dosyasında herhangi bir yapısal tutarsızlık veya bozukluk olup olmadığı denetlenebilir.

      PRAGMA integrity_check

      Yedekleme oluşturma

      Bu işlem, veri kaybı riskini ortadan kaldırır. Sonrasında, hedef MySQL sunucusunda yeni bir veritabanı oluşturulmalıdır.

      sqlite3 proje.db .backup proje_backup.db

      SQLite’ten MySQL’e Aktarım Yöntemleri

      SQLite veritabanını MySQL’e taşımak için iki farklı yöntem uygulanabilir: manuel komut satırı aktarımı veya MySQL Workbench’’in sunduğu görsel Göç Sihirbazı. Komut satırı seçeneği tam kontrol imkânı verirken, Workbench yöntemi otomatik adımlarla işlemi kullanıcı dostu hale getirir.

      MySQL Workbench ile Geçiş

      MySQL Workbench, MySQL’in resmi yönetim aracıdır ve içinde yer alan Database Migration Wizard modülü, SQLite veritabanlarını MySQL’e taşımayı kolaylaştırır.

      Sihirbazı Başlatalım

      Workbench arayüzünde “Database Migration” sekmesine girdikten sonra Source olarak “SQLite” seçelim ve .db dosyanızı gösterelim.

      Hedef Tanımlama

      Hedef olarak MySQL bağlantı bilgilerimizi girelim. Genellikle TCP/IP yöntemi ve port 3306 kullanılır Kullanıcı adı, parola ve veritabanı adı doğru tanımlandıktan sonra bağlantıyı test edip ilerleyelim.

      Şema ve Nesne Seçimi

      Workbench, SQLite yapısını analiz eder ve tabloları listeler. Burada yalnızca taşınmasını istediğiniz tabloları seçebilir veya tüm şemayı kopyalayabilirsiniz.

      Aktarım Seçenekleri

      Sihirbaz, iki yöntem sunar

      Veri Kopyalama

      Workbench, her tabloyu hedef MySQL yapısında yeniden oluşturur ve satırları aktarır.
      “Truncate target tables” seçeneği işaretliyse mevcut tablolar sıfırlanır, bu nedenle dikkatli kullanılmalıdır.

      Aktarım tamamlandığında Workbench bir rapor oluşturur. Her tablo için işlem süresi, satır sayısı ve hata durumu listelenir.

      Komut Satırıyla Manuel Taşıma

      Daha ileri düzey kullanıcılar, komut satırı üzerinden manuel bir dönüşüm gerçekleştirebilir.
      Bu yöntem özellikle büyük dosyalar veya otomasyon senaryoları için uygundur.

      SQLite Dump Oluşturma

      sqlite3 proje.db .dump > export.sql

      Bu komut, tablo yapısını ve verileri SQL komutlarına dönüştürür.

      SQL Dosyasını MySQL Formatına Uyarlama

      SQLite ile MySQL arasında küçük sözdizimi farkları vardır.

      • AUTOINCREMENT yerine AUTO_INCREMENT kullanılmalıdır.
      • INTEGER PRIMARY KEY MySQL’de yalnızca bir tablo başına tek olabilir.
      • PRAGMA komutları tamamen kaldırılmalıdır.

      MySQL’e Aktarma

      Bu komut, veritabanı yapısını ve verileri doğrudan MySQL’e taşır.

      Sık Sorulan Sorular

      FOREIGN KEY kısıtlamaları neden taşınmıyor?

      SQLite varsayılan olarak foreign key kontrolünü devre dışı bırakır. Bu nedenle PRAGMA foreign_keys=ON; komutu çalıştırılmadan oluşturulan ilişkiler, dump dosyasında yer almaz.

      MySQL tarafında ise foreign key aktif olarak kullanıldığı için taşıma sonrası tablo ilişkilerinin manuel olarak yeniden oluşturulması gerekebilir.

      UTF-8 karakterler MySQL’de bozuluyorsa sebebi nedir?

      SQLite verileri UTF-8 formatında saklarken, MySQL genellikle latin1 karakter seti kullanır. Sorunu çözmek için MySQL veritabanını utf8mb4_general_ci olarak oluşturup import sırasında aşağıdaki parametreyi ekleyin.

      Alternatif olarak, dosyayı Notepad üzerinden UTF-8 olarak kaydedip tekrar içe aktarabilirsiniz.

      SQLite’ta olmayan index yapısı MySQL’de nasıl optimize edilir?

      SQLite genellikle otomatik indeksleme yapmaz ve sorgular full scan yöntemiyle yürür. MySQL’e geçtikten sonra EXPLAIN komutuyla sorgu planı incelenmeli ve sık kullanılan sütunlara INDEX eklenmelidir.

      SQLite’tan MySQL’e geçişte en güvenli yöntem hangisidir?

      Küçük projeler için MySQL Workbench Migration Wizard en güvenli ve kolay seçenektir. Ancak büyük veya otomasyon gerektiren sistemlerde sqlite3 .dump + mysqlimport kombinasyonu, hız ve esneklik açısından daha profesyonel bir çözümdür.

      Hi, I’m Spesifik

      Bir yanıt yazın

      E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir