MySQL Replication (3 мастера, 1 подчиненный) - PullRequest
3 голосов
/ 04 мая 2011

Я сейчас нахожусь в процессе настройки репликации MySQL.

Мне нужно получить данные из трех мест.

Так, например, у меня есть

НУЖНЫ ЭТИ ДАННЫЕ
сервер1 - база данных1
сервер2 - база данных2
сервер3 - база данных3

ХРАНЕНИЕ ДАННЫХ ЗДЕСЬ
сервер4 - база данных4

Мне это нужно для составления отчетов.

Я читал, вы не можете подключиться к более чем одному мастеру. Таким образом, с учетом сказанного я собираюсь попробовать топологию "master-chain", потому что я думаю, что понимаю, что происходит с этой

Таким образом, поток данных будет выглядеть так

server1 -> server2 -> server3 -> server4

server2 и server3 будут иметь механизмы хранения данных в черной дыре для реплицированных баз данных, поэтому мы на самом деле не храним информацию на этих серверах, но информация все еще записывается в двоичный журнал так что все утверждения будут сокращаться, чтобы поддерживать server4 в актуальном состоянии.

Я правильно понимаю?

1 Ответ

2 голосов
/ 05 мая 2011

Это будет работать, но это не самая лучшая реализация и может вызвать проблемы в будущем. Прежде чем добавить новую таблицу на server1 или server2, вам нужно будет создать таблицы BLACKHOLE на последующих серверах, в противном случае вы получите настоящие таблицы. Я думаю, вы могли бы обойти это, написав скрипт, который запускается на server2 и server3 каждую ночь, который ищет любые таблицы, не являющиеся черными дырами, и запускает ALTER TABLE, чтобы преобразовать их в BLACKHOLE таблицы.

Вам нужны данные отчетности, чтобы быть в курсе? Если нет, я бы порекомендовал выбросить всю эту идею и просто периодически извлекать дампы данных на сервер4, как требуется.

edit: (на следующий день) После некоторых размышлений я думаю, что если бы это был я, я, вероятно, посмотрел бы на запуск трех отдельных экземпляров MySQL на server4 каждый из них как прямой раб одного из серверов.

При таком подходе репликация отсутствует цепочка , настройка репликации намного проще / нормальна, и каждая пара дБ является самодостаточной.

Легко и довольно нормально запускать несколько экземпляров MySQL, есть даже инструмент под названием mysqld_multi , который поможет вам настроить его.

...