Mam konfigurację master -> slave, w której master uległ awarii. Byłem w stanie zresetować starego-niewolnika, aby był mistrzem, a starego-niewolnika od niego. W porządku.
Wydaje mi się, że nie mogę usunąć informacji o masterie ze starego slave, który jest teraz nowym master. Widzę:
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 10.1.2.101
Master_User: replicationSlave
Master_Port: 3306
...
Slave_IO_Running: No
Slave_SQL_Running: No
Przeczytałem dużo dokumentacji MySQL, ale wciąż nie znalazłem sposobu na usunięcie informacji o slave z nowego-master. Próbowałem:
RESET SLAVE
co nie wydaje się usuwać tych ustawień. [[Właściwie to usuwamaster.info
plik, ale nie ustawienia pamięci. Zobacz poniżej.]]CHANGE MASTER TO MASTER_HOST=''
który po prostu pluje na błąd, ponieważ był przestarzały.- Sprawdzanie,
my.cnf
które nie zawierają informacji podstawowych, ponieważ zostały one dodane programowo. RESET MASTER
ponieważ niektóre dokumenty mysql polecały to. To tylko resetuje dzienniki bin.- Grzebię w wewnętrznych tabelach MySQL, aby sprawdzić, czy mogę znaleźć pola do wyczyszczenia.
Jak to zrobić w MySQL ~ 5.5.9? Dziękuję za wszelką pomoc.
Edytować:
Okazuje się, że RESET SLAVE
usuwa master.info
plik, jak sugeruje @RolandoMySQLDBA. Jednak nadal trzeba zrestartować serwer przed usunięciem informacji o urządzeniach podrzędnych.
Czy istnieje sposób na usunięcie tych informacji o urządzeniach podrzędnych bez konieczności ponownego uruchamiania mysqld?
źródło
Odpowiedzi:
W MySQL 5.5.16 i później, można użyć
RESET SLAVE ALL
, aby zrobić wszystko, coRESET SLAVE
robi i zresetować parametry połączenia z pamięci, w ten sposób, że nie wymaga ponownego uruchomienia mysqld.źródło
Najszybszy i najbrudniejszy sposób na usunięcie informacji o slave z instancji MySQL
skip-slave-start
do /etc/my.cnf pod[mysqld]
service mysql stop
rm -f /var/lib/mysql/master.info /var/lib/mysql/relay-*
service mysql start
skip-slave-start
z /etc/my.cnfTo powinno zrobić dla ciebie !!!
Byłoby to konieczne, ponieważ zgodnie z dokumentacją MySQL na
RESET SLAVE
:Dlatego informacje o replikacji są nadal w pamięci. Ponowne uruchomienie mysql to jedyna droga.
źródło
master.info
pliku. Czy to zawsze występuje u „pana” lub „niewolnika”?RESET SLAVE
po ponownym uruchomieniu nie kasuje informacji o slave, jeśli chodzi o phpmyadmin. Musisz także ustawićCHANGE MASTER TO MASTER_HOST=''
.źródło
Poleciłbym utrzymanie komendy skip-slave-start w pliku konfiguracyjnym („w /etc/my.cnf”) pod „mysqld”, aby uniknąć przesłonięcia danych master-slave. Na przykład: pracując w środowisku chmurowym, powiedzmy, że stary master ulega awarii, a następnie z powodzeniem uruchamia się ponownie, gdy twój dostawca rozwiązuje każdy problem - stary slave (teraz nowy master) replikuje się ze starego master, zastępując dane przed DBA ma szansę to zrealizować.
BTW, dotyczy to również środowiska niebędącego chmurą. Jeśli, powiedzmy, inny administrator przywołuje starego mistrza bez koordynacji. Kolejny problem, dlaczego dobrym pomysłem jest utrzymywanie polecenia „pomiń-slave-start”, nawet jeśli jest to slave - brak automatycznej replikacji, co oznacza, że masz większą kontrolę nad zapobieganiem nieprzewidzianym wynikom. :)
źródło