Ich versuche, einen MySQL-Absturz wiederherzustellen. Ich habe Daten von Montag und Binärprotokolle seither und möchte die Binärprotokolle anwenden, da die Kombination einen vollständigen Datensatz ergeben würde. Das Problem ist, dass Binärprotokolle als einzelnes Paket gelesen werden. Einige meiner Binärprotokolle sind zu groß, bis zu 2,4 G, während MySQL nur max_allowed_packet=1G
(1073741824) zulässt. Gibt es eine Möglichkeit, sie in Blöcke aufzuteilen oder anderweitig aufzuteilen?
Bearbeiten: Ich habe jetzt den split
Linux-Befehl ausprobiert, der bei der zweiten und den folgenden Dateien jeder geteilten Datei einen „falsche magische Zahl“-Fehler ausgibt. Nachdem ich darüber gelesen habe, macht es Sinn. Ich habe jetzt versucht, es zu verwenden, mysqlbinlog --start-position 4 --stop-position 200000003 $1 > $1.binout
damit ich eine Schleife mit einem Inkrement verwenden kann, aber es endet nicht an einer Grenze:
WARNING: The range of printed events ends with a row event or a table map event that does not have the STMT_END_F flag set. This might be because the last statement was not fully written to the log, or because you are using a --stop-position or --stop-datetime that refers to an event in the middle of a statement. The event(s) from the partial statement have not been written to output.
Wenn ich die nächste Schleife erhöhe, gibt es dann eine Möglichkeit, die tatsächliche Startposition zu ermitteln? Das Beispiel endete bei 199994536. Gibt es eine Möglichkeit, die letzte Position des resultierenden Binärprotokolls zu ermitteln?