WHERE koşulu olmadan çalıştırılan hatalı bir UPDATE işlemi milyonlarca kaydı değiştirdi ve transaction log dosyasının hızla büyümesine yol açtı. Aryasoft, etkilenen verileri gecikmeli secondary replica üzerinden geri yükledi, Always On ortamını stabilize etti ve ana production sistemi kapatmadan ciddi VLF parçalanmasını giderdi.
etkilenmemiş gecikmeli kopya kullanılarak kurtarma boyunca production sistemi çalışmaya devam etti binlerce parçalanmış VLF’den düşürüldü Always On replikasyonu sağlıklı senkronizasyona döndü Rutin bir production veri bakım çalışması sırasında bir kullanıcı, iş açısından kritik ve büyük bir tabloda WHERE koşulu olmadan UPDATE komutu çalıştırdı. Milyonlarca kayıt aynı değerlerle değiştirildi ve etkilenen verilerin bütünlüğü bozuldu. Mantıksal veri hatası kısa sürede altyapı krizine dönüştü. Değiştirilen her satır transaction log üzerinde ek yük oluşturduğu için SQL Server log dosyası hızla büyüdü. Uygulama katmanındaki mevcut hatalı logging yapılandırması da gereksiz log hacmi üretiyor ve büyümeyi daha da hızlandırıyordu. Ana veri tabanı, olağan dışı büyüklükteki log akışını Always On Availability Group üzerinden Disaster Recovery replikasına göndermeye başladı. DR replikası synchronous commit modunda çalıştığı için büyüyen send queue ve geciken onaylar, ana production ortamındaki latency seviyesini artırdı. Replikasyon bağlantısı daha fazla bozulmadan önce müşteri acil destek için Aryasoft’a ulaştı. Tam veri tabanı restore işlemi kritik servislerin kapatılmasını gerektirecekti. Bu nedenle kurtarma sürecinin, etkilenen kayıtları düzeltirken ana sistemi çalışır durumda tutması ve log mimarisini stabilize etmesi gerekiyordu. Eksik WHERE koşulu milyonlarca satırı değiştirdi ve transaction log hacmini hızla artırarak hem ana veri tabanını hem de DR replikasyonunu yoğun baskı altında bıraktı. Etkilenen milyonlarca satırın, production veri tabanının tamamı önceki bir zamana döndürülmeden hızlıca geri yüklenmesi gerekiyordu. Aşırı yüklenen DR replikası onayları geciktiriyor, write latency seviyesini artırıyor ve uygulama performansını riske atıyordu. Tekrarlanan küçük auto-growth işlemleri binlerce Virtual Log File oluşturmuş; log işleme, backup ve replikasyon operasyonlarını yavaşlatmıştı. Aryasoft DR baskısını izole ederken, verileri geri yüklerken ve log sağlığını yeniden oluştururken production platformunun çalışmaya devam etmesi gerekiyordu. Aryasoft, ana sistemi DR onay baskısından ayırdı, temiz veriyi etkilenmemiş kopyadan geri aldı ve Availability Group yapısını yeniden synchronous çalışma moduna döndürmeden önce transaction log sağlığını yeniden oluşturdu. Aryasoft, ana sunucunun aşırı yüklenen uzak replikayı beklemeden transaction işlemeye devam edebilmesi için DR replikasını geçici olarak synchronous commit modundan asynchronous commit moduna aldı. Mimaride, hatalı UPDATE işlemini henüz uygulamamış ve bilinçli olarak geciktirilmiş bir secondary copy bulunuyordu. Aryasoft, bu kopyadaki etkilenmemiş kayıtları doğruladı ve UPDATE öncesi temiz veriyi çıkardı. Aryasoft, tüm veri tabanını restore etmek yerine doğrulanmış temiz veri setini kullanarak yalnızca değiştirilen satırları ana sistem üzerinde düzeltti. Etkilenmeyen transaction kayıtları ve production sürekliliği korundu. Aşırı log üreten uygulama süreci durduruldu. Ardından Aryasoft kontrollü log backup ve dosya bakım işlemleri gerçekleştirdi, transaction log dosyasını uygun başlangıç boyutuna getirdi ve küçük auto-growth değerlerini daha büyük, kontrollü artış ayarlarıyla değiştirdi. Veri bütünlüğü ve log sağlığı doğrulandıktan sonra kalan replikasyon kuyruğunun doğal şekilde boşalması sağlandı. Aryasoft replika sağlığını kontrol etti ve DR node’unu yeniden synchronous commit moduna aldı. SQL örnek amaçlıdır. Kurtarma adımları, dosya boyutları ve replika ayarları uygulanmadan önce ilgili production mimarisine göre doğrulanmalıdır. Hedefli kurtarma çalışması etkilenen kayıtları düzeltti, canlı production işlemlerini korudu ve Always On ortamını kararlı ve senkronize duruma geri getirdi. Temiz secondary copy sayesinde Aryasoft, etkilenmeyen production transaction kayıtlarını geri almadan veya tüm veri tabanını restore etmeden değiştirilen kayıtları geri yükledi. DR onay yolunun geçici olarak ayrılması, replikasyon baskısının production sisteminde kapanmaya veya uzun bir bakım penceresine yol açmasını önledi. VLF sayısı binlerce seviyesinden 50’nin altına düşürüldü. Transaction log işleme, backup operasyonları ve replikasyon verimliliği iyileştirildi. Kuyruk boşaldıktan ve sağlık kontrolleri tamamlandıktan sonra DR replikası kararlı veri akışı ve kurtarma hazırlığıyla yeniden synchronous commit moduna döndü. Temel Çıkarım Yüksek erişilebilirlik yapısı, doğru bir işlemi olduğu kadar hatalı bir değişikliği de hızlı biçimde replike edebilir. Kurtarma hazırlığı; korunan kopyalar, test edilmiş recovery prosedürleri, sağlıklı transaction log mimarisi ve veri düzeltme sürecini altyapı stabilizasyonundan ayırabilecek DBA uzmanlığı gerektirir.
Aryasoft; acil veri kurtarma, Always On Availability Groups, transaction log sağlığı, VLF optimizasyonu, backup, recovery ve disaster recovery planlaması alanlarında SQL Server ortamlarına destek verir.
SQL Server Always On Ortamında Hatalı UPDATE Sonrası Veri Kaybı Olmadan Kurtarma
Müşteri Hakkında
Arka Plan
WHERE Koşulu Olmayan Tek Bir UPDATE, Veri Bütünlüğünü ve DR Replikasyonunu Riske Attı
Zorluklar
WHERE Koşulu Olmayan Production UPDATE
SET VerificationStatus = 'Pending',
LastModifiedBy = 'System_Admin';
-- WHERE koşulu eksik
-- Milyonlarca satır değiştirildi
-- Transaction log hızla büyüyor
-- Always On send ve redo queue değerleri artıyor
Kritik Veriler Değiştirildi
Synchronous Replikasyon Baskısı
Ciddi VLF Parçalanması
Canlı Ortamda Kurtarma Gereksinimi
Çözüm
Hedefli Veri Kurtarma ve Always On Stabilizasyonu
DR Replikası Ana Sistemdeki Latency Baskısından Ayrıldı
Temiz Veriler Gecikmeli Kopyadan Alındı
Etkilenen Kayıtlar Canlı Ana Sistem Üzerinde Düzeltildi
Transaction Log ve VLF Mimarisi Yeniden Yapılandırıldı
Replikasyon Kuyruğu Boşaltıldı ve Senkronizasyon Geri Yüklendi
Örnek Kurtarma Akışı
ALTER AVAILABILITY GROUP [ProductionAG]
MODIFY REPLICA ON N'DR-Replica'
WITH (AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT);
-- Temiz kopyadan yalnızca etkilenen kayıtları doğrula ve geri yükle
UPDATE p
SET p.VerificationStatus = c.VerificationStatus,
p.LastModifiedBy = c.LastModifiedBy
FROM dbo.CustomerLedger p
INNER JOIN RecoverySource.dbo.CustomerLedger c
ON p.CustomerId = c.CustomerId
WHERE p.CustomerId IN ( /* doğrulanmış etkilenen anahtarlar */ );
-- Kontrollü transaction log bakımı
BACKUP LOG [ProductionDB]
TO DISK = 'X:\\SQLBackups\\ProductionDB_Recovery.trn';
DBCC SHRINKFILE (N'ProductionDB_log', 102400);
-- Log dosyasını önceden boyutlandır ve kontrollü auto-growth kullan
ALTER DATABASE [ProductionDB]
MODIFY FILE (NAME = N'ProductionDB_log', SIZE = 102400MB, FILEGROWTH = 1024MB);
-- Doğrulama sonrasında DR replikasını synchronous commit moduna döndür
ALTER AVAILABILITY GROUP [ProductionAG]
MODIFY REPLICA ON N'DR-Replica'
WITH (AVAILABILITY_MODE = SYNCHRONOUS_COMMIT);
Sonuçlar ve Kazanımlar
Ana Sistemde Kesinti Olmadan Veri Bütünlüğü ve DR Replikasyonu Geri Yüklendi
Etkilenen Veriler Eksiksiz Geri Yüklendi
Ana Sistem Çalışmaya Devam Etti
VLF Parçalanması Giderildi
DR Koruması Geri Yüklendi
Yüksek erişilebilirlik tek başına mantıksal veri hatalarına karşı koruma sağlamaz
SQL Server Always On Ortamınız Acil Kurtarma Senaryolarına Hazır mı?