5

Powiedzmy, że mam bazę danych samochodów. Mam marki i modele (FK to Makes). Planuję, aby użytkownicy śledzili swoje samochody. każdy samochód ma model FK do modelu. Teraz mam wielu użytkowników i chcę podzielić moją bazę danych w celu dystrybucji obciążenia. Tabele Makes i Models nie zmieniają się tak bardzo, ale muszą być udostępniane na wszystkich fragmentach. Moją myślą jest wykorzystanie replikacji MySQL z głównej bazy danych marek i modeli do każdej bazy danych slave. Moje pytanie brzmi: Czy mogę bezpiecznie pisać do baz danych niewolników zakładając, że nie piszę do tych tabel na master?MySQL: Zapisywanie do węzła podrzędnego

A jeśli chodzi o ten temat, czy istnieje gwarancja, że ​​jedna baza danych niewolników ma najnowsze dane? Na przykład ktoś właśnie dodał markę "Taurus", a następnie chce dodać swój samochód. Czy mogę zagwarantować, że używana przez nich baza danych-niewolników ma najnowsze dane podstawowe?

Odpowiedz

5

Tak, na ogół można bezpiecznie pisać do tabeli na niewolnikach, które nie są zapisane na kapitanie. Jeśli robisz takie rzeczy jak wstawianie auto_increment wierszy na niewolnikach i na master, niezależnie, będziesz oczywiście miał problemy. Powinieneś całkowicie skonfigurować tę tabelę, aby była całkowicie wyłączona z replikacji.

Aby sprawdzić, czy masz najnowsze dane, SHOW SLAVE STATUS zawiera pole Seconds_Behind_Master, które informuje, czy urządzenie podrzędne jest aktualne. Oczywiście chcesz, żeby było zero. Aby mieć pewność, że wstawione i zreplikowane dane są obecne, musisz poczekać sekundę, a następnie , a następnie. Zauważ, że Seconds_Behind_Master ma wartość zero.

+0

zrobić wiesz, czy istnieje blokujące polecenie synchronizacji z masterem? –

+0

Nie ma. (Ignorowanie 'LOAD DATA FROM MASTER', które nie robi tego, co chcesz, i jest zepsute.) – chaos

+0

Czy istnieje jakiś mechanizm zapisu: slave tylko przekazuje żądanie zapisu do master? – Velkan

2

To dobre rozwiązanie I zbierana podczas poszukiwania

włączyłem główny punkt jako avilable tutaj:

http://erlycoder.com/43/mysql-master-slave-and-master-master-replication-step-by-step-configuration-instructions-

MySQL replikacji master-Master i autoIncrement indeksy

Jeżeli jesteś przy użyciu replikacji master-slave, najprawdopodobniej zaprojektujesz swoją aplikację w taki sposób, aby zapisywać do wzorca i czytać z niewolnika lub kilku niewolników. Ale kiedy używasz replikacji master-master, będziesz czytać i pisać na dowolnym serwerze głównym. Tak więc w tym przypadku problem z autoinkrementalnymi indeksami wzrośnie. Gdy oba serwery będą musiały dodać rekord (inny dla każdego serwera jednocześnie) do tej samej tabeli. Każdy z nich przypisze im ten sam indeks i spróbuje replikować do maści, co spowoduje kolizję. Prosta sztuczka pozwoli uniknąć takich kolizji na serwerze MySQL.

na wzorcu 1/Slave 2 Dodaj do /etc/my.cnf:

auto_increment_increment= 2 
auto_increment_offset = 1 

Na Master 2/Slave 1 Dodaj do /etc/my.cnf:

auto_increment_increment= 2 
auto_increment_offset = 2 
Powiązane problemy