Wie kann ich Probleme bei der Wiederherstellung meines ElastiCache-Clusters aus S3 beheben?

Lesedauer: 5 Minute
0

Beim Wiederherstellen meines Amazon ElastiCache for Redis-Backups aus Amazon Simple Storage Service (Amazon S3) schlägt die Clustererstellung fehl. Ich erhalte die Fehlermeldung „Erstellung fehlgeschlagen“ oder „Berechtigung verweigert“. Wie kann ich dieses Problem beheben?

Kurzbeschreibung

Im Folgenden sind häufige Gründe aufgeführt, warum die Wiederherstellung eines ElastiCache-Backups aus Amazon S3 fehlschlägt:

  • Sie versuchen, ein Backup außerhalb der Backup-Einschränkungen wiederherzustellen.
  • ElastiCache konnte die Datei nicht aus Amazon S3 abrufen.
  • Die ElastiCache-Backup-Datei befindet sich in einem Amazon S3-Bucket in einer anderen Region.
  • Sie stellen eine .rdb-Datei mit mehreren Datenbanken in einem ElastiCache-Cluster (Cluster-Modus aktiviert) wieder her.

Auflösung

Sie versuchen, ein Backup außerhalb der Backup-Einschränkungen wiederherzustellen

Beim Wiederherstellen eines ElastiCache for Redis-Backups ist es wichtig, die folgenden Backup-Einschränkungen zu beachten:

  • Sie können keine Wiederherstellung aus einer Sicherung, die mit einem Redis-Cluster (Clustermodus aktiviert) erstellt wurde, auf einen Redis-Cluster (Clustermodus deaktiviert) durchführen.
  • Beim Wiederherstellen einer Sicherung aus einem ElastiCache-Cluster (Clustermodus aktiviert) können Sie die Option Clustermodus deaktiviert in der ElastiCache-Konsole nicht auswählen. Nur die Option „Clustermodus aktiviert“ ist verfügbar.
  • Wenn Sie ein ElastiCache-Cluster-Backup (Clustermodus aktiviert) nach Amazon S3 exportieren, werden mehrere .rdb-Dateien erstellt (eine für jeden Shard). Wenn Sie versuchen, das Backup aus Amazon S3 zu starten, können Sie nur auf ein Backup (.rdb) verweisen. Dies führt zum Seeding der Schlüssel eines einzelnen Shards. Der Versuch, dies durch Einfügen eines Platzhalters zu umgehen, führt zu folgendem Fehler:
    Fehler: Objekt oder Bucket existiert nicht für das S3-Objekt: examplebucket/cluster-mode-enabled-*.rdb.
  • Sie können keine Sicherung aus einem Cluster wiederherstellen, der Daten-Tiering verwendet. Beispielsweise können Sie einen r6gd-Knoten nicht in einem Cluster wiederherstellen, der kein Daten-Tiering verwendet, wie z. B. einen r6g-Knoten.
  • Sie können keine Wiederherstellung von einem Redis-Cluster (Clustermodus deaktiviert) zu einem Redis-Cluster (Clustermodus aktiviert) durchführen, wenn die RDB-Datei auf mehr als eine Datenbank verweist. Wenn Sie dies versuchen, wird der folgende Fehler angezeigt:
    Fehler: Um einen Snapshot im Clustermodus wiederherzustellen, sollten sich alle Schlüssel in der RDB-Datei in DB 0 befinden.

ElastiCache konnte die Datei nicht aus Amazon S3 abrufen

Dieser Fehler tritt auf, wenn ElastiCache nicht über die erforderlichen Berechtigungen für den Zugriff auf das im S3-Bucket gespeicherte ElastiCache-Backup verfügt. Sie können das Berechtigungsproblem bestätigen, indem Sie ElastiCache-Ereignisse überprüfen.

Das folgende ElastiCache-Beispielereignis zeigt, dass die Erstellung der Redis-Replikationsgruppe „Test“ fehlgeschlagen ist, weil ElastiCache die Backup-Datei nicht aus S3 abrufen konnte:

Restore from snapshot failed for node group 0001 in replication group test. Failed to retrieve file from S3

Nachdem Sie festgestellt haben, dass die Ursache des Fehlers darin besteht, dass ElastiCache die Datei nicht aus Amazon S3 abrufen konnte, stellen Sie sicher, dass Ihre Region eine der folgenden ist:

Eine Anmelderegion erfordert eine Bucket-Richtlinie, die es ElastiCache ermöglicht, die Backup-Datei aus Amazon S3 abzurufen.

