Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jaki jest najlepszy sposób na dwukierunkową synchronizację danych dynamicznych w czasie rzeczywistym za pomocą mysql

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyświetlić przefiltrowane dane w JFreeChart

  2. Czy ktoś ma spory dowód na to, że CHAR jest szybszy niż VARCHAR?

  3. SQL wiele do wielu wybierz

  4. Różnica w miesiącach między datami w MySQL

  5. mysql SQL:określony element jako pierwszy, a następnie sortowanie pozostałych elementów