Uzak ana bilgisayara salt okunur köle olarak işlev görecek bir MySQL sunucusu 5.1 örneği ile yapılandırılmış istemci PC'de (Win) çalışacak bir uygulama geliştiriyorum. Uzak ana şemaları düzinelerce vardır, ancak her istemci için yalnızca bir tane gerekir, bu yüzden sadece istemcinin ihtiyaç duyduğu şemayı çoğaltmak için my.ini çoğaltma-do-db ayarı sağlar. Çoğaltma çalışır, ancak müşterilerimiz, internet erişiminin yalnızca veri kullanımı ile şarj edilen 3G kablosuz üzerinden kullanılabildiği dünyanın bölgelerine girdiklerinde, veri planı sınırlarını hızla aşarlar ve pahalı problemlerle karşılaşırlar.
Anladığım kadarıyla, MySQL tüm şemaların tüm işlemlerini tek bir binlog dosyasına yazar, bu da her istemcinin anadaki her şemada gerçekleştirilen tüm işlemleri indirmesi ve ardından indirildikten sonra, çoğaltma başına veritabanı filtresini uygulaması gerektiği anlamına gelir. istemcinin my.ini dosyasındaki do-db ayarları.
Bu verimsizliği en aza indirmek için, iletilen verileri% 50 oranında azaltmış gibi görünen slave_compressed_protocol = 1 ayarını kullandım , ancak yine de müşterimizin 3G faturasının veri limitini hızla aşmasına neden oluyor.
Bunun karşı karşıya olduğum tek kişi olduğumu hayal edemiyorum, bu yüzden x = y ayarlayarak bunu başarmak için bir ton cevap alacağımdan eminim. Bununla birlikte, böyle bir ayarın herhangi bir dokümanı veya önerilen bir yaklaşım bulamıyorum.
Şimdiye kadar, olası bir çözüm hakkındaki düşüncem, lütfen geri bildirim veya alternatif rotalar sağlayın:
- Her şema için bir "proxy" bağımlı oluşturun (farklı bir kutuda veya farklı bir MySQL örneği / bağlantı noktasına sahip aynı kutuda)
- Proxy slave'i, istemcilerin çoğaltmak istediği tek veritabanını çoğalt-do-db olarak yapılandırın.
- İstemcinin MySQL örneğini uygun proxy slave'in slave'leri olarak yapılandırın.
Bu etmelidir istemci yalnızca kendi şeması için binlog verileri çekerek sonuçlanabilir. Olumsuz (söyleyebildiğim kadarıyla), kurulumumuzun karmaşıklığını önemli ölçüde artırması ve muhtemelen daha kırılgan hale getirmesidir.
Düşünceler? Bu yaklaşım işe yarayacak mı?
Not, RedHat üzerinde MySQL 5.0 sunucusunu çalıştırıyoruz, ancak bir çözüm üretiyorsa 5.5'e yükseltebiliriz.