Veritabanı Replication Öğrenirken Yaptığım Hatalar
Replication deneyiminizde en büyük sorun hangisi oldu?
Veritabanı replication kurduğum ilk gün, master sunucuda bir DELETE sorgusu çalıştı ve 20 dakika sonra slave'de de aynı veri silindi. Hiç yedek almamıştım. O gün öğrendim: replication, yedekleme değildir.
Bu yanlışlığa gelmeden önce başka hatalar yaptığım vardı. İlk projemde MySQL master-slave kurdum, okuma yükünü slave'e taşıdım, doğru fikir. Ama slave'i hiç izlemedim. Bir gün replication lag 2 saate çıktı, fark etmedim. Okuma yapan uygulamam eski veriyi gösteriyordu. Kullanıcı şikayet edince anladım.
İkinci hata: replication'ı güvenlik düşünerek kurmadım. Master ve slave arasında şifreli bağlantı yok, kimlik doğrulama minimal. Ağda paket yakalanabilirdi, slave yazma yetkisi kısıtlanmamıştı. Sonra bir geliştirici hata yapıp slave'e doğrudan INSERT attı, replication bozuldu.
Üçüncü: binary log yönetimini önemsememiştim. Master'da binlog'lar birikti, disk doldu. Veritabanı durdu. Sıfırdan başlamak zorunda kaldım.
Dördüncü hata daha sinsi: replication topology'sini yanlış tasarladım. Tek master, tek slave. Master çöktü, failover mekanizması yok. Uygulamalar bağlantı kuramadı. O gün öğrendim: iki slave, ya da master-master (dikkatli kullanılırsa) gerekiyormuş.
Beşinci: monitoring. Replication status'unu hiç kontrol etmemiştim. Seconds_Behind_Master'ı bilmiyordum. Bir gün slave'in binlog uygulaması durdu, kimse görmedi. Veri uyumsuzluğu fark edilene kadar 3 gün geçti.
Sonraki projelerde değiştirdim. Binary log konfigürasyonunu doğru yaptım, slave'de read_only=ON ayarladım, replication kullanıcısını minimal yetki ile oluşturdum. Monitoring araçları (Percona Monitoring, Prometheus) ekledim. Lag 5 saniyeyi geçerse uyarı gelecek şekilde. Yedekleme ayrı bir sistem oldu, replication'dan bağımsız.
Replication, yüksek erişilebilirlik ve okuma ölçeklendirmesi için güçlü bir araç. Ama kurulumu ve yönetimi basit değil. Başında hatalar yapacaksın; önemli olan onlardan hızlı öğrenmek ve tekrarlamamak. Replication'ı kurduğun ilk gün, yedek almayı unut, çünkü replication başarısız olacak ve veri kaybı yaşayacaksın.
4 yorum
monitoring olmasaydı o 2 saat ne olurdu biliyorsun değil mi, kullanıcılar eski veriyle işlem yapmaya başlardı. şimdi baktığında basit ama ilk kurulum yaparken herkes aynı tuzağa düşüyor, slave'i kopyala makine sanıyor.
ya işte monitoring fark ettirmiş olurdu ama ben de ilk başta slave okuma yaparsa yeterli diye düşündüm alarm kurma kafası olmadı
replication lag 2 saate çıktığını fark etmemek fena. Monitoring olmadan kurduğunuz için tabi geç görülüyor.
aynen slavei kopyala makine sanmak tam da benim hatam da