Import- und Exportübersicht

Auf dieser Seite wird erläutert, wie Importe und Exporte in Memorystore for Redis funktionieren.

Die Import- und Exportfunktion verwendet die native RDB-Snapshot-Funktion von Redis, um Daten in eine Memorystore for Redis-Instanz zu importieren oder daraus zu exportieren. Die Verwendung des nativen RDB-Formats verhindert ein Lock-in und vereinfacht das Verschieben von Daten innerhalb und außerhalb von Google Cloud. Beim Import und Export werden RDB-Dateien in Cloud Storage-Buckets gespeichert.

Das Verhalten einer Memorystore for Redis-Instanz während des Exports ist dem Befehl BGSAVE in Open Source Redis sehr ähnlich. Memorystore for Redis wird importiert, indem Sie Ihre RDB-Datei in das Datenverzeichnis Ihrer Instanz kopieren.

Eine Anleitung zum Importieren und Exportieren von RDB-Dateien finden Sie unter Daten in eine Redis-Instanz importieren und Daten aus einer Redis-Instanz exportieren.

Eine Anleitung zum Planen von RDB-Exporten mit Cloud Scheduler finden Sie unter Memorystore for Redis-Datenbankexporte mit Cloud Scheduler planen.

Verhalten des Import-Features

  • Für eine optimale Leistung sollten Sie Daten aus Cloud Storage-Buckets importieren, die sich in derselben Region wie Ihre Redis-Instanz befinden.

  • Ihre Redis-Instanz ist während eines Importvorgangs nicht verfügbar. Ihre Instanz ist nach Abschluss des Importvorgangs verfügbar.

  • Wenn ein Import erfolgreich ist, werden die vorhandenen Daten in der Instanz durch die Daten aus der RDB-Datei überschrieben.

  • Wenn ein Import fehlschlägt, wird die Instanz online geschaltet, aber die Daten werden möglicherweise vollständig geleert. Sie können den Import mit derselben RDB-Datei wiederholen oder eine andere RDB-Datei zur Wiederherstellung von Daten verwenden.

  • Ihre Memorystore for Redis-Instanz kann RDB-Dateien aus derselben und einer früheren Redis-Version importieren, aber keine RDB-Dateien aus einer neueren Version.

  • Ein Importvorgang kann abgebrochen werden. Beachten Sie jedoch, dass die Instanz mit einem vollständig geleerten Cache wiederhergestellt wird. Dies gilt sowohl für Instanzen der Basis- als auch der Standardstufe.

  • Eine Instanz kann nur Sicherungen aus älteren Redis-Versionen importieren. Eine Instanz mit Redis 5.0 kann eine aus Redis 4.0 exportierte RDB importieren, eine Instanz mit Redis 4.0 jedoch keine RDB aus Redis 5.0.

Verhalten des Export-Features

  • Sie können während eines Exportvorgangs Daten auf die Redis-Instanz lesen und schreiben. Sie können jedoch keine Verwaltungsvorgänge wie Skalierung, Aktualisierung oder Konfiguration der Instanz durchführen.

  • Ihre Instanz kann während des Exports eine erhöhte Latenz haben.

  • Für eine optimale Leistung sollten Sie Ihre RDB-Sicherungen in Cloud Storage-Buckets exportieren, die sich in derselben Region wie Ihre Redis-Instanz befinden.

  • Während eines Exports wird die RDB-Datei in einem Cloud Storage-Bucket Ihrer Wahl gespeichert.

  • Sie können einen Exportvorgang jederzeit abbrechen. Das Abbrechen hat keine Auswirkungen auf die Daten oder die Verfügbarkeit einer Instanz.

    • Wenn Sie einen Export abbrechen, wird die in den Cloud Storage-Bucket geschriebene RDB-Datei gelöscht und der vom BGSAVE-Prozess verwendete Speicher freigegeben.
  • Ein Export kann eine vorhandene Datei mit demselben Namen ohne zusätzliche Berechtigungen überschreiben, wenn die Google Cloud Console verwendet wird. Für den Export über eine vorhandene Datei mit gcloud benötigt das Nutzerkonto die Berechtigung storage.objects.delete.

