Jak całkowicie wyłączyć replikację MySQL


64

Korzystam z podwójnej głównej replikacji MySQL i teraz chcę przejść do pojedynczej bazy danych bez replikacji. Jak całkowicie wyłączyć replikację w obu bazach danych?

Odpowiedzi:


81

Aby całkowicie wyłączyć replikację za pomocą konfiguracji master-master, należy wykonać następujące czynności na każdym slave:

  1. STOP SLAVE;
  2. RESET SLAVE;(Użyj RESET SLAVE ALL;dla MySQL 5.5.16 i nowszych)
  3. Edytuj plik my.cnf i usuń wszelkie informacje (jeśli są obecne), które odnoszą się do opcji „master -...” lub „replicate -...”. Możesz nie mieć niczego w pliku my.cnf, ponieważ replikację można również skonfigurować dynamicznie.
  4. Uruchom ponownie mysqld.

jeśli replikacja jest konfigurowana dynamicznie, kroki 1 i 2 powinny wystarczyć.
tanyehzheng

4
Dopóki MySQL nie zostanie zrestartowany, będzie raportował stare informacje o replikacji w SLAVE STATUSzapytaniach, nawet po wydaniu RESET SLAVEpolecenia. Ważne informacje na temat narzędzi do monitorowania lub zdalnego zarządzania konfiguracją. Potwierdzone zachowanie w MySQL 5.5.38 na CentOS 6.5.
Chris Laskey,

Robię kroki, ale dlaczego ten nieaktywny slave wciąż znajduje się na liście poleceń mtop? Jak usunąć go z listy?
Scott Chu,

18

Wiem, że to stare pytanie, ale stwierdziłem, że muszę zresetować zmienne podrzędne. Jeśli użyjesz słowa „bla”, jak sugerowano, serwer spróbuje przy starcie znaleźć serwer „bla”.

Zmień MASTERnaMASTER_HOST='',MASTER_USER='',MASTER_PASSWORD='';

Możesz sprawdzić, czy maszyna nie jest już niewolnikiem

SHOW SLAVE STATUS \G;

5
To już nie działa. Ustawienie CHANGE MASTER TO MASTER_HOST=''teraz powoduje błąd.
Gray

BŁĄD 1210 (HY000): Niepoprawne argumenty dla MASTER_HOST
Kazimieras Aliulis

Działa dla mnie na CentOS 6 (MySQL 5.1), po tym STATUS POKAŻ SLAVE zwraca pusty zestaw, a po RESETOWANIU SLAVE-a nadal wyświetlał pewne informacje główne.
Martijn

Ta odpowiedź jest nadal ważna dla użytkowników MySQL 5.1 (wciąż może tam być).
RolandoMySQLDBA

12

Na serwerach podrzędnych:

  1. Uruchom „stop slave”, aby zatrzymać replikację.
  2. Uruchom „reset slave”, aby poinformować serwer slave, aby zapomniał o swojej pozycji w dzienniku binarnym pobranym z serwera master.
  3. Dodaj „skip-slave-start” do my.cnf, aby zapobiec rozpoczęciu replikacji po ponownym uruchomieniu MySQL.

Nie ma potrzeby restartowania MySQL na urządzeniu nadrzędnym lub podrzędnym. Pełna dokumentacja znajduje się w rozdziale 19 Podręcznika MySQL .

Zalecam pozostawienie pozostałych ustawień replikacji na wypadek, gdybyś zdecydował się przywrócić poprzednią konfigurację. W ten sposób wystarczy przepchnąć dane i zresetować pozycję slave (nie zapomnij usunąć pominięcia start-slave), zamiast odtwarzać całą konfigurację.



6

Sama edycja pliku my.cnf nie jest wystarczająca, aby wyłączyć replikację. W rzeczywistości nie jest to już zalecany sposób jego włączenia. Wpisy w pliku my.cnf działają tylko przy następnym uruchomieniu i zachowują się, jakbyś wprowadził polecenie do klienta mysql:

mysql> zmień master na master_host = 'blah', master_user = 'blah', master_password = 'blah' ...;

Obie te metody utworzą plik w katalogu danych o nazwie master.info . Tak długo, jak ten plik istnieje, serwer będzie próbował replikować się przy użyciu zawartych w nim szczegółów. „RESETUJ SLAVE;” polecenie wymienione w pierwszej odpowiedzi spowoduje usunięcie pliku master.info (a także pliku relay-log.info ). Jak wspomniano w pierwszej odpowiedzi, należy również upewnić się, że nie ma tych informacji konfiguracyjnych w pliku my.cnf, w przeciwnym razie przy następnym ponownym uruchomieniu serwera rejestrowanie zostanie ponownie włączone.


5

Jedna odpowiedź jest tutaj:

http://www.oops.net.br/~bac/bam/canopy_repl_setup.htm

* Edytuj plik konfiguracyjny MySQL: /etc/my.cnf i usuń następujące 7 wierszy do sekcji zatytułowanej [mysqld]:

port=3306
log-bin
server-id=1
master-host=10.0.0.2
master-user=server_1_repl
master-password=server_1_passwd
master-port=3306*

Uruchom ponownie MySQL.


4

Dodaję to do odpowiedzi Harrisona Fiska:

Jeśli użyłeś, RESET SLAVE ALL;to restart nie jest konieczny.

Ponadto możesz włączyć zdarzenia, które zostały wyłączone w slave:

select * from information_schema.events where status = 'SLAVESIDE_DISABLED';

Dla każdego z nich:

alter event <event_name> enable;
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.