Odpowiedzi:
Z założenia jeden proces mysqld nie może jednocześnie słuchać dwóch różnych Masterów.
Polecenie CHANGE MASTER TO pozwala tylko ustawić jednego Master jako źródło do odczytu.
Aby to naśladować, musiałbyś programowo przełączać się między dwoma Mistrzami. Jak to robisz?
Oto podstawowy pomysł
Skonfiguruj replikację M1 do S1, a następnie M2 do S1 w ten sposób
Za każdym razem, gdy przełączasz się z jednego urządzenia głównego na inny, musisz zapisać dwie wartości z SHOW SLAVE STATUS\G
Te dwie wartości reprezentują ostatnią instrukcję SQL, która pochodzi od Master i była następnie wykonywana w Slave.
Jest jedna główna uwaga: dopóki M1 i M2 aktualizują wzajemnie wykluczające się bazy danych, algorytm ten powinien być w porządku.
Rozwiązanie Rolando ma wiele zastrzeżeń. Pierwszy z nich to strumień repliki, który niekoniecznie się replikuje, podczas gdy drugi działa. To da ci okresy, w których twój niewolnik nie jest zsynchronizowany. Musisz teraz wykonać delikatny balans, aby upewnić się, że każdy ma wystarczająco dużo czasu, aby nadrobić zaległości, gdy ma swoją „turę”.
Jak opisano, musisz także zagrać w księgę pozycji dziennika, aby przełączyć się z powrotem. To naprawdę wydaje się błędne, otwierając okno na brakujące lub niespójne dane, a nawet przerywając replikację, gdy pójdzie nie tak (albo spowodowane przez błąd tylko „wyłączony przez jeden” w pozycji dziennika)
Poleciłbym po prostu uruchomienie wielu instancji mysql. Nic nie stoi na przeszkodzie, aby uruchomić dwa lub więcej mysqlów na tej samej maszynie. Oczywiście nie mogą one działać na tym samym porcie. Nie uważam tego jednak za problem, ponieważ każdy klient i biblioteka pozwala określić coś innego niż 3306.
Wystarczy podać port = 3307 (lub cokolwiek w jednym z plików .cnf).
Należy również zadbać o to, aby indywidualnie skonfigurowane pule buforów i inne konfiguracje pamięci nie były ze sobą sprzeczne. Jest to w rzeczywistości korzyść, ponieważ można dokładniej dostroić te ustawienia do konkretnych wymagań poszczególnych replikowanych baz danych.
W ten sposób masz tylko dwa strumienie replikacji uruchomione na tym samym serwerze; nigdy z tyłu, nie wymaga prowadzenia ksiąg rachunkowych, nie jest wymagany skrypt „zamiany”.
Wentylator w (replikacja z wielu źródeł) będzie obsługiwany z MySQL 5.7.
Wersja laboratorium jest dostępna tutaj: http://labs.mysql.com/
Można użyć MariaDB, który może być użyty jako zamiennik w miejscu MySql. Obsługuje to od wersji 10.2
Problem ze wsparciem dla MySQL 5.7 polega na potrzebie GTID, co oznacza, że MUSISZ również zostać zmieniony, w przypadku MariaDb tak nie jest.
Przykład / HowTo link: http://www.skysql.com/blogs/dean-ellis/multi-source-replication-mariadb-100