Unter hoher Schreiblast exportieren

Wenn Sie einen Export während einer Zeit hoher Schreiblast ausführen, kann sich die Speichernutzung der Instanz um das Doppelte erhöhen, wodurch der Exportvorgang fehlschlägt. Sie sollten Exportvorgänge in Zeiten geringer Schreibvorgänge ausführen. Um zu überwachen, wie viel Redis-Daten in Ihrer Instanz gespeichert sind, können Sie ein Dashboard erstellen, um Ihre Speichernutzung zu überwachen und die Messwerte zur Speichernutzung der Instanz mit der Google Cloud Operations Suite zu überwachen.

Memorystore for Redis-Export verwendet die BGSAVE-Funktion von Redis, um einen Snapshot der Daten in einer Instanz zu erstellen. Beim Ausführen von BGSAVE gibt Redis einen neuen untergeordneten Prozess zum Erstellen des Snapshots zurück. Redis verwendet während dieses Vorgangs copy-on-write.

Dies bedeutet, dass die erste Fork einen minimalen zusätzlichen Speicher zuweist, aber die Seiten, die vom Redis-Server als Schreibtraffic geändert werden, werden dupliziert. Daher verdoppelt sich in Zeiten hoher Schreibvorgänge im schlimmsten Fall der Speicherbedarf von Redis, wodurch der Exportvorgang fehlschlägt.

Während eines BGSAVE-Vorgangs exportieren

Sie können keine Daten exportieren, während ein BGSAVE-Vorgang ausgeführt wird. Memorystore for Redis-Instanzen der Standardstufe führen manchmal vollständige Resynchronisierungsvorgänge oder "vollständige Synchronisierungen" aus, um das primäre und das Replikat zu synchronisieren. Bei einer vollständigen Neusynchronisierung wird der Befehl BGSAVE verwendet, der verhindert, dass Memorystore einen Export durchführt.

Wenn Sie prüfen möchten, ob ein BGSAVE-Vorgang läuft, rufen Sie mit Metrics Explorer den API-Endpunkt redis.googleapis.com/persistence/rdb/bgsave_in_progress auf.

So rufen Sie mit dem Metrics Explorer die Messwerte für eine überwachte Ressource auf:

  1. Wählen Sie in der Google Cloud Console Monitoring aus oder klicken Sie auf die folgende Schaltfläche:
    Zu Monitoring.
  2. Klicken Sie im Navigationsbereich „Monitoring“ auf Metrics Explorer.
  3. Wählen Sie in der Symbolleiste den Tab Explorer aus.
  4. Wählen Sie den Tab Konfiguration aus.
  5. Maximieren Sie das Menü Messwert auswählen und wählen Sie dann über die Untermenüs einen Ressourcentyp und einen Messwert aus. So erstellen Sie beispielsweise die CPU-Auslastung einer virtuellen Maschine:
    1. (Optional) Um die Optionen des Menüs zu reduzieren, geben Sie einen Teil des Messwertnamens in die Filterleiste ein. Geben Sie für dieses Beispiel utilization ein.
    2. Wählen Sie im Menü Aktive Ressourcen die Option VM-Instanz aus.
    3. Wählen Sie im Menü Aktive Messwertkategorien die Option Instanz aus.
    4. Wählen Sie im Menü Aktive Messwerte die Option CPU-Auslastung aus.

Alternativ können Sie Ihre eigenen API-Tools für die Befehlszeile verwenden.

Erforderliche Berechtigungen zum Importieren und Exportieren

Ein Nutzer muss genügend IAM-Berechtigungen konfigurieren, um RDB-Dateien zu importieren oder zu exportieren. Die einfachste Möglichkeit zur Einrichtung von Berechtigungen ist, die IAM-Rollen Cloud Storagestore Redis Admin und Storage Admin auf das Nutzerkonto anzuwenden. Diese Konfiguration kann jedoch für einige Nutzerkonten unangemessen sein, da sie Berechtigungen zum Erstellen, Bearbeiten oder Löschen von Ressourcen gewähren, auf die sie keinen Zugriff haben sollen. Eine Anleitung zum Festlegen von minimalen Berechtigungen finden Sie unter Einschränkungen für den Import und Export gewähren.

