Saya sedang mengembangkan aplikasi untuk dijalankan pada PC klien (Win) yang dikonfigurasi dengan server MySQL 5.1 contoh yang akan bertindak sebagai budak read-only ke master jarak jauh. Master jarak jauh memiliki puluhan skema, tetapi saya hanya perlu satu per klien sehingga saya menyediakan pengaturan replikasi-do-db di my.ini untuk hanya mereplikasi skema yang dibutuhkan klien. Replikasi bekerja, tetapi ketika klien kami masuk ke wilayah dunia di mana akses internet hanya tersedia melalui nirkabel 3G, yang membebani dengan penggunaan data, mereka dengan cepat melampaui batas paket data mereka dan mengalami masalah yang mahal.
Seperti yang saya pahami, MySQL menulis semua transaksi untuk semua skema ke dalam file binlog tunggal yang berarti bahwa setiap klien harus mengunduh semua transaksi yang dilakukan pada setiap skema pada master, kemudian setelah diunduh, terapkan filter database per replikasi- pengaturan do-db di file my.ini klien.
Untuk meminimalkan inefisiensi ini, saya telah menggunakan pengaturan slave_compressed_protocol = 1 , yang tampaknya mengurangi data yang ditransmisikan sebesar 50%, tetapi masih menyebabkan klien kami dengan cepat melebihi batas data mereka hingga tagihan 3G.
Saya tidak bisa membayangkan saya satu-satunya yang menghadapi ini, jadi saya yakin saya akan mendapatkan banyak jawaban tentang cara mencapai ini dengan menetapkan x = y. Namun, saya tidak dapat menemukan dokumentasi pengaturan semacam itu, atau pendekatan yang disarankan untuk diambil.
Sejauh ini, inilah pemikiran saya untuk solusi yang mungkin, berikan umpan balik atau rute alternatif:
- Menyiapkan slave "proxy" untuk setiap skema (pada kotak yang berbeda, atau kotak yang sama dengan instance / port MySQL yang berbeda)
- Konfigurasikan budak proksi untuk mereplikasi-do-db hanya satu basis data yang ingin ditiru klien.
- Konfigurasikan instance MySQL klien sebagai budak ke budak proxy yang sesuai.
Ini akan mengakibatkan klien hanya menarik data binlog untuk skema mereka. Kelemahannya (sejauh yang saya tahu) adalah bahwa itu secara dramatis meningkatkan kompleksitas pengaturan kami, kemungkinan membuatnya lebih rapuh.
Pikiran? Apakah pendekatan ini akan berhasil?
Catatan, kami menjalankan server MySQL 5.0 di RedHat, tetapi kami dapat memutakhirkan ke 5,5 jika menghasilkan solusi.