EMZETT.
Giriş yap

Kesintisiz veritabanı geçişleri (migration)

Kısaca: Canlı işletimdeki şema değişiklikleri, küçük ve geriye uyumlu adımlara bölünürse (“expand and contract”) kesinti olmadan başarılır.

Biraz daha ayrıntılı: Dağıtım sırasında eski ve yeni program sürümleri kısa süre aynı veritabanında yan yana çalışır. Şema ikisini de anlamalıdır.

Ayrıntılı

  • Expand: Eskiden hiçbir şeyi kaldırmadan yeni sütunlar veya tablolar ekle. Yeni sütunları null yapılabilir veya varsayılan değerli oluştur.
  • Migrate: Yeni program sürümü iki yere de (eski ve yeni) yazar. Mevcut verileri arka planda küçük gruplar hâlinde kopyala.
  • Contract: Ancak her şey geçirilip denetlendikten sonra, sonraki bir sürümde eskiyi kaldır.
  • Sütun yeniden adlandırma örneği: RENAME değil; yeni sütun oluştur, çift yaz, kopyala, okumaları geçir, eski sütunu sonra sil.
  • Tehlikeli komutlar: Veritabanına göre varsayılan değerli ADD COLUMN, indeks oluşturma (CREATE INDEX CONCURRENTLY kullan) veya tür değişiklikleri tüm tabloyu kilitler.
  • Geri dönüş: Her adım tek başına geri alınabilir olmalı. Geçişleri sürümle ve ardışık düzende çalıştır.
  • Araçlar: Flyway, Liquibase, Prisma Migrate, gh-ost (MySQL).

Ayrıca bak: İşlemler ve ACID