Wenn sich Ihr S3-Bucket in einer der folgenden Regionen befindet, müssen Sie dem ElastiCache-Dienst Zugriff auf die Backup-Datei in S3 gewähren:

  • China (Peking), China (Ningxia)
  • AWS GovCloud (USA-West)
  • Eine Standardregion

Hinweis: Die kanonische ID für die Regionen China (Peking), China (Ningxia) und AWS GovCloud (US-West) unterscheidet sich von den standardmäßigen AWS-Regionen:

China (Peking), China (Ningxia)

Canonical ID: b14d6a125bdf69854ed8ef2e71d8a20b7c490f252229b806e514966e490b8d83

Region AWS GovCloud (USA West)

Canonical ID: 40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6

AWS-Standardregionen

Canonical ID: 540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353

Stellen Sie den Redis-Cluster wieder her, nachdem Sie ElastiCache-Zugriff auf das .rdb-Backup-Objekt in Amazon S3 mithilfe einer kanonischen ID oder Bucket-Richtlinie.

Die ElastiCache-Backup-Datei befindet sich in einem Amazon S3-Bucket in einer anderen Region

Die folgende Fehlermeldung weist darauf hin, dass Sie versuchen, ein ElastiCache-Backup wiederherzustellen, das sich in einem Amazon S3-Bucket in einer anderen Region befindet:

„Berechtigung für den Zugriff auf das S3-Objekt verweigert. Bitte verwenden Sie das S3-Objekt in derselben Region.“

Gehen Sie wie folgt vor, um dieses Problem zu beheben:

1.    Kopieren Sie das Backup (.rdb) aus dem S3-Bucket, der das Backup enthält, in einen S3-Bucket in der Region, in der der Redis-Cluster wiederhergestellt wird.

Im Folgenden finden Sie ein Beispiel für einen AWS Command Line Interface (AWS CLI)-Befehl, den Sie zum Kopieren zwischen Amazon S3-Buckets in verschiedenen Regionen verwenden können:

aws s3 cp s3://SourceBucketName/BackupName.rdb s3://DestinationBucketName/BackupName.rdb --acl bucket-owner-full-control --source-region SourceRegionName --region DestinationRegionName

Hinweis: Wenn beim Ausführen von AWS-CLI-Befehlen Fehler gemeldet werden, stellen Sie sicher, dass Sie die neueste Version der AWS-CLI verwenden.

2.    Bestätigen Sie nach Abschluss des Kopiervorgangs, dass dem Backup-Objekt (.rdb) die korrekten Berechtigungen in Form einer kanonischen ID oder einer Bucket-Richtlinie zugewiesen wurden. Die korrekten kanonischen IDs finden Sie im vorherigen Abschnitt.

Nachdem das Backup-Objekt in die richtige Region kopiert wurde und die richtigen Berechtigungen angewendet wurden, können Sie den Cluster weiter wiederherstellen.

Sie stellen eine .rdb-Datei mit mehreren Datenbanken in einem ElastiCache-Cluster (Cluster-Modus aktiviert) wieder her

Sie können eine Redis-Backup-Datei (.rdb), die mehrere Datenbanken enthält, nicht in einem ElastiCache-Cluster (Clustermodus aktiviert) wiederherstellen. ElastiCache (Cluster-Modus aktiviert) unterstützt nicht mehrere Datenbanken. Alle Schlüssel sollten sich in DB0 befinden. Sie können überprüfen, ob dies die Ursache für den Wiederherstellungsfehler ist, indem Sie ElastiCache-Ereignisse überprüfen.

Das folgende ElastiCache-Beispielereignis zeigt, dass die Erstellung der Redis-Replikationsgruppe „Test“ aufgrund der RDB-Datei, die mehrere Datenbanken enthält, fehlgeschlagen ist.

Restore from snapshot failed for node group 0001 in replication group test. To restore a snapshot in cluster mode, all keys in the RDB file should reside in DB 0. Snapshot ID: arn:aws:s3:::example-bucket/multidb.rdb

Gehen Sie wie folgt vor, um das Problem zu beheben:

1.    Stellen Sie sicher, dass alle Schlüssel in eine einzige Datenbank migriert werden.

Hinweis: Wenn sich die Quelldatenbank auf ElastiCache Redis befindet, wird der migrate-Befehl nicht unterstützt.

2.    Nachdem sich alle Schlüssel in derselben Datenbank befinden, können Sie ein lokales Backup Ihrer Redis-Datenbank erstellen, das Backup auf Amazon S3 hochladen und die Wiederherstellung in einem ElastiCache-Cluster (Clustermodus aktiviert) fortsetzen.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren