Replikacja bazy danych na dwóch masterach nie zapewnia dużej wydajności. Jednak, jeśli poprawnie zakodujesz swoją aplikację, istnieje sprytne przełączenie awaryjne.
Konfiguracja Master-Master jest zasadniczo taka sama jak konfiguracja Slave-Master, ale ma uruchomione oba urządzenia Slave i ważną zmianę w plikach konfiguracyjnych na każdym urządzeniu.
Mistrz MySQL 1:
auto_increment_increment = 2
auto_increment_offset = 1
Mistrz MySQL 2:
auto_increment_increment = 2
auto_increment_offset = 2
Te dwa parametry zapewniają, że gdy dwa serwery z jakiegoś powodu walczą o klucz podstawowy, nie duplikują się i nie zabijają replikacji. Zamiast zwiększania o 1, każde pole auto-inkrementacji będzie domyślnie zwiększane o 2. Na jednym polu rozpocznie się przesunięcie od 1 i uruchomi sekwencję 1 3 5 7 9 11 13 itd. Na drugim polu rozpocznie się przesunięcie od 2 i biegnij wzdłuż 2 4 6 8 10 12 itd. Z bieżących testów wydaje się, że auto-inkrementacja przyjmuje następną wolną liczbę, a nie tę, która została wcześniej.
Np. Jeśli serwer 1 wstawi pierwsze 3 rekordy (1 3 i 5), gdy serwer 2 wstawi czwarty, otrzyma klucz 6 (nie 2, który pozostaje niewykorzystany).
Gdy już to ustawisz, uruchom je jako Slave.
Następnie, aby sprawdzić, czy oba działają poprawnie, połącz się z obydwoma komputerami i wykonaj polecenie SHOW SLAVE STATUS
i powinieneś zauważyć, że zarówno Slave_IO_Running
i Slave_SQL_Running
powinni obaj powiedzieć „TAK” na każdym polu.
Następnie, oczywiście, utwórz kilka rekordów w tabeli i upewnij się, że jedno pole wstawia tylko nieparzyste klucze podstawowe, a drugie tylko zwiększa parzyste.
Następnie wykonaj wszystkie testy, aby upewnić się, że możesz wykonać wszystkie standardowe aplikacje na każdym polu z replikacją do drugiego.
Po uruchomieniu jest to stosunkowo proste.
Ale jak już wspomniano, MySQL odradza to i radzi, abyś pamiętał o tej funkcjonalności podczas pisania kodu aplikacji.
Edytuj: Przypuszczam, że teoretycznie możliwe jest dodanie większej liczby wzorców, jeśli upewnisz się, że przesunięcia są poprawne i tak dalej. Możesz jednak bardziej realistycznie dodać kilka dodatkowych niewolników.