NFsec Logo

Operacje na logach (binarnych) lub upgrade MySQL podczas replikacji M-M

31/03/2012 w Administracja Brak komentarzy.  (artykuł nr 341, ilość słów: 234)

P

odczas operacji na ustawieniach związanych z logami binarnymi lub logowaniem zdarzeń (np. zmiana expire_logs_days, general_log, slow_query_log), czy podnoszenie wersji serwera MySQL, który jest wpięty w replikację Master – Master, należy liczyć się, że operacja ta może zakończyć się na drugim serwerze wypięciem replikacji i komunikatem błędu podobnym do tego:

Last_Errno: 1580
Last_Error: Error 'You cannot 'ALTER' a log table if logging is enabled' on query.
Default database: 'mysql'. Query: 'ALTER TABLE slow_log...


Spowodowane jest to faktem, że ustawienia dotyczące m.in. logów nie są replikowane między bazami. Na przykład program mysql_upgrade podnoszący wersję serwera wyłącza wstępnie logowanie oraz może wykonać ALTER na tabelach mysql.general_log i mysql.slow_log. Jednak ten sam ALTER nie zostanie wykonany już na drugim masterze, ze względu na cały czas włączone logi. W zależności czego dotyczy błąd – replikację naprawić możemy poprzez wyłączenie replikacji, wyłączenie logowania, włączenie replikacji i ponownym włączeniu logowania – tutaj przykład z slow_query_log:

stop slave;
set global slow_query_log = "off";
start slave;
set global slow_query_log = "on";

lub po prostu pominięciem tego zapytania:

stop slave;
set global sql_slave_skip_counter = 1;
start slave;

Dlatego przed wykonywaniem tego rodzaju operacji należy pamiętać, aby ręcznie (o ile to możliwe) replikować tego rodzaju ustawienia na drugim masterze.

Więcej informacji: MySQL Bug #39133, MySQL Bug #43579, MySQL Bug #46638

Kategorie K a t e g o r i e : Administracja

Tagi T a g i : , , , , , ,

Komentowanie tego wpisu jest zablokowane.