MySQL çoğaltma mekanizmasındaki otomatik artış farkı veri tutarsızlığına yol açtı
Öne çıkanlar
- MySQL'de ALTER TABLE ile otomatik artan sütun eklemek, ana ve yedek sunucularda farklı kimlik sıralamalarına yol açabiliyor.
- MIXED ikili günlük modu, otomatik artan sütun içeren tablolarda sorgu bazlı yerine satır bazlı kopyalamaya geçiş yaptı.
- Farklı kopyalama modları nedeniyle ilişkili tablolardan biri yanlış kimlik değerlerini doğrudan ana sunucudan kopyaladı.
Bir yazılım geliştiricisi, destek süresi dolan MySQL veritabanını güncellerken çoğaltma (replikasyon) ve ikili günlük (binary log) mekanizmalarının beklenmedik bir davranışıyla karşılaştı. Yeşil-mavi geçiş yöntemiyle yedek sunucuya geçildikten sonra, belirli bir tablodaki otomatik artan kimlik numaralarının (AUTO_INCREMENT) ana sunucu ile yedek sunucuda farklı sıralandığı tespit edildi.
Sorunun kaynağının, daha önce bir tabloya eklenen otomatik artan birincil anahtar sütunu olduğu belirlendi. MySQL belgelerine göre, mevcut bir tabloya ALTER TABLE komutuyla otomatik artan sütun eklenmesi durumunda, satırların işlenme sırasına bağlı olarak ana sunucu ve çoğaltma sunucusundaki kimlik değerleri birbirinden farklı olabiliyor. Bu durum, yedek sunucuda satır kimliklerinin kaymasına zemin hazırladı.
İkili günlük biçiminin MIXED olarak ayarlanması ise veri tutarsızlığını daha karmaşık bir boyuta taşıdı. İlgili altı tablodan beşinde yapılan güncellemeler STATEMENT biçimiyle çoğaltılarak yedek sunucudaki yerel kimliklerle eşleşti. Kendi bünyesinde de otomatik artan sütun barındıran altıncı tablo ise MySQL tarafından güvenli bulunmayarak ROW biçiminde çoğaltıldı; bu nedenle ana sunucudaki kimlik değerleri doğrudan kopyalandı ve ilişkili verilerin yanlış satırlara bağlanmasına yol açtı.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.