MySQL hat den Ruf, sich durch inkonsistente Festplattenzustände schlecht zu erholen. XFS unterbricht im Wesentlichen die E/A-Verbindung zum Dateisystem, während der Snapshot stattfindet. Normalerweise führt eine Datenbank eine flush() durch, sobald ein vollständiger Transaktionsprotokolleintrag erstellt wurde, der im Wesentlichen einen Prüfpunkt für das Dateisystem angibt. Im Falle eines Journaling-Dateisystems ist dies wichtig, und das Dateisystem wird nach dem Mounten größtenteils auf den letzten gültigen Journaleintrag zurückgesetzt, dies ist nicht 100%, aber es ist besser als nichts. Die meisten Datenbanksysteme verwenden die Transaktionsprotokolldatei, um bei der Wiederherstellung einen 'Rollforward' durchzuführen, wenn sich die Datenbankdateien hinter den Transaktionsprotokollen befinden und das Datenbankmodul nur so weit vorwärts läuft, wie es aufgrund des Inhalts der Transaktionsprotokolle möglich ist. Es wird nicht versucht, eine teilweise geschriebene Transaktion auszuführen. Das Problem hierbei ist, dass MySQL nicht das beste ist, um das zu erreichen, also kann es absolut ein Problem sein. Ich habe keine solide Lösung dafür gefunden. Ich würde mir vorstellen, einen Spiegel zu laufen, MySQL anzuhalten, während Sie den Snapshot machen und dann die Synchronisation fortsetzen könnte, aber ich weiß nicht, ob der MySQL-Spiegel mit einem Spiegel zurechtkommt, der teilweise nicht verfügbar ist eine Weile und dann in der Lage sein, ohne eine vollständige Re-Spiegel aufholen, in diesem Fall, Sie könnten auch nur eine mysqldump aller Datenbanken als hätte etwa den gleichen Effekt auf der Datenbank als eine Vollspiegelung ausführen würde. Das ist die andere while-running-Option, die ich mir vorstellen kann - eine mysqldump aller Datenbanken auf eine Backup-Partition laufen zu lassen und diesen Snapshot zu erstellen. Sie erhalten keine laufenden Backups, so dass Sie es nicht oft machen können. Und wenn Sie rund um die Uhr arbeiten, belastet mysqldump die Datenbank, während sie läuft, so stark, dass sie nicht optimal ist.
Andere Datenbank-Engine sind viel besser darin. PostgreSQL ist sehr gut in der Lage, sich von einem inkonsistenten Plattenzustand zu erholen, bis zu dem Punkt, dass es überhaupt nicht empfohlen wird, es auf einem gelagerten Dateisystem auszuführen. Sie haben auch die Möglichkeit, Transaktionsprotokolle zu archivieren, sodass Sie von der letzten vollständigen Sicherung bis zu jedem Zeitpunkt, an dem die archivierten Protokolle vorhanden sind, einen Rollback durchführen können. Viel einfacher, konsistente Backups damit zu machen. Oracle ermöglicht Ihnen, mehrere Sätze von Transaktionsprotokollen zu verwenden, die zwischen physischen Festplatten/EBS-Partitionen wechseln. Dadurch erhalten Sie häufig Fenster, um einen konsistenten Snapshot zu erstellen, und können der Datenbank-Engine angeben, dass Sie dies tun möchten zurück, bis du es sagst.
Entlang der Journaling-Linie hat LVM die Möglichkeit, das gesamte Dateisystem in weniger als einer Sekunde festzuhalten. Ich weiß nicht, ob die EBS-Snapshot-Funktion dies ausnutzt, obwohl Sie dies manuell tun könnten. LVM ist etwas findiger als XFS, aber ich hatte in der Vergangenheit Probleme mit XFS, bei dem eine große Anzahl von Dateien in einem einzigen Verzeichnis erstellt wurde, wo ext3 in Ordnung war. LVM hat auch eine Reihe anderer Vorteile und ist auf jeden Fall einen Blick wert.
-1 . Beantwortet die Frage nicht. – talonx