Uncategorized

SQLite Veritabanını MySQL Platformuna Taşıma Yöntemi

SQLite, basit ve hızlı yapısıyla küçük ölçekli uygulamalarda sıkça kullanılır. Ancak zamanla artan veri miktarı ve kullanıcı sayısı, VDS sunucular gibi daha gelişmiş altyapılara geçişi zorunlu hale getirir. Bu noktada, daha güçlü bir veritabanı motoru olan MySQL devreye girer. Bu yazıda, SQLite veritabanını MySQL’e dönüştürme sürecinde izlenecek en güvenli yöntemleri, kritik adımları ve veri kaybını önlemek için dikkat edilmesi gereken unsurları anlatıyoruz.

SQLite ve MySQL Arasındaki Temel Farklar

SQLite, tüm verilerin tek bir .db dosyasında tutulduğu dosya tabanlı bir veritabanı sistemidir. Uygulama, bu dosya üzerinde doğrudan işlem gerçekleştirir.

MySQL ise istemci-sunucu modeliyle çalışır ve bağımsız bir hizmet olarak ağ üzerinden birden fazla kullanıcıyı aynı anda destekler. Bu mimari, cPanel MySQL yapılandırmalarında yönetim sürecini kolaylaştırır. Ayrıca veri türü yönetimi açısından farklılıklar vardır: SQLite dinamik tipleme yapısıyla veriyi esnek biçimde işlerken, MySQL katı tip eşleşmesini zorunlu kılar.

Hazırlık Gereksinimleri

SQLite veritabanını MySQL’e aktarmadan önce, mevcut veritabanının tutarlılığını kontrol etmek gerekir. Bu işlem, aktarım sırasında oluşabilecek hataları önlemeye yardımcı olur.

Veri Bütünlüğü Kontrolü
Aşağıda yer alan komut, SQLite dosyasındaki yapısal bozulma veya tutarsızlıkları test etmek için kullanılır.

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 Veritabanını MySQL’e Aktarma

SQLite’den MySQL’e geçiş yaparken iki yöntemden biri tercih edilir: komut satırı aracıyla manuel aktarım veya MySQL Workbench‘in Göç Sihirbazı ile görsel taşıma. Komut satırı yöntemi teknik detaylara hâkim kullanıcılar için idealken, Workbench arayüzü daha rehberli bir süreç sunar.

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.

Bir yanıt yazın

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