• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

GELÖST max_binlog_stmt_cache_size

Guten Abend,

BS: opensuse 12.3.
Beim Kopieren einer Tabelle innnerhalb MYSQL erhalte ich folgenden Fehler:

#1705 - Multi-row statements required more than 'max_binlog_stmt_cache_size' bytes of storage; increase this mysqld variable and try again

Wahrscheinlich stelle ich mich ziemlich dämlich an, aber ich weiß nicht wo ich diese Variable finden und ändern kann.

Ich bitte um Hilfe

Poiuz
 
Hallo,

Du hast die Lösung des Problems quasi schon mit gepostet:

Bei dem Wert "max_binlog_stmt_cache_size" handelt es sich um eine Variable bzw Konstante, die ein Speicherlimit definiert, welches Du mit einer Query bzw einem Befehl überschritten hast. Du musstd en Wert entsprechend anpassen.

Den z.Zt. zugewiesenen Wert sehen:
Code:
show global status like 'binlog%';

Cheers
 
@CIS danke für den Vorschlag.

aber wenn ich in die Tiefen von show einsteigen will, gibt´s massive Probleme.
Ich habe show über Yast installiert, dann versucht in der console als root vorgenannten Befehl einzugeben. Mit dem Erfolg:
show: unable to change directory to /root/Mail/inbox: Datei oder Verzeichnis nicht gefunden

Darum möchte ich jetzt erst mein primäres Problem lösen
Code:
max_binlog_stmt_cache_size
Hier geh´s mir nur darum, in welchem Ordner bzw. file finde ich diese Variable zum ändern.
Übrigens: der Fehler tritt auf, wenn ich in phpMyAdmin eine Tabelle kopieren will.

Poiuz
 
poiuz schrieb:
aber wenn ich in die Tiefen von show einsteigen will, gibt´s massive Probleme.
Ich habe show über Yast installiert, dann versucht in der console als root vorgenannten Befehl einzugeben. Mit dem Erfolg:
show: unable to change directory to /root/Mail/inbox: Datei oder Verzeichnis nicht gefunden

Du kannst show nicht per Yast installieren, weil es sich dabei um ein MySQL spezifischen SQL Befehl handelt. Du musst dich also z.B. mit
Code:
mysql -u username -p passwort -h hostname-dbserver

und anschließender Eingabe des Passworts am MySQL-Server anmelden. Danach kannst du das SQL-Statement ausführen.

poiuz schrieb:
Darum möchte ich jetzt erst mein primäres Problem lösen
Code:
max_binlog_stmt_cache_size
Hier geh´s mir nur darum, in welchem Ordner bzw. file finde ich diese Variable zum ändern.
Übrigens: der Fehler tritt auf, wenn ich in phpMyAdmin eine Tabelle kopieren will.

MySQL kann so genannte binlogs erzeugen. Der Inhalt der binlogs sind die ausgeführten SQL-Statements. Die binlogs sind z.B. für eine Master-Slave Replikation zwingend erforderlich.

Die binlogs können auch für einen Hot-Restore verwendet werden.

Die Variable max_binlog_stm_cache_size legt die max Größe eines SQL-Statements fest, die in den binlogs gespeichert werden kann.
So gesehen ist dies kein Fehler, sondern ein Hinweis, dass einige Statements nicht in den binlogs gespeichert werden können, weil sie zu groß sind und diese Daten bei einem Hotrestore und bei der Replikation evtl. verloren gehen können.

Das die Meldung beim kopieren einer Tabelle auftritt ist je nach Tabellengröße (Anzahl der Datensätze, Speicherplatz der Tabelle) auch kein Wunder.

Ist es zwingend notwendig und absolut erforderlich, dass du die Tabelle kopieren musst? Mit dieser Aktion blockierst du nämlich, für die Dauer des Kopiervorgangs, sämtliche Lese- und Schreibzugriffe auf die Tabelle. D.h. die Anwendung die diese Tabelle verwendet kann keine Daten aus der Tabelle lesen, keine Datensätze aktualisieren und auch keine neuen Datensätze anlegen.

PS:

Wenn du eine große Tabelle kopieren willst, dann mache das zu trafficarmen Zeiten, also Nachts und anstatt die Tabelle zu kopieren solltest du sie besser exportieren und in der Zieldatenbank wieder importieren.
 
@spoensche
...wieder `mal danke für Erklärung und dadurch auch Hilfe.

...und noch einen schönen Tag

Poiuz
 
Oben