Wyłącz rejestrowanie binarne MySQL za pomocą zmiennej log_bin

35

Domyślny plik konfiguracyjny MySQL /etc/mysql/my.cnf instalowany przez jakiś pakiet debian przy użyciu APT często ustawia zmienną log_bin, więc binlog jest włączony:

log_bin = /var/log/mysql/mysql-bin.log

Kiedy chcę wyłączyć rejestrowanie binarne podczas takiej instalacji, komentarz w wierszu w pliku my.cnf oczywiście działa, ale zastanawiam się, czy istnieje sposób na wyłączenie rejestrowania binarnego poprzez jawne ustawienie log_bin na WYŁ., W stylu debian, mam na myśli dołączony plik, taki jak /etc/mysql/conf.d/myCustomFile.cnf, więc domyślny plik my.cnf nie jest zmieniany i może być łatwo zaktualizowany przez apt, jeśli to konieczne.

Próbowałem „log_bin = 0”, „log_bin = OFF” lub „log_bin =”, ale żadne nie działa ...

Nicolas Payart
źródło

Odpowiedzi:

42

To stare pytanie, ale pojawiło się podczas wyszukiwania, gdy próbowałem przeszukać pamięć o prawidłowej nazwie opcji, więc teraz, kiedy to rozgryzłem, dodam tutaj szczegóły.

Kluczowa część pytania brzmi:

Mam na myśli w dołączonym pliku, takim jak /etc/mysql/conf.d/myCustomFile.cnf

Możesz to zrobić z dołączonego pliku opcji, korzystając z opcji skip-log-bin. Na przykład możesz utworzyć /etc/mysql/conf.d/disable_binary_log.cnfz następującą zawartością:

[mysqld]
skip-log-bin

Możesz dodać skip-jako prefiks do innych opcji, aby je również wyłączyć.

John Dalton
źródło
1
Świetnie, dokładnie tego się spodziewałem. Działa to dobrze przynajmniej na MariaDB 10.0. Wielkie dzięki.
Nicolas Payart,
7

W MySQL 8 jest to opcja disable_log_bin, która musi być podana bez żadnego parametru w my.cnfpliku w [mysqld]sekcji.

[mysqld]
disable_log_bin
some-other-option = any-value
Al Bundy
źródło
5

Możesz to zobaczyć tak: log_bin nie powinien akceptować parametrów, albo umieścisz:

log_bin

lub w ogóle nic, ponieważ jest to parametr boolowski.

Jeśli jednak zostanie ustawiona wartość, dzienniki zostaną włączone, a wartość zostanie zinterpretowana jako basename binlog.

Opcje dziennika mają historię niezbyt intuicyjną i zmieniającą format z wersji na wersję (patrzę na ciebie, wolny dziennik).

jynus
źródło
Nie działa w MariaDB
MechanTOurS
Biorąc pod uwagę, że używam MariaDB i mam tę samą linię w mojej konfiguracji, jestem bardzo pewny, że to działa.
jynus
4

Jeśli nie replikujesz, możesz wyłączyć binlogging, zmieniając plik my.ini lub my.cnf. Otwórz my.ini lub /etc/my.cnf (/etc/mysql/my.cnf), wprowadź:

# vi /etc/my.cnf

Znajdź wiersz o treści „log_bin” i usuń go lub skomentuj w następujący sposób:

#log_bin = /var/log/mysql/mysql-bin.log

Musisz także usunąć lub skomentować następujące wiersze:

#expire_logs_days = 10

#max_binlog_size = 100M

Zamknij i zapisz plik. Na koniec zrestartuj serwer mysql:

# service mysql restart

Mahesh Patil
źródło
1
Myślę, że OP to rozumie i dlatego napisał: „Mam na myśli w dołączonym pliku, takim jak /etc/mysql/conf.d/myCustomFile.cnf, więc domyślny plik my.cnf się nie zmienia”
Peter V. Mørch
1

Z podręcznika dla MariaDB ( https://mariadb.com/kb/en/library/activating-the-binary-log/ )

Jeśli nie podasz nazwy (która opcjonalnie może zawierać bezwzględną ścieżkę), domyślną wartością będzie datadir / log-basename-bin, datadir / mysql-bin lub datadir / mariadb-bin

Jednak,

Klienci z uprawnieniem SUPER mogą wyłączyć i ponownie włączyć dziennik binarny dla bieżącej sesji, ustawiając zmienną sql_log_bin.

SET sql_log_bin = 0;

SET sql_log_bin = 1;

Jeśli jednak powiesz, że jest domyślnie włączony podczas instalacji, musisz wyłączyć, usuwając wiersz z pliku my.cnf, a następnie ponownie uruchamiając mysqld. Możesz również wyczyścić dane binarne ( https://dev.mysql.com/doc/refman/5.6/en/purge-binary-logs.html )

PURGE BINARY LOGS

Wreszcie, jak wspomina odpowiedź drugiego autora, w MySQL 8 istnieje możliwość jawnego wyłączenia rejestrowania binarnego z pliku konfiguracyjnego za pomocą opcji --skip-log-binlub --disable-log-binw sekcji [mysqld] pliku konfiguracyjnego.

Aby wyłączyć rejestrowanie binarne, możesz określić opcję --skip-log-binlub --disable-log-binpodczas uruchamiania. Jeśli jedna z tych opcji jest określona i --log-binjest również określona, ​​pierwszeństwo ma opcja określona później. Gdy rejestrowanie binarne jest wyłączone, zmienna systemowa log_bin jest ustawiona na WYŁ.

jonnyjandles
źródło
0

Jak wiem po aktualizacji pakietu, plik konfiguracyjny powinien być stary, więc po aktualizacji masz te same pliki konfiguracyjne. W przeciwnym razie możesz utworzyć drugi plik konfiguracyjny w ścieżce $ MYSQL_HOME / my.cnf. Ten dotyczy opcji specyficznych dla serwera i, jak wiem, zastąpi ustawienia w globalnym /etc/my.cnf

Tamas Szasz
źródło
1
Tak, domyślna polityka Debiana nie zastępuje pliku konfiguracyjnego w / etc. Ale moim pytaniem było dokładnie, jak zastąpić ustawienie log_bin „wartością zerową” BEZ komentowania wiersza w /etc/mysql/my.cnf.
Nicolas Payart
skip-log-bin wyłącza
booleany