Binlog neyi geri getirebilir?
MySQL binary log, veritabanında yapılan değişiklikleri kaydeder. Replikasyonun temel parçalarından biridir; aynı zamanda tam yedekten sonra yapılan işlemleri tekrar oynatmak için de kullanılabilir.
Yanlış işlemden önceki tam yedeğe dönüp, binlog’u olaydan hemen önceki ana kadar çalıştırırsanız belirli bir noktaya yaklaşabilirsiniz. Bu yaklaşım özellikle yanlış DELETE, yanlış UPDATE veya hatalı uygulama sürümü sonrası değerlidir.
- Binlog, tam yedeğin yerine geçmez; tam yedeği tamamlar.
- Hedef zaman veya pozisyon doğru seçilmezse hatalı işlem yeniden oynatılabilir.
- Saklama süresi kısa ise ihtiyacınız olan binlog dosyası çoktan silinmiş olabilir.
- Row tabanlı log çoğu geri dönüş senaryosunda daha güvenli iz bırakır.
Geri dönüş planı önce kopya ortamda denenir
Üretim veritabanına doğrudan binlog uygulamak tehlikelidir. Sağlıklı yaklaşım, ayrı bir hedef ortam açmak, son güvenilir yedeği buraya dönmek ve binlog’u hedef zamana kadar uygulamaktır. Sonra veri doğrulanır ve uygulama veya iş tarafıyla karar verilir.
Bu süreçte amaç “komut çalıştı” demek değildir. Asıl amaç, hatalı işlemin dışarıda kaldığını ve geçerli işlemlerin korunduğunu kanıtlamaktır.
mysqlbinlog ile hedef zamana kadar oynatma fikri
mysqlbinlog \ --start-datetime="2026-06-14 10:00:00" \ --stop-datetime="2026-06-14 10:42:10" \ mysql-bin.000123 mysql-bin.000124 \ | mysql --host=restore-target --user=restore_user --password appdb
Bu örnek üretime doğrudan uygulanmamalıdır. Önce ayrı bir geri yükleme hedefinde denenmelidir.
Binlog ne zaman yetmez?
Binlog bazı durumlarda tek başına yeterli değildir. Hatalı işlem çok geç fark edildiyse, binlog saklama süresi dolduysa, tam yedek bozuksa veya olay zamanında yoğun geçerli trafik varsa karar zorlaşır.
Ayrıca bazı DDL işlemleri, dış sistemlerle etkileşim ve uygulama tarafındaki yan etkiler yalnızca binlog’dan okunarak tamamen geri alınamaz. Örneğin ödeme sağlayıcısına gönderilen istek, e-posta veya dosya silme gibi etkiler ayrı ele alınmalıdır.
Geri dönüş kararını yazıya dökün
MySQL geri dönüşlerinde sözlü kararlar risklidir. Hangi yedeğin döndüğü, hangi binlog aralığının uygulandığı, hangi kayıtların kontrol edildiği ve hangi verinin kaybedilebileceği yazılmalıdır.
Bu not, olaydan sonra suçlu aramak için değil, bir sonraki olayda daha hızlı ve daha doğru karar almak için kullanılır.