Ich habe eine Frage zur logischen Sicherung von MySQL-Datenbanken, die sowohl MyISAM als auch InnoDB verwenden.
Das mysqldump
Dienstprogramm unterstützt diese beiden Optionen:
--single-transaction - Erstellt einen konsistenten Snapshot, indem alle Tabellen in einer einzigen Transaktion ausgegeben werden. Funktioniert NUR für Tabellen, die in Speicher-Engines gespeichert sind, die Multiversioning unterstützen (derzeit nur InnoDB). [...] Die Option deaktiviert automatisch --lock-Tabellen.
-x, --lock-all-tables - Sperrt alle Tabellen in allen Datenbanken. Dies wird erreicht, indem eine globale Lesesperre für die Dauer des gesamten Speicherauszugs verwendet wird. Deaktiviert automatisch --single-transaction und --lock-tables.
Für InnoDB brauchen wir
--single-transaction
Für MyISAM benötigen wir - Lock-Tables oder Lock-All-Tables (falls wir datenbankübergreifende Konsistenz benötigen).
Wie soll eine Hybriddatenbank (eine Datenbank, die sowohl MyISAM- als auch InnoDB-Engines verwendet) gesichert werden?
Bearbeiten:
Zur Klarstellung könnte die Frage folgendermaßen umformuliert werden:
Garantieren die Optionen lock- [all-] tables eine konsistente Sicherung von InnoDB-Tabellen?
--lock-all-tables
das Backup konsistent ist, oder? Und man muss mysqldump nur einmal ausführen : Es ist sowohl für InnoDB als auch für MyISAM gleichzeitig sicher, oder?Als zusätzliche Idee für Ihre Situation ist es möglicherweise hilfreich, sich Gedanken über das Einrichten eines Master-Slave-Setups zu machen, bei dem Ihr Backup vom Slave erstellt wird.
Eine MySQL-Datenbank mit einer Mischung aus InnoDB und MyISAM sperrt (soweit ich weiß, in jeder Konfiguration und mit jedem Backup-Tool) immer die MyISAM-Tabellen für die MyISAM-Backup-Phase.
Verwenden Sie dieses Setup, um diese Sperrung zu vermeiden:
Alle Schreib- und Lesevorgänge gehen an Server A (Master). Server B (Slave) wird nur zur Sicherung verwendet. Auf dem Slave installieren Sie ein Backup-Tool oder ein Skript Ihrer Wahl, z. B. MySQL Administrator.
Konfigurieren Sie Ihr Backup, z. B. täglich während der Nacht. Die Sperren befinden sich auf dem Slave, was zu einer Verzögerung führt, während der Slave sperrt. Diese Verzögerung wird jedoch aufgeholt, sobald die Sicherung beendet und die Sperre geöffnet ist.
quelle