2016-10-31 3 views
0

Мне сложно определить, как настроить распределенную систему баз данных в MySQL. У меня 3 сервера, у каждой из них одна и та же модель базы данных. Я настроил их для использования репликации - так что есть 1 Master и 2 Slaves. Все работает нормально, но то, что я хочу сделать дальше, это «фильтровать» данные репликации.MySQL - репликация фильтра строк

Предположим, что у меня есть две таблицы: клиенты и продукты. Я хочу скопировать весь контент таблицы продуктов в оба подчиненных (и я получил эту часть), но хочу реплицировать клиентов из Европы в Slave1 и из Азии в Slave2. Итак, хозяин будет содержать всю информацию о клиентах, но рабов только часть ее. Как я могу это достичь?

Насколько я знаю, сама репликация не поддерживает такую ​​фильтрацию. Я не уверен, но похоже, что разделение также не является ответом.

Есть ли встроенный механизм в MySQL, который может помочь? Если нет, как бы вы разрешили эту ситуацию?

+0

Как решить проблему (или если есть другие варианты) зависит от вашей настройки и особенно от ваших требований, поэтому причина, по которой вы это делаете/чего хотите достичь, выполнив это. Например: можете ли вы жить, просто скрывая данные на разных ведомых устройствах, или вы делаете это для обеспечения конфиденциальности/сохранения возможностей полосы пропускания/оптимизации? Используете ли вы репликацию на основе выражений или строк? Являются ли ваши подчиненные только для чтения (так что изменения не вернутся к мастеру)? – Solarflare

ответ

0

Для этого вы должны использовать собственный способ чтения данных и на основе бизнес-логике добавить данные к ведомому 1 или ведомому 2.

Например, вы можете прочитать изменения в записи базы данных из Двоичного и Based на ваших входных данных вы можете сохранить его в разных подчиненных базах данных. Однако в этом может быть небольшая задержка.

Существует очень хорошая система, которая делает то же самое, то есть maxwell (https://github.com/zendesk/maxwell), который использует kafka для изменения события изменения базы данных с типом запроса и старыми и новыми данными. Теперь, исходя из этого, вы можете написать потребителю кафки для чтения данных и вставить их в свои подчиненные базы данных. maxwell использует репликатор binlog так же, как и репликатор Master/Slave, и является надежным.

 Смежные вопросы

  • Нет связанных вопросов^_^