Deaktivieren Sie die MySQL-Binärprotokollierung mit der Variablen log_bin

35

Die Standard-MySQL-Konfigurationsdatei /etc/mysql/my.cnf, die von einem Debian-Paket mit APT installiert wurde, setzt häufig die log_bin-Variable, sodass binlog aktiviert ist:

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

Wenn ich die binäre Protokollierung bei einer solchen Installation deaktivieren möchte, kommentiere ich die Zeile in my.cnf aus, aber ich frage mich, ob es eine Möglichkeit gibt, die binäre Protokollierung zu deaktivieren, indem ich log_bin explizit auf OFF setze, in einem Debian-Stil, den ich meine eine enthaltene Datei wie /etc/mysql/conf.d/myCustomFile.cnf, daher wird my.cnf standardmäßig nicht geändert und kann bei Bedarf problemlos von apt aktualisiert werden.

Ich habe "log_bin = 0", "log_bin = OFF" oder "log_bin =" versucht, aber keiner funktioniert ...

Nicolas Payart
quelle

Antworten:

42

Dies ist eine alte Frage, aber sie tauchte bei einer Suche auf, als ich versuchte, in meinem Gedächtnis nach dem korrekten Optionsnamen zu suchen, und jetzt, da ich es herausgefunden habe, füge ich hier die Details hinzu.

Der Schlüsselteil der Frage ist:

Ich meine in einer enthaltenen Datei wie /etc/mysql/conf.d/myCustomFile.cnf

Sie können dies aus einer enthaltenen Optionsdatei mit der Option tun skip-log-bin. ZB könnten Sie /etc/mysql/conf.d/disable_binary_log.cnfmit folgenden Inhalten erstellen :

[mysqld]
skip-log-bin

Sie können skip-anderen Optionen ein Präfix hinzufügen , um sie auch auf diese Weise zu deaktivieren.

John Dalton
quelle
1
Großartig, genau das, was ich erwartet hatte. Das funktioniert auf MariaDB 10.0 zumindest gut. Vielen Dank.
Nicolas Payart
7

In MySQL 8 ist es die Option disable_log_bin , die ohne Parameter in der my.cnfDatei im [mysqld]Abschnitt angegeben werden muss.

[mysqld]
disable_log_bin
some-other-option = any-value
Al Bundy
quelle
5

Sie können es so sehen, log_bin sollte keine Parameter akzeptieren, entweder Sie setzen:

log_bin

oder gar nichts, da es sich um einen booleschen Parameter handelt.

Wenn jedoch ein Wert festgelegt ist, werden Protokolle aktiviert und der Wert als binlog-Basisname interpretiert.

Protokolloptionen haben eine Geschichte, in der sie nicht zu intuitiv sind und ihr Format von Version zu Version ändern (ich sehe Sie an, langsames Protokoll).

jynus
quelle
Es funktioniert nicht auf MariaDB
MechanTOurS
Angesichts der Tatsache, dass ich MariaDB verwende und genau dieselbe Zeile in meiner Konfiguration habe, bin ich sehr zuversichtlich, dass dies funktioniert.
Jynus
4

Wenn Sie nicht replizieren, können Sie das Binlogging deaktivieren, indem Sie Ihre Datei my.ini oder my.cnf ändern. Öffne deine my.ini oder /etc/my.cnf (/etc/mysql/my.cnf), gib ein:

# vi /etc/my.cnf

Suchen Sie eine Zeile mit dem Namen "log_bin" und entfernen oder kommentieren Sie sie wie folgt:

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

Sie müssen außerdem folgende Zeilen entfernen oder kommentieren:

#expire_logs_days = 10

#max_binlog_size = 100M

Schließen Sie und speichern Sie die Datei. Starten Sie schließlich den MySQL-Server neu:

# service mysql restart

Mahesh Patil
quelle
1
Ich denke, das OP versteht das, weshalb er schrieb: "Ich meine in einer enthaltenen Datei wie /etc/mysql/conf.d/myCustomFile.cnf, so dass die Standardeinstellung my.cnf nicht geändert wird"
Peter V. Mørch
1

Aus dem Handbuch für MariaDB ( https://mariadb.com/kb/en/library/activating-the-binary-log/ )

Wenn Sie keinen Namen angeben (der optional einen absoluten Pfad enthalten kann), lautet der Standardwert "datadir / log-basename-bin", "datadir / mysql-bin" oder "datadir / mariadb-bin"

Jedoch,

Clients mit der Berechtigung SUPER können das Binärprotokoll für die aktuelle Sitzung deaktivieren und erneut aktivieren, indem Sie die Variable sql_log_bin festlegen.

SET sql_log_bin = 0;

SET sql_log_bin = 1;

Wenn Sie jedoch sagen, dass es während der Installation standardmäßig aktiviert war, müssen Sie es deaktivieren, indem Sie die Zeile aus Ihrer my.cnf-Datei entfernen und mysqld anschließend neu starten. Sie können die Binärdaten auch löschen ( https://dev.mysql.com/doc/refman/5.6/en/purge-binary-logs.html ).

PURGE BINARY LOGS

Schließlich gibt es in MySQL 8 , wie in der Antwort des anderen Posters erwähnt, die Option, die Binärprotokollierung in der Konfigurationsdatei mithilfe der Optionen --skip-log-binoder --disable-log-binim Abschnitt [mysqld] der Konfigurationsdatei explizit zu deaktivieren.

Um die binäre Protokollierung zu deaktivieren, können Sie beim Start die Option --skip-log-binoder angeben --disable-log-bin. Wenn eine dieser Optionen angegeben ist und --log-binauch angegeben wird, hat die später angegebene Option Vorrang. Wenn die binäre Protokollierung deaktiviert ist, wird die Systemvariable log_bin auf OFF gesetzt.

jonnyjandles
quelle
0

Wie ich nach dem Aktualisieren eines Pakets weiß, sollte die Konfigurationsdatei die alte sein, so dass Sie nach dem Aktualisieren die gleichen Konfigurationsdateien haben. Andernfalls können Sie eine zweite Konfigurationsdatei im Pfad $ MYSQL_HOME / my.cnf erstellen. Dieser ist für serverspezifische Optionen gedacht und wird, wie ich weiß, die Einstellungen in der globalen Datei /etc/my.cnf überschreiben

Tamas Szasz
quelle
1
Ja, die Debian-Standardrichtlinie überschreibt keine Konfigurationsdatei in / etc. Aber meine Frage war genau, wie man die log_bin-Einstellung mit einem "Nullwert" überschreibt, OHNE die Zeile in der /etc/mysql/my.cnf zu kommentieren.
Nicolas Payart
skip-log-bin schaltet Booleans an anderer Stelle
Santiago Arizti