Я розробляю програму для запуску на клієнтському ПК (Win), налаштованому на сервер MySQL 5.1 екземпляра, який буде виконувати функції невідомого доступу для віддаленого майстра. У віддаленого майстра є десятки схем, але мені потрібна лише одна на клієнта, тому я надаю налаштування реплікації do-db в my.ini, щоб лише повторити схему, необхідну клієнту. Реплікація працює, але коли наші клієнти потрапляють у регіони світу, де доступ до Інтернету доступний лише через 3G бездротовий зв’язок, який заряджається за допомогою даних, вони швидко перевищують обмеження свого плану даних та стикаються з дорогими проблемами.
Як я це розумію, MySQL записує всі транзакції для всіх схем у єдиний файл binlog, а це означає, що кожен клієнт повинен завантажувати всі транзакції, які виконуються на кожній схемі на майстер, а потім після завантаження застосувати фільтр баз даних на кожну реплікацію- налаштування do-db у файлі my.ini клієнта.
Щоб мінімізувати цю неефективність, я застосував налаштування slave_compression_protocol = 1 , яке, здається, зменшує передані дані на 50%, але все ж змушує нашого клієнта швидко перевищувати ліміт даних, що збільшує рахунок 3G.
Я не можу уявити, що я єдиний, хто стикається з цим, тому я впевнений, що отримаю багато відповідей, як цього досягти, встановивши x = y. Однак я не можу знайти жодної документації такого налаштування, ні рекомендованого підходу.
Поки, ось моя думка про можливе рішення, будь ласка, надайте зворотній зв'язок або альтернативні маршрути:
- Налаштуйте підлеглий "проксі" для кожної схеми (в іншому вікні або в тому ж полі з іншим екземпляром / портом MySQL)
- Налаштуйте підлеглий проксі-сервер для реплікації do-db лише тієї бази даних, яку клієнти хочуть копіювати.
- Налаштуйте екземпляр MySQL клієнта як веденого до відповідного підлеглого проксі.
Це повинно призвести до того, що клієнт лише витягує дані binlog для своєї схеми. Мінусом (наскільки я можу сказати) є те, що він різко збільшує складність нашого налаштування, ймовірно, робить його більш крихким.
Думки? Чи навіть такий підхід спрацює?
Зауважте, ми запускаємо сервер MySQL 5.0 на RedHat, але ми можемо оновити до 5.5, якщо він виробляє рішення.