Відповіді:
За задумом, один процес mysqld не може одночасно слухати двох різних майстрів.
Команда CHANGE MASTER TO дозволяє встановити лише один Master як джерело для читання.
Щоб наслідувати це, вам доведеться програмно чергувати два майстри. Як ти це робиш ?
Ось основна ідея
Установіть реплікацію від M1 до S1, а потім від M2 до S1 так
Кожен раз, коли ви переходите від одного головного до іншого, ви повинні записувати два значення з SHOW SLAVE STATUS\G
Ці два значення представляють останню заяву SQL, що надійшла від головного пристрою і повинна бути виконана на підлеглому.
Є одна головна обережність: Поки M1 і M2 оновлюють взаємовиключні бази даних, цей алгоритм повинен бути просто чудовим.
Рішення Роландо має багато застережень. Перший, що є одним потоком реплік, обов'язково не реплікується, тоді як другий працює. Це надасть вам періоди часу, коли ваш раб перебуває поза синхронізацією. Тепер вам належить зіграти тонкий балансуючий акт, щоб переконатися, що кожен має достатньо часу, щоб наздогнати, коли він має свою чергу.
Як описано, вам також доведеться грати у зберігач книг журналів, щоб повернутися назад. Це справді просто здається баггі, відкриваючи вікно для відсутніх або непослідовних даних або навіть порушуючи реплікацію, коли вона йде не так (або викликана навіть просто помилкою "вимкнення однієї" в положенні журналу)
Я рекомендую просто запустити кілька екземплярів mysql. Ніщо не заважає вам запустити два і більше mysql на одній машині. Вони, звичайно, не можуть працювати на одному порті. Я насправді не вважаю це проблемою, хоча кожен клієнт та бібліотека дозволяють вказати щось, що не є 3306.
Просто вкажіть порт = 3307 (або що завгодно в одному з .cnf-файлів).
Ви також захочете подбати про те, щоб окремо налаштовані пуфи буфера та інші конфігурації пам'яті не розходилися між собою. Це насправді користь, хоча ви зможете більш тонко налаштувати ці налаштування під конкретні вимоги окремих баз даних, які копіюються.
Таким чином у вас просто два потоки реплікації, що працюють на одному сервері; ніколи позаду, не потрібно зберігати книгу, не потрібно сценарій "заміни".
Вентилятор (репликація з декількома джерелами) буде підтримуватися з MySQL 5.7.
Випуск лабораторій доступний тут: http://labs.mysql.com/
MariaDB, який може бути замінений на MySql, може бути використаний. Він підтримує його з версії 10.2
Проблема з підтримкою Mysql 5.7 - необхідність GTID, тобто головний ОБОВ'ЯЗКОВО також бути змінений, у випадку MariaDb це не так.
Приклад / HowTo посилання: http://www.skysql.com/blogs/dean-ellis/multi-source-replication-mariadb-100