Синхронизация определенных таблиц между двумя уже реплицирующимися кластерами MySQL
У меня есть кластер MySQL с круговой репликацией и более новый кластер экземпляров Percona XtraDB, к которому мы сейчас переходим. Во время переезда мы выполняем несколько проектов в старом кластере и другие проекты в новом кластере.
Я хотел бы, чтобы старый кластер копировал изменения для большинства таблиц в одной конкретной базе данных на новый кластер. К сожалению, binlog содержит изменения для каждой таблицы в каждой базе данных, и, похоже, нет способа компилировать разные наборы binlogs.
Есть ли разумный способ реплицировать только определенные таблицы отдельно от ранее существовавшей циклической репликации? Кластеры находятся в отдельных центрах обработки данных с разными поставщиками, поэтому я не хочу отправлять весь binlog по проводам, когда мне нужна только его малая часть.
1 ответ
Итак, подход, который я выбрал, был довольно запутанным и основывался в основном на http://www.jroller.com/dschneller/entry/mysql_replication_using_blackhole_engine.
Я запустил второй экземпляр MySQL на одной из машин старого кластера через порт 3307, запустив механизм BLACKHOLE, а не InnoDB. Он глотает binlogs и выплевывает свои собственные, отфильтрованные с помощью binlog-do-db
, replicate-ignore-table
, а также replicate-do-db
, Эти огромные блоки памяти попадают на один из серверов в новом кластере, и все устраивает.