Ich habe einen neuen MySQL-Server unter Amazon EC2 konfiguriert und beschlossen, meine Daten auf einem EBS RAID0-Array zu speichern. So weit so gut, und ich habe getestet, wie man Schnappschüsse dieser Geräte mit ec2-konsistenten Schnappschüssen macht, großartig.
Wie können Sie das Array auf einer neuen Instanz anhand dieser Snapshots schnell neu erstellen?
Wenn Sie einen ec2-konsistenten Snapshot verwenden, um einen Snapshot mehrerer Volumes zu erstellen, können Sie nicht feststellen, welches Volume für jedes Gerät im RAID verwendet wurde. Ich kann mich vielleicht völlig irren, aber da Sie Daten über die Volumes verteilen, liegt es nahe, dass Sie jedes NEUE Volume an derselben Stelle auf dem RAID ablegen müssen wie das Volume, von dem aus der Snapshot erstellt wurde.
Ein Beispiel:
- 3x200 GB-Volumes in einer RAID0-Konfiguration.
- vol-1 ist / dev / sdh Gerät 0 im RAID
- vol-2 ist / dev / sdh1 Gerät 1 im RAID
- vol-3 ist / dev / sdh2 Gerät 2 im RAID
Sie erstellen einen ec2-Snapshot mit : ec2-consistent-snapshot <options> vol-1 vol-2 vol-3
.
Sie haben jetzt 3 Snapshots. Die einzige Möglichkeit, festzustellen, um welches Gerät es sich handelt, besteht darin, die Quell-Volume-ID zu überprüfen, dann zu überprüfen, auf welchem Gerät die Quell-Volume-ID wie auf der Instanz bereitgestellt ist, und dann die Details des RAID zu überprüfen Konfiguration auf der Instanz des Quellvolumes.
Dies ist offensichtlich unglaublich manuell ... und nicht schnell (was es offensichtlich schwierig macht, eine neue MySQL-Instanz schnell aufzurufen, wenn die andere fehlschlägt. Ganz zu schweigen davon, dass Sie die Gerätepositionen zu diesem Zeitpunkt auf dem RAID aufzeichnen müssen von Snapshot, da Sie bei einem Absturz der Quellvolume-Instanz keine Möglichkeit haben, zur RAID-Konfiguration zu gelangen.
Also abschließend:
- Vermisse ich etwas mit der Funktionsweise von ec2-konsistenten Snapshots und einem Software-RAID0-Array?
- Wenn nicht, gibt es bekannte Lösungen / Best Practices für das Problem, nicht zu wissen, zu welchem Gerät / welcher Position im RAID-Array ein Snapshot gehört?
Ich hoffe das war klar und danke für deine Hilfe!
quelle
Ich habe eine ähnliche Konfiguration ausgeführt ( RAID0 über 4 EBS-Volumes ) und hatte daher die gleichen Bedenken, das RAID-Array aus Snapshots wiederherzustellen, die mit ec2-Consistent-Snapshot erstellt wurden .
Glücklicherweise enthält jedes Gerät in einem RAID-Array Metadaten (in einem Superblock), die seine Position im Array, die UUID des Arrays und die Ebene des Arrays (z. B. RAID0) aufzeichnen. Um diesen Superblock auf einem beliebigen Gerät abzufragen, führen Sie den folgenden Befehl aus (die Zeilenübereinstimmung '^ this' beschreibt das abgefragte Gerät):
Wenn Sie dieselbe Abfrage auf einem Gerät ausführen, das nicht Teil eines Arrays ist, erhalten Sie:
Dies beweist, dass dieser Befehl wirklich auf Informationen basiert, die auf dem Gerät selbst gespeichert sind, und nicht auf einer Konfigurationsdatei.
Man kann auch die Geräte eines RAID-Arrays ausgehend vom RAID-Gerät untersuchen und ähnliche Informationen abrufen:
Ich verwende das spätere zusammen mit ec2-description-volume , um die Liste der Volumes für ec2-compatible-snaptshot zu erstellen ( -n und --debug ermöglichen es, diesen Befehl zu testen, ohne Snapshots zu erstellen). Der folgende Befehl setzt voraus, dass das Verzeichnis / mysql der Einhängepunkt für das Volume ist und dass die AWS-Region us-west-1 ist :
quelle
Ich weiß, dass dies Ihre Frage nicht beantwortet, aber ich mache etwas Ähnliches, aber mit dem Basis-Tool ec2-create-snapshot von Amazon und einem Cron-Skript. Es ist nicht so schnell wie ein ec2-konsistenter Snapshot, aber ich bekomme die zusätzliche Kontrolle, die ich brauche: fsync, Schreibvorgänge sperren und vor allem die Snapshots entsprechend benennen, damit sie in der richtigen Reihenfolge wiederhergestellt werden können.
quelle