Tach!
Hierzu möchte ich alle sql-queries loggen, um dann ggf. bei einem aufgetretenen Fehler alle bis zum Stichpunkt angefallenen Queries in einer leeren db wieder einspielen zu können.
Dazu brauchst du nicht alle, sondern nur die datenverändernden Statements.
Ich hatte zuerst überlegt, das über einen autom. erzeugten dump zu machen, das erscheint mir aber viel zu überlastet zu sein, daher die Idee mit dem Query-Log.
Im Allgemeinen sind die Dumps recht fix. Bei Performance ist es eigentlich immer empfehlenswert, weniger zu raten und stattdessen mehr zu messen. Beobachte also besser mal das wirkliche Laufzeitverhalten bei realistischer Datenmenge.
Wenn du mit Query-Log das eingebaute von MySQL meinst ... das ist zu viel des Guten, weil es auch alle Leseoperationen mitschreibt.
Wannimmer ich in einer Query zum Einsetzen eines DateTime-Wertes now() benutze, würde ich im Falle des Wiedereinspielens einen (für mich) falschen (nämlich den zum Ausführungszeitpunkt gültigen wert) einsetzen.
Und das ist das nächste Problem. Alle nicht-deterministischen Funktionen (beispielsweise auch RAND()) liefern unter Umständen andere Ergebnisse beim nächsten Aufruf.
Kann man das Problem angehen, ohne auf das now() in der Originalquery zu verzichten?
Es gibt auch noch das Binary-Log. Das schreibt nur die Schreiboperationen mit. Aber auch das Binary-Log hat Probleme bei nicht-deterministischen Funktionen, aber nur, wenn man es im falschen Log-Format betreibt.
dedlfix.