Ana içeriğe atla
SQLOZ
Bölüm 17 DBA ve Canlı Sistem Güvenliği

Bölüm 17: OzOSC - Sıfır Kesintili Şema Değişiklikleri

Bilgi: Bu bölüm, OzOSC (Online Schema Change) tasarımını ve mevcut destek sınırını açıklar. Yerel yürütme ve kurtarma kontrolleri, canlı güvenlik kontrolleri ve açık onay koşuluyla desteklenen MySQL ve MariaDB tabloları için mevcuttur.

Bu bölümde:

17.1 Genel Bakış

Büyük, canlı bir tablo üzerinde standart ALTER TABLE komutunu çalıştırmak şu riskleri yaratır:

  1. Tablo kilidi: Veritabanı motoru tabloyu okuma ve yazmaya kapatır.
  2. Hizmet kesintisi: Uygulama veritabanına yazamaz ve kullanıcı istekleri zaman aşımına uğrar (downtime).
  3. Yüksek risk: İşlem uzun sürebilir ve yarıda kesilirse veritabanını bozabilir.

OzOSC plan incelemesi; canlı, salt okunur bağlantı, meta veri, sunucu kimliği ve primary key kontrollerini gerçekleştirir. Korumalı yürütme yolu, doğrulanmış bir yedek oluşturur, plana ait bir shadow tablo hazırlar, satırları chunk’lar halinde kopyalar ve canlı kontroller geçtikten sonra atomik takası yapar. Eksik veya belirsiz kanıt, fail-closed (hata kapalı) konumda kalır.

17.2 Mevcut destek durumu

OzOSC şu anda, doğrulanmış primary key ve desteklenen meta veriye sahip uygun tablolar için yerel MySQL/MariaDB yolunu destekler. SQLite ve PostgreSQL bu yerel OSC yolunu kullanmaz. Desteklenmeyen generated column, foreign key veya mevcut trigger içeren tablolar, inceleme sırasında reddedilir. Yürütmeden önce açık yıkıcı işlem onayı, bir kurtarma planı ve veritabanı satıcısının gerçek kapasitesi hâlâ doğrulanmalıdır.

17.3 Planlanan işlem

[ Canlı Tablo: orders ] --(Trigger delta kopyası)--> [ Shadow Tablo: _orders_sqloz_osc ]
   (Canlı okuma/yazma devam eder)                      (ALTER TABLE uygulandı)
                                                                |
                                                    (Atomik tablo takası − 1 ms)
                                                                v
                                                  [ Canlı Yeni Tablo: orders ]

Bunlar, korumalı yürütme aşamalarıdır. Yıkıcı aşamalar yalnızca tüm güvenlik kanıtları doğrulandıktan sonra çalışır:

  1. Shadow tablo oluşturma: Uygunluk ve yedek kanıtından sonra, hedefe özdeş boş bir plana ait shadow tablo oluşturulur.
  2. Shadow’a şema değişikliği uygulama: ALTER TABLE, canlı tablo yerine boş shadow tabloya uygulanır (milisaniyeler sürer).
  3. Trigger’larla delta senkronizasyonu: Kopyalama sırasında canlı tablodaki INSERT, UPDATE ve DELETE işlemlerini shadow’a yansıtan geçici trigger’lar kurulur.
  4. Chunk’lı veri kopyalaması: Mevcut veriler, uygulamalar kesintisiz okuma ve yazma sürdürürken shadow’a chunk’lar halinde taşınır.
  5. Atomik tablo takası: Kopyalama ve son delta doğrulamasının ardından, plana ait tablolar atomik olarak takas edilmeden önce günlük ve canlı şema kanıtı yeniden kontrol edilir. Önceki canlı tablo, doğrulanmış temizleme aşaması tamamlanana kadar saklanır.

Uygulama kesintiye uğrarsa OzOSC panelinde Kurtarmayı Yenile’yi açın. Panel yalnızca dayanıklı envanter tarafından kanıtlanan eylemi sunar:

  • Temizlemeyi tamamla, kanıtlanmış bir takas sonrasında temizlemeyi bitirir.
  • Takası uzlaştır, canlı kimlik ve düzen kontrollerinden sonra istenen bir yeniden adlandırmayı ilerletir.
  • Kopyalamayı sürdür, doğrulanmış yedek, şema, trigger’lar, yardımcılar ve imleç durumuyla checkpoint destekli, takas öncesi bir kopyalamayı sürdürür.
  • Hazırlığı iptal et, açık onay gerektirir ve yalnızca tamamen kanıtlanmış, plana ait takas öncesi eserleri kaldırır; kaynak tabloyu ve doğrulanmış yedeği korur, kaynak tabloyu asla silmez.

Bozuk, eksik veya belirsiz dayanıklı kayıtlar, engellenmiş tanılama olarak görünür. Manuel araştırma gerektirir ve sessizce yeniden denenmez veya tamamlanmış olarak kabul edilmez.

Uyarı: MySQL/MariaDB DDL, genel transaction rollback’i desteklemez. OzOSC sıfır downtime veya otomatik temizleme garantisi vermez. Başarısız veya belirsiz bir kanıt işlemi engeller ve manuel kurtarma gerektirebilir.

17.4 Canlı İlerleme Takibi

Yürütme sırasında panel şunları gösterir:

  • Canlı kopyalama hızı (Satır/sn): Saniyede kaç satırın taşındığı.
  • Tahmini kalan süre (ETA): İşlemin ne zaman tamamlanacağı.
  • İptal: İptal, atan işleme iletilir ve panel temizleme veya kurtarma sonucunu açıkça raporlar.

Uyarı: OzOSC yalnızca belirtilen tablo üzerinde çalışır. Shadow tablo adlarına veya kopyalama parametrelerine müdahale etmeyin; işlem sırasında diğer ALTER komutları çakışmalara neden olabilir.

Bu bölüm, uygulanan yolu ve güvenlik sınırını belgeler. Canlı uçtan uca bir production çalışmasının yayın QA’sından geçtiğini iddia etmez; yayın kabulü, gerçek SQLOZApp kullanıcı arayüzünde doğrulama gerektirir.

İlgili Konular