Может ли MySQL slave быть одновременно ведущим?


17

Я нахожусь в процессе миграции 2 серверов БД (Master и Slave) на два новых сервера БД (Master и Slave)

DB1 - Мастер (производство)

DB2 - Slave (производство)

DB3 - Новый Мастер

DB4 - Новый Раб

В настоящее время у меня есть репликация, настроенная как:

DB1 -> DB2
DB3 -> DB4

Чтобы реплицировать производственные данные на новые серверы, я бы хотел, чтобы они были «последовательно соединены», чтобы они выглядели так:

DB1 -> DB2 -> DB3 -> DB4

Это возможно? Когда я работаю show master status;на DB2 (ведомый продукт), возможности binlog никогда не меняются:

+ ------------------ + ---------- + -------------- + ---- -------------- +
| Файл | Должность | Binlog_Do_DB | Binlog_Ignore_DB |
+ ------------------ + ---------- + -------------- + ---- -------------- +
| mysql-bin.000020 | 98 | | |
+ ------------------ + ---------- + -------------- + ---- -------------- +

Я немного сбит с толку относительно того, почему положение binlog не меняется в DB2, в идеале это будет мастер для DB3.

Ответы:


16

Binlog on DB2не обновлял ведомые обновления. Для последовательной репликации необходимо установить log-slave-updatesв my.conf.

http://dev.mysql.com/doc/refman/5.1/en/replication-options-slave.html#option_mysqld_log-slave-updates


Но затем вы записываете журналы дважды, один раз в релейные журналы и один раз в файлы binlog. Почему бы не выполнить репликацию из ведомого устройства с помощью релейных журналов?
hpaknia

9

Да, это возможно :) Это называется репликацией "Master with Relay Slave", и в сети много документов об этом.

Я бы порекомендовал вам взглянуть на официальную документацию здесь .

Кстати, также посмотрите на эти слайды . У них есть некоторые подсказки о топологиях репликации.

Надеюсь это поможет.


3

да - вы можете использовать MySQL-серверы с последовательным подключением, вы можете даже выполнить циклическую репликацию с двумя или более компьютерами. просто не забудьте включить ведение журнала на подчиненном, который также действует как ведущий.


1
Циркулярная репликация невероятно хрупкая. Это опрометчиво в большинстве случаев.
Уорнер

@Warner - это был просто пример еще более сложной настройки репликации.
PQD

Друзья не пускают друг друга на серверы MySQL.
Sjas

@sjas, если только у них нет особой причины сделать это и понять возможные последствия разрыва цепи.
PQD

Извините, но все же нет. Сложность всегда преследует вас позже.
Sjas

0

Да, это возможно. На самом деле вам нужен новый снимок DB2 для сборки DB3. В этот момент, если у вас есть хорошая позиция, вы можете либо использовать, чем для DB4, либо сделать еще один снимок DB3.

Не забудьте установить уникальный server_idдля каждого сервера.

Высокая производительность MySQL - отличная книга для ссылок на более продвинутые администрирования MySQL.


DB2 в настоящее время является только ведомым устройством, но ее положение в журнале не меняется ... Вы знаете, нормально ли это?
mmattax

Ведомый (DB2) обновлен по отношению к ведущему, но позиция бинлога не меняется, что мне проверять?
mmattax

Да, я подтвердил, что могу изменять данные в DB1, и они реплицируются в DB2, но позиция бинарника в DB2 такая же.
mmattax

Я думаю, что DB @ не регистрирует ведомые обновления, поэтому позиция не меняется: dev.mysql.com/doc/refman/5.1/en/…
mmattax

0

Почему бы просто не добавить DB3 в качестве нового ведомого устройства, а затем повысить его до уровня «мастер», когда вы будете готовы переключиться? Это даст вам временную дополнительную выгоду от наличия нескольких подчиненных и сократит или устранит простои.


это именно то, что я делаю ...
mmattax
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.