Kurumsal veritabanı yönetiminde, yüz milyonlarca satır barındıran canlı bir üretim tablosunda ALTER TABLE komutu çalıştırmak en riskli operasyonlardan biridir.

Tek bir yanlış adımda veritabanı motoru tabloyu kilitler (AccessExclusiveLock veya FLUSH TABLES WITH READ LOCK). Saniyeler içinde gelen tüm yazma ve okuma işlemleri iş parçacığı (thread) kuyruklarında birikir, bağlantı havuzları tükenir, yanıt süreleri tavan yapar ve izleme panelleri kesinti alarmlarıyla kırmızıya boyanır.

Yıllarca kıdemli veritabanı yöneticileri (DBA), gh-ost veya pt-online-schema-change gibi terminal tabanlı karmaşık komut satırı araçlarına sığındı. Bu araçlar hassas kabuk betikleri, derin binlog yapılandırması ve sürekli manuel denetim gerektiriyordu.

SQLOZ OzOSC (Online Schema Change) ile uygun MySQL ve MariaDB şema değişiklikleri, canlı sağlık denetimleri, doğrulanmış yedekleme ve açık onay süreçleriyle macOS üzerinde görsel bir iş akışıyla yönetilir.


1. Klasik ALTER TABLE Canlı Üretimi Neden Kilitler?

Modern MySQL (InnoDB) ve PostgreSQL sürümlerinde dahi belirli şema geçişleri tamamen kesintisiz gerçekleştirilemez:

  • Karmaşık varsayılan değerlere sahip kolonlar ekleme veya NULL olma durumunu değiştirme.
  • Yüksek hacimli tablolarda yeniden indeksleme veya birincil anahtarı (Primary Key) değiştirme.
  • Kolon veri tiplerini dönüştürme (ör. INT -> BIGINT).
  • Tablo bölümlerini (partition) yeniden düzenleme.

Standart bir geçiş aracı ALTER TABLE siparisler ADD COLUMN ... çalıştırdığında motor tabloyu kilitler, diskte yeni bir fiziksel kopya oluşturur, tüm satırları kopyalar ve bu sırada uygulama trafiğini engeller. 500 GB’lık bir tabloda bu durum saatler süren kabul edilemez bir kesintiye dönüşür.


2. Sıfır Kesintili Şema Değişiminin Mantığı

Bir tabloyu kilitlemeden dönüştürmek için gölge tablo protokolü uygulanır:

┌─────────────────────────────────────────────────────────────┐
│ 1. GÖLGE TABLO OLUŞTURMA                                    │
│ SQLOZ gölge tabloyu açar: _siparisler_ozosc_shadow          │
│ İstenen şema modifikasyonlarını bu boş şemaya uygular.      │
└──────────────────────────────┬──────────────────────────────┘
                               │
                               ▼
┌─────────────────────────────────────────────────────────────┐
│ 2. ÇİFT YAZMA VE ARKA PLAN VERİ AKIŞI                       │
│ - Canlı trafik ana tabloya kesintisiz yazmaya devam eder.   │
│ - Değişiklikler gölge tabloya eşzamanlanır.                 │
│ - SQLOZ geçmiş kayıtları uyarlamalı parçalarla aktarır.     │
└──────────────────────────────┬──────────────────────────────┘
                               │
                               ▼
┌─────────────────────────────────────────────────────────────┐
│ 3. ATOMİK TAKAS (MİLİSANİYE SEVİYESİNDE DEĞİŞİM)            │
│ RENAME TABLE siparisler TO _siparisler_eski,                │
│              _siparisler_ozosc_shadow TO siparisler;        │
│ [Son takas canlı kontroller ve açık onay sonrası tamamlanır]│
└─────────────────────────────────────────────────────────────┘

3. SQLOZ OzOSC’nin Sağladığı Güvenlik Önlemleri

SQLOZ, üretim veritabanınızın sağlığını her şeyin üzerinde tutar:

  1. Replikasyon Gecikmesi Koruması: Okuma replikalarındaki gecikme belirlenen eşiği (ör. 2 saniye) aşarsa kopyalama hızı otomatik düşürülür veya duraklatılır.
  2. Kilit Ağacı Analizi (OzLockTree): Tablo takasından hemen önce açık bekleyen uzun süreli transaction’lar tespit edilir ve deadlock riski önlenir.
  3. Tek Tıkla Güvenli Geri Alma: Beklenmeyen bir hata anında gölge tablo temizlenir ve orijinal canlı tabloya hiçbir müdahale yapılmadan süreç iptal edilir.