Veritabanı Replication Öğrenirken Yaptığım Hatalar

Anket

Replication deneyiminizde en büyük sorun hangisi oldu?

0 oy

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.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

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.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz
  • adlı kullanıcıya yanıt verdi
    kodkafasi

    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ı

  • phpenguen

    replication lag 2 saate çıktığını fark etmemek fena. Monitoring olmadan kurduğunuz için tabi geç görülüyor.