Frage

Ich möchte einen Import einer großen Datei in MySQL ausführen. Ich möchte jedoch nicht, dass es an das binäre Protokoll geschrieben wird, da der Import lange dauert und die Sklaven weit zurückfallen. Ich würde es lieber auf die Sklaven treiben, denn es wird das System viel einfacher sein. Die fragliche Tabelle ist neu, und deshalb muss ich mir also keine Sorgen machen, dass sie aus der Synchronisierung herauskommt, da der Meister und alle Sklaven am Ende die gleichen Daten haben, da sie alle dieselbe Datei importieren werden letztlich. Ich möchte auch keine der Replikat-Ignore- oder BinLog_ignore-* -Optionen ändern, da sie einen Neustart der fraglichen Server erfordern. Gibt es eine Möglichkeit, eine einzelne Abfrage auszuführen, ohne sie an das binäre Protokoll zu schreiben?

Ich kenne die Antwort bereits, aber ich konnte sie im Netz nicht einfach finden, also lasse ich jemandem die Antwort posten, um einige Wiederholungspunkte zu erhalten. Wenn es keine Antworten in einem kleinen Weiß gibt, werde ich die Antwort veröffentlichen, die ich gefunden habe.

War es hilfreich?

Lösung

Du kannst den ... benutzen SQL-Log-bin Sitzungsvariable So deaktivieren Sie die Protokollierung für die aktuelle Sitzung. Einfach eingeben:

SET sql_log_bin = 0;

Und alle Abfragen in Ihrer aktuellen Sitzung werden nicht an das binäre Protokoll gesendet. Wenn Sie die Binäranmelde wieder einschalten möchten, rennen Sie:

SET sql_log_bin = 1;

Dies gilt nur für die derzeit laufende Sitzung, in der Sie sich befinden. Alle anderen Abfragen aller anderen Verbindungen werden weiterhin protokolliert. Außerdem müssen Sie über Super -Privilegien verfügen, damit dies funktioniert.

Andere Tipps

Wenn Sie dies von der CLI tun möchten, versuchen Sie dies, es hat für mich funktioniert:

$ mysqldump old_DB | mysql --init-command="SET SQL_LOG_BIN = 0;" new_DB

Möglicherweise wurde der Param "init-command" in einer neueren MySQL-Version hinzugefügt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top