Dauer von Importen und Exporten

Die Dauer des Imports oder Exports hängt von der Instanzgröße und der Größe des Datasets in der Instanz ab. Je nach Größe können Importe und Exporte von wenigen Minuten bis hin zu einigen Stunden dauern.

Wenn Sie beispielsweise eine 10-GB-Instanz mit 8 GB belegtem Speicher importieren oder exportieren, kann der Vorgang 5 Minuten dauern. Wenn Sie eine 120-GB-Instanz mit 100 GB belegtem Speicher importieren oder exportieren, kann der Vorgang eine Stunde dauern.

Import oder Export anhalten

Informationen zum Anhalten eines Imports oder Exports finden Sie auf den folgenden Seiten:

Fortschritt des Vorgangs beobachten

Die Zeitschätzung für den Abschluss ist beim Import und Export nicht verfügbar. Auf der Seite mit den Instanzdetails können Sie prüfen, ob der Vorgang läuft. Klicken Sie zum Aufrufen der Seite mit den Instanzdetails auf der Seite Memorystore for Redis-Instanzliste auf Ihre Instanz-ID.

Sie können den Fortschritt eines Importvorgangs auch mit dem folgenden Befehl beobachten:

gcloud redis instances describe [INSTANCE_ID] --region=[REGION]

Dabei gilt:

  • [INSTANCE_ID] ist die ID für Ihre Memorystore for Redis-Instanz.
  • [REGION] ist die Region, in der sich Ihre Instanz befindet.

Der Befehl gibt state: IMPORTING oder state: READY als eines der Beschreibungsfelder aus.

Nicht unterstützte Cloud Storage-Buckets

Cloud Storage-Buckets "Anfragesteller bezahlt" werden für Memorystore-Importe und -Exporte nicht unterstützt.

Cloud Storage-Buckets sichern

Sie sollten sicherstellen, dass Ihr Cloud Storage-Bucket über die richtigen Einschränkungen verfügt, um nicht autorisierten Zugriff auf die darin enthaltene Redis RDB-Sicherung zu verhindern. Informationen zum Schutz Ihrer Cloud Storage-Buckets finden Sie in Cloud Storage unter Zugriffssteuerungsoptionen.

Ausreichend Speicher für den Export sicherstellen

Um zu verhindern, dass der Export Speichermangel verursacht, sollten Sie während des Exportvorgangs 50 % freien Speicherplatz in der Instanz haben. Je nach Schreiblast ist dies möglicherweise nicht immer erforderlich, aber mit 50 % freiem Speicher wird sichergestellt, dass genügend freier Speicherplatz für Kopieraufwand zur Verfügung steht, wenn während des Exportvorgangs viele Seiten betroffen sind.

Wenn Sie die aktuelle Speichernutzung Ihrer Instanz nachvollziehen möchten, richten Sie eine Benachrichtigung der Operations-Suite von Google Cloud ein, um Sie zu informieren, wenn Ihre Speichernutzung einen anpassbaren Schwellenwert erreicht. Darüber hinaus sollten Sie ein Dashboard zur Speicherüberwachung mit der Operations-Suite von Google Cloud einrichten. Anhand dieser Messwerte können Sie die Speichernutzungsmuster Ihrer Instanzen nachvollziehen. Wenn Sie die Speichernutzungsmustern verstehen, können Sie die richtige Größe Ihrer Instanz bestimmen, wenn Sie in regelmäßigen Abständen exportieren.

Exporte und Importe bei Instanzen mit Lesereplikaten

Bei allen Redis-Instanzen, einschließlich Lesereplikatinstanzen, werden Daten vom primären Knoten exportiert.

Bei Lesereplikatinstanzen kann der Export die CPU-Auslastung und den Arbeitsspeicherbedarf auf dem primären Knoten erhöhen.

Beim Importieren von Daten in eine Lesereplikatinstanz wird die primäre Instanz während des Importvorgangs neu gestartet. Die Instanz ist dann erst verfügbar, wenn die neuen Daten vollständig in die Datenbank geladen wurden.

Weitere Informationen