Tak długo, jak nie wykonujesz żadnych instrukcji INSERT / UPDATE / DELETE bezpośrednio w Slave, twój Slave powinien działać dobrze. W przeciwnym razie replikacja MySQL może się zepsuć, jeśli wstawisz nowy wiersz w mydb.mytable do urządzenia podrzędnego, a za pośrednictwem replikacji urządzenie podrzędne później wykryje WSTAW wiersz do pliku mydb.mytable przy użyciu tego samego klucza podstawowego. Powoduje to błąd 1062 (duplikat klucza).
Jedynym sposobem na napisanie do Slave bez przerywania replikacji MySQL jest:
- Master ma bazy danych db1, db2, db3
- Slave replikuje bazy danych db1, db2, db3 z Master
- Biegniesz
CREATE DATABASE db4;
na Slave
- INSERTs / UPDATEs / DELETE wykonuje się tylko dla db4 w Slave
- Nie wykonujesz WSTAWIANIA / AKTUALIZACJI / USUWANIA tylko dla db1, db2, db3 w Slave
Aby wykryć, że Master i Slave nie są zsynchronizowane bez pobierania narzędzi, wybierz dowolną tabelę i uruchom TABELĘ KONTROLI stosunku do tabeli w Master i kopii tej samej tabeli Slave.
PRZYKŁAD
Jeśli masz tabelę mydb.mytable
, uruchom przeciwko niej komendę:
mysql> CHECKSUM TABLE mydb.mytable;
Jeśli wartości nie są takie same, oznacza to, że coś nie jest zsynchronizowane.
Jeśli chcesz przejrzeć masę kilku stolików, możesz obniżyć MAATKIT Percony. Będziesz potrzebować dwóch konkretnych narzędzi (Percona ma również Percona Toolkit, który oni sami opracowali z MAATKIT, który jest teraz promowany bardziej)
lub
pt-table-checksum
wykona TABELĘ KONTROLNĄ dla wszystkich tabel na Master i Slave. Możesz go skonfigurować tak, aby wykonywał wszystkie bazy danych tylko na określonych.
pt-table-sync
można uruchomić na Slave na dowolnym stole. Korzystając z opcji --print i --sync-to-master, możesz zobaczyć, jakie instrukcje SQL muszą zostać wykonane na Slave, aby idealnie pasowały do Master. To narzędzie nie działa z tabelą, w której brakuje KLUCZA PODSTAWOWEGO lub KLUCZA UNIKALNEGO.
Używam MAATKIT od lat. Wciąż robię. Nie wypróbowałem jeszcze Percona Toolkit, ale jestem pewien, że powinien być tej samej jakości co MAATKIT.