GoArchive: MySQL İlişkisel Veri Arşivleme Çözümü
GoArchive, DBS Medya'nın geliştirdiği MySQL veri arşivleme çözümüdür. Birbiriyle ilişkili MySQL verilerinin kaynak ve arşiv sunucuları arasında güvenli biçimde taşınmasını yöneten bir veri yaşam döngüsü ürünüdür. Tek bir tabloyu bağımsız olarak işlemek yerine ana kayıtla birlikte ona bağlı bütün alt kayıtları keşfeder ve veri bütünlüğünü koruyan sırayla işler.
GitHub'da Görüntüle →Ne işe yarar
Eski siparişlerin, işlem geçmişlerinin, denetim kayıtlarının veya saklama süresi dolmuş verilerin üretim sisteminden çıkarılması çoğu zaman basit bir silme işleminden ibaret değildir. Bir ana kayda bağlı onlarca tablo bulunabilir. Kayıtların yanlış sırayla taşınması eksik arşive, yanlış sırayla silinmesi ise yabancı anahtar hatalarına veya sahipsiz kayıtlara yol açabilir. GoArchive, ilişkisel veri yapısını arşivleme sürecinin merkezine alarak bu operasyonları öngörülebilir ve denetlenebilir hâle getirir.
Arşivleme yedeklemeden farklıdır. Yedek, üretim verisinin kurtarma amaçlı kopyasıdır ve üretim tablolarını küçültmez. Arşivleme, soğuk veriyi üretim sisteminden çıkarır ve ayrı bir sunucuda erişilebilir tutar.
GoArchive, MySQL InnoDB tablolarındaki soğuk verileri arşivlemek, ilişkili kayıtları başka bir MySQL sunucusuna kopyalamak veya artık tutulması gerekmeyen verileri kontrollü biçimde temizlemek için geliştirilmiştir. İlişkisel veriler üzerinde üç temel operasyon yürütür.
Arşivleme
Seçim koşuluna uyan ana kayıtlar ve onlara bağlı alt kayıtlar hedef MySQL sunucusuna kopyalanır. Standart iş akışında kopyalanan veri satır sayısı veya SHA256 özetiyle doğrulandıktan sonra kaynak kayıtlar güvenli bağımlılık sırasıyla silinir.
Yalnızca kopyalama
İlişkili veri kümesi hedef sunucuya aktarılır ancak kaynak veriler silinmez. Arşiv altyapısının hazırlanması, kontrollü veri çoğaltma ve hedef ortamın doğrulanması gibi senaryolarda kullanılabilir.
Kontrollü temizleme
Kaynak veriler başka bir sunucuya kopyalanmadan, ilişkiler dikkate alınarak silinir. Bu çalışma biçimi özellikle geçici veya saklama süresi dolmuş verilerin temizlenmesi için uygundur ve dikkatli bir ön doğrulama gerektirir.
MySQL’de ilişkisel veriler nasıl arşivlenir?
GoArchive, her işi kopyalama ve silme başlamadan önce doğrulanan aşamalı bir süreçle yürütür.
- Yapılandırmayı, tablo yapılarını, birincil anahtarları, yetkileri, yabancı anahtarları, indeksleri ve tetikleyicileri ön denetimden geçirir.
- Tanımlanan ilişkilerden bir bağımlılık grafiği oluşturur ve tabloların güvenli işlem sırasını belirler.
- Seçim koşuluna uyan ana kayıtları yapılandırılabilir batch büyüklükleriyle işler ve ilişkili alt kayıtları katmanlar halinde keşfeder.
- Verileri hedef sunucuya ana kayıttan alt kayıtlara doğru kopyalar.
- Kopyalanan veriyi satır sayısı veya SHA256 doğrulamasıyla kaynak veriyle karşılaştırır.
- Doğrulama başarılı olduğunda kaynak kayıtları alt tablolardan ana tabloya doğru siler.
- İşlem durumunu kalıcı kontrol noktalarında saklar ve kesinti sonrasında tamamlanmamış işi kaldığı yerden sürdürebilir.
Gerçek işlem başlatılmadan önce ilişki planı görüntülenebilir, yapılandırma
doğrulanabilir ve dry-run ile işlenecek kayıt sayıları incelenebilir. Önerilen
operasyon akışı validate, dry-run ve archive adımlarından oluşur. Kurulum,
iş tanımı ve komut ayrıntıları
ürün dokümantasyonunda
yer alır.
Sakila üzerinde uçtan uca örnek:
MySQL’de eski verileri arşivleme rehberi
Özellikler ve Yetenekler
İlişkisel veri bütünlüğünü korur
GoArchive, ana kayıt ile ona bağlı kayıtları aynı arşivleme kapsamı içinde ele alır. Otomatik bağımlılık sıralaması, kopyalama sırasında alt kayıtların sahipsiz kalmasını ve silme sırasında yabancı anahtar hatalarının oluşmasını önlemeye yardımcı olur. Arşiv kapsamı dışındaki bir tablodan içeriye yönelen yabancı anahtarlar ön denetimde belirlenir ve riskli işlem başlamadan durdurulur.
Üretim verisini kontrollü küçültür
Eski ve seyrek erişilen kayıtların ayrı bir arşiv sunucusuna taşınması, üretim tablolarındaki veri hacmini azaltmaya yardımcı olur. Daha küçük aktif veri kümeleri bakım çalışmalarını kolaylaştırır, indekslerin yönetilebilir kalmasını destekler ve büyüyen tabloların operasyonel maliyetini sınırlar.
Silme öncesinde doğrular
Doğrulama etkin olduğunda kaynak veriler, hedefe ulaştığı doğrulanmadan silinmez. Satır sayısı karşılaştırması hızlı bir operasyonel kontrol sağlar, SHA256 yöntemi daha ayrıntılı veri doğrulaması sunar. Beklenmeyen bir fark tespit edildiğinde silme aşaması başlatılmaz.
Kesinti sonrası sürdürür
Kalıcı iş ve kayıt durumları, yarıda kalan arşivleme çalışmalarının yeniden başlatılabilmesini sağlar. Daha önce tamamlanan kayıtlar gereksiz yere yeniden işlenmez ve uzun süren operasyonlar kesinti sonrasında kontrollü biçimde devam eder.
Üretim yükünü ve replikasyonu gözetir
Yapılandırılabilir batch büyüklükleri, silme parça büyüklükleri ve bekleme süreleri kaynak ile hedef sunucudaki yükün iş gereksinimlerine göre dengelenmesini sağlar. İsteğe bağlı replikasyon kontrolü, izlenen replikalardan biri geciktiğinde, durduğunda veya erişilemez olduğunda işi bekletir ve replika grubu sağlıklı duruma geldiğinde aynı çalışmayı otomatik olarak sürdürür.
Tekrarlanabilir operasyon standardı oluşturur
Arşiv işleri, seçim koşulları ve tablo ilişkileri YAML dosyalarında açık biçimde tanımlanır. Planlama, doğrulama, deneme ve gerçek çalıştırma komutlarının ayrılması değişiklik yönetimini kolaylaştırır. Yapılandırılmış loglar ve iş takip tabloları operasyonun incelenebilirliğini artırır.
Öne çıkan özellikler
Yabancı anahtar farkındalığı
1:1 ve 1:N ilişkiler için bağımlılık grafiği oluşturur, güvenli kopyalama ve silme sırasını otomatik belirler.
Kapsam bütünlüğü denetimi
Arşiv kümesine dışarıdan bağlanan yabancı anahtarları tespit ederek eksik tanımlanmış işlerin çalışmasını engeller.
Kopyalama sonrası doğrulama
Kaynak ve hedef verileri satır sayısı veya SHA256 yöntemiyle karşılaştırır.
Ön denetim kontrolleri
Tablo varlığı, InnoDB kullanımı, birincil anahtar yapısı, hedef şema uyumluluğu, gerekli yetkiler, indeksler ve tetikleyiciler gibi kritik koşulları veri hareketinden önce değerlendirir.
Kesinti sonrası devam
Her ana kayıt için işlem durumunu ve ilerleme bilgisini MySQL üzerinde saklar.
Batch tabanlı işleme
Kopyalama ve silme yoğunluğunun yapılandırma üzerinden ayarlanmasını sağlar.
Replikasyon koruması
Birden fazla replika ve replikasyon kanalının sağlık durumunu izleyerek gecikme sınırı aşıldığında işi bekletir.
Eşzamanlı çalışma koruması
MySQL danışma kilitleri ve iş durumu kontrolleriyle aynı veri kapsamındaki çakışan operasyonları engellemeye yardımcı olur.
Plan ve dry-run seçenekleri
İlişki ağacını, işlem sırasını, seçim koşulunu ve tahmini kayıt sayılarını değişiklik yapmadan gösterir.
Operatör kontrollü duraklatma
Sentinel dosyası üzerinden çalışan işin güvenli bir işlem sınırında bekletilmesini ve yeniden devam ettirilmesini sağlar.
Düzenli kapanma
SIGTERM ve SIGINT sinyallerinde çalışmayı batch sınırında durdurur ve devam edilebilir durumu korur.
Yapılandırılmış loglama ve ilerleme görünümü
Metin veya JSON formatında log üretir, isteğe bağlı olarak tamamlanma oranı ve tahmini süre bilgisi sunar.
Kullanım alanları
GoArchive teknik bir veri yaşam döngüsü aracıdır. Tek başına KVKK, GDPR veya başka bir mevzuata uyumluluk sağlamaz. Hukuki saklama ve silme kuralları kurumun yetkili ekipleri tarafından belirlenmeli, GoArchive işleri bu kurallara göre yapılandırılmalıdır.
Sipariş ve işlem geçmişi
Eski sipariş, ödeme, hareket ve işlem geçmişlerinin arşiv sunucusuna taşınması.
Soğuk verinin ayrıştırılması
Büyüyen üretim tablolarındaki soğuk verinin ayrıştırılması.
Saklama politikaları
Kurumsal veri saklama politikaları kapsamında saklama süresi dolan kayıtların işlenmesi.
Kişisel verilerin silinmesi
Kişisel verilerin silinmesi veya arşivlenmesine ilişkin teknik süreçlerin uygulanması.
Test ve geçiş ortamları
Test, geçiş veya arşiv ortamlarına ilişkisel veri alt kümelerinin kopyalanması.
Geçici ve tarihsel veri
Geçici ve tarihsel verilerin yabancı anahtar bütünlüğü korunarak temizlenmesi.
Ürün sürümleri
Community sürümü GitHub üzerinden MIT lisansıyla yayımlanır, kurumsal sürüm ayrıca sunulur.
Community sürümü
GitHub üzerinden MIT lisansıyla yayımlanan Community sürümü, GoArchive'ın temel arşivleme altyapısını açık kaynak olarak sunar. İlişkisel veri keşfi, bağımlılık sıralaması, kopyalama, doğrulama, silme, kesinti sonrası devam ve replikasyon kontrolü Community sürümünde yer alır. Go ile geliştirilir, komut satırı odaklı yapısı mevcut bakım prosedürlerine ve kontrollü otomasyon süreçlerine dâhil edilebilir. Kaynak kodun incelenebilmesi, ürünün çalışma biçiminin teknik ve güvenlik gereksinimleri doğrultusunda değerlendirilmesini sağlar.
Community çalışma kapsamı
MySQL 8.0.40 ve sonrasındaki InnoDB tablolarını destekler. Arşivlenecek tablolarda tek sütunlu birincil anahtar bulunması gerekir, ana tablonun birincil anahtarı tamsayı türünde olmalıdır. 1:1 ve 1:N ilişkiler ile soğuk veri üzerinde çalışmak üzere tasarlanmıştır. Çok sütunlu birincil anahtarlar, N:M ilişkiler, kendi kendine referans veren tablo hiyerarşileri ve yoğun güncelleme alan sıcak veri kümeleri kapsam dışındadır. Üretimdeki ilk çalıştırmadan önce yapılandırma temsili veriler içeren bir test ortamında doğrulanmalı, dry-run çıktısı incelenmeli ve geçerli yedekler hazır tutulmalıdır.
Kurumsal sürüm
Kurumsal GoArchive ürünü, Community sürümünün sunduğu temel veri arşivleme yaklaşımını kurumların daha geniş operasyonel gereksinimlerine göre geliştirir. Kurumsal sürüme özel işlevler, entegrasyonlar ve hizmet seçenekleri Community sürümünden ayrı olarak sunulur. Kurumsal sürümün özellikleri, yayımlanan sürüm ve lisans paketine göre açık biçimde belirtilir.
