Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Entitäten exportieren und importieren

Auf dieser Seite wird beschrieben, wie Entitäten in Firestore im Datastore-Modus mithilfe des verwalteten Export- und Importdienstes exportiert und importiert werden. Der verwaltete Export- und Importdienst ist über die Cloud Console, das gcloud-Befehlszeilentool und die Datastore Admin API (REST, RPC) verfügbar.

Mit dem verwalteten Export- und Importdienst können Sie versehentlich gelöschte Daten wiederherstellen und Daten für die Offlineverarbeitung exportieren. Sie können alle Entitäten oder nur bestimmte Arten von Entitäten exportieren. Ebenso können Sie alle Daten eines Exports oder nur bestimmte Arten importieren. Berücksichtigen Sie bei der Verwendung des verwalteten Export- und Importdiensts Folgendes:

  • Der Exportdienst verwendet Eventual Consistency-Lesevorgänge. Sie können nicht davon ausgehen, dass ein Export zu einem bestimmten Zeitpunkt stattfindet. Der Export kann Entitäten einbeziehen, die nach dem Beginn des Exports geschrieben wurden, und Entitäten ausschließen, die vor dem Beginn des Exports geschrieben wurden.

  • Ein Export enthält keine Indexe. Beim Importieren werden die erforderlichen Indexe automatisch entsprechend den aktuellen Indexdefinitionen Ihrer Datenbank neu erstellt. Entitätsspezifische Attributwert-Indexeinstellungen werden exportiert und während des Imports berücksichtigt.

  • Beim Importieren werden Entitäten keine neuen IDs zugewiesen. Importe verwenden die zum Zeitpunkt des Exports vorhandenen IDs und überschreiben alle vorhandenen Entitäten mit derselben ID. Während eines Imports werden die IDs für den Zeitraum reserviert, in dem die Entitäten importiert werden. Durch diese Funktion werden ID-Kollisionen mit neuen Entitäten verhindert, wenn Schreibvorgänge während der Ausführung eines Imports aktiviert sind.

  • Wenn eine Entität in Ihrer Datenbank nicht von einem Import betroffen ist, verbleibt sie nach dem Import in der Datenbank.

  • Aus einer Datenbank im Datastore-Modus exportierte Daten können in eine andere Datenbank im Datastore-Modus importiert werden, auch wenn sich diese in einem anderen Projekt befindet.

  • Im verwalteten Export- und Importdienst ist die Anzahl gleichzeitiger Exporte und Importe auf 50 begrenzt. Je Projekt sind bis zu 20 Export- und Importanfragen pro Minute möglich. Für jede Anfrage begrenzt der Dienst die Anzahl der Kombinationen von Entitätsfiltern auf 100.

  • Die Ausgabe eines verwalteten Exports verwendet das LevelDB-Logformat.

  • Sie müssen beim Exportieren einen Entitätsfilter angeben, um nur einen Teil der Entitäten zu importieren oder Daten in BigQuery zu importieren.

Vorbereitung

Bevor Sie den verwalteten Export- und Importdienst verwenden können:

  1. Aktivieren Sie die Abrechnung für Ihr Google Cloud-Projekt. Die Export- und Importfunktion kann nur für Google Cloud-Projekte mit aktivierter Abrechnung verwendet werden.

  2. Erstellen Sie einen Cloud Storage-Bucket am selben Speicherort, an dem sich Ihre Firestore-Datenbank im Datastore-Modus befindet. Einen Bucket mit der Funktion "Anfragesteller bezahlt" können Sie nicht für Export- und Importvorgänge verwenden.

  3. Wenn Sie Daten exportieren, weisen Sie Ihrem Nutzerkonto eine IAM-Rolle zu, die die Berechtigung datastore.databases.export gewährt. Wenn Sie Daten importieren, weisen Sie eine Rolle mit der Berechtigung datastore.databases.import zu. Die Rolle Datastore Import Export Admin beispielsweise gewährt beide Berechtigungen.

  4. Wenn sich der Cloud Storage-Bucket in einem anderen Projekt befindet, gewähren Sie dem Standarddienstkonto Ihres Projekts Zugriff auf den Bucket.

gcloud für das Projekt einrichten

Wenn Sie Ihre Import- und Exportvorgänge mit gcloud starten möchten, richten Sie gcloud ein und stellen Sie auf eine der folgenden Arten eine Verbindung zu Ihrem Projekt her:

Verwaltete Export- und Importvorgänge starten

In diesem Abschnitt wird beschrieben, wie ein verwalteter Export- oder Importvorgang gestartet wird.

Alle Entitäten exportieren

Console

  1. Rufen Sie in der Google Cloud Console die Seite Datastore-Entitäten exportieren auf.

    Zur Seite "Datastore-Entitäten exportieren".

  2. Setzen Sie das Feld Namespace auf All Namespaces und das Feld Art auf All Kinds.

  3. Geben Sie unter Ziel den Namen Ihres Cloud Storage-Buckets ein.

  4. Klicken Sie auf Exportieren.

In der Console wird die Seite Entitäten geöffnet. Dort wird angezeigt, ob die verwaltete Exportanfrage erfolgreich war oder fehlgeschlagen ist.

In der Console ist auch die Schaltfläche Status anzeigen vorhanden. Klicken Sie auf diese Schaltfläche, um ein Cloud Shell-Terminal zu öffnen, das bereits den gcloud-Befehl zum Abrufen des Status Ihres Vorgangs enthält.

Führen Sie diesen Befehl aus, wenn Sie den Status des Vorgangs abrufen möchten.

gcloud

Verwenden Sie den Befehl gcloud datastore export, um alle Entitäten in Ihrer Datenbank zu exportieren.

 gcloud datastore export gs://bucket-name --async

Dabei ist bucket-name der Name Ihres Cloud Storage-Buckets und ein optionales Präfix, z. B. bucket-name/firestore-exports/export-name. Sie können dasselbe Präfix nicht für einen anderen Exportvorgang verwenden. Wenn Sie kein Dateipräfix angeben, erstellt der verwaltete Exportdienst ein Präfix anhand der aktuellen Uhrzeit.

Verwenden Sie das Flag --async, damit gcloud nicht wartet, bis der Vorgang abgeschlossen ist. Wenn Sie das Flag --async weglassen, können Sie Ctrl+c eingeben, um das Warten auf einen Vorgang zu beenden. Dies bricht den Vorgang aber nicht ab.

REST

Ersetzen Sie in den folgenden Anweisungen diese Werte:

  • project-id: Ihre Projekt-ID
  • bucket-name: Name Ihres Cloud Storage-Buckets

HTTP-Methode und URL:

POST https://datastore.googleapis.com/v1/projects/project-id:export

JSON-Text anfordern:

{
  "outputUrlPrefix": "gs://bucket-name",
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie müssten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/project-id/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata",
    "common": {
      "startTime": "2019-09-18T18:42:26.591949Z",
      "operationType": "EXPORT_ENTITIES",
      "state": "PROCESSING"
    },
    "entityFilter": {},
    "outputUrlPrefix": "gs://bucket-name/2019-09-18T18:42:26_85726"
  }
}
Die Antwort ist ein lang andauernder Vorgang, bei dem Sie prüfen können, ob er abgeschlossen wurde.

Bestimmte Arten oder Namespaces exportieren

Um eine bestimmte Teilmenge von Arten und/oder Namespaces zu exportieren, setzen Sie einen Entitätsfilter mit Werten für Arten und Namespace-IDs. Jede Anfrage ist auf 100 Kombinationen von Entitätsfiltern beschränkt, wobei jede Kombination aus gefiltertem Art und Namespace als separater Filter auf dieses Limit angerechnet wird.

Console

In der Console können Sie entweder alle Arten oder eine bestimmte Art auswählen. Ebenso können Sie alle Namespaces oder einen bestimmten Namespace auswählen.

Um eine Liste der zu exportierenden Namespaces und Arten anzugeben, verwenden Sie gcloud.

  1. Rufen Sie in der Google Cloud Console die Seite Datastore-Entitäten exportieren auf.

    Zur Seite "Datastore-Entitäten exportieren".

  2. Stellen Sie das Feld Namespace auf All Namespaces oder auf den Namen eines Ihrer Namespaces ein.

  3. Stellen Sie das Feld Art auf All Kinds oder auf den Namen einer Art ein.

  4. Geben Sie unter Ziel den Namen Ihres Cloud Storage-Buckets ein.

  5. Klicken Sie auf Exportieren.

In der Console wird die Seite Entitäten geöffnet. Dort wird angezeigt, ob die verwaltete Exportanfrage erfolgreich war oder fehlgeschlagen ist.

In der Console ist auch die Schaltfläche Status anzeigen vorhanden. Klicken Sie auf diese Schaltfläche, um ein Cloud Shell-Terminal zu öffnen, das bereits den gcloud-Befehl zum Abrufen des Status Ihres Vorgangs enthält.

Führen Sie diesen Befehl aus, wenn Sie den Status des Vorgangs abrufen möchten.

gcloud

gcloud datastore export --kinds="KIND1,KIND2" --namespaces="(default),NAMESPACE2" gs://bucket-name --async

Dabei ist bucket-name der Name Ihres Cloud Storage-Buckets und ein optionales Präfix, z. B. bucket-name/firestore-exports/export-name. Sie können dasselbe Präfix nicht für einen anderen Exportvorgang verwenden. Wenn Sie kein Dateipräfix angeben, erstellt der verwaltete Exportdienst ein Präfix anhand der aktuellen Uhrzeit.

Verwenden Sie das Flag --async, damit gcloud nicht wartet, bis der Vorgang abgeschlossen ist. Wenn Sie das Flag --async weglassen, können Sie Ctrl+c eingeben, um das Warten auf einen Vorgang zu beenden. Dies bricht den Vorgang aber nicht ab.

REST

Ersetzen Sie in den folgenden Anweisungen diese Werte:

  • project-id: Ihre Projekt-ID
  • bucket-name: Name Ihres Cloud Storage-Buckets
  • kind: Entitätstyp
  • namespace: Namespace-ID (verwenden Sie "" für die Standard-Namespace-ID)

HTTP-Methode und URL:

POST https://datastore.googleapis.com/v1/projects/project-id:export

JSON-Text anfordern:

{
  "outputUrlPrefix": "gs://bucket-name",
  "entityFilter": {
    "kinds": ["kind"],
    "namespaceIds": ["namespace"],
  },
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie müssten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/project-id/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata",
    "common": {
      "startTime": "2019-09-18T21:17:36.232704Z",
      "operationType": "EXPORT_ENTITIES",
      "state": "PROCESSING"
    },
    "entityFilter": {
      "kinds": [
        "Task"
      ],
      "namespaceIds": [
        ""
      ]
    },
    "outputUrlPrefix": "gs://bucket-name/2019-09-18T21:17:36_82974"
  }
}
Die Antwort ist ein lang andauernder Vorgang, bei dem Sie prüfen können, ob er abgeschlossen wurde.

Metadatendateien

Beim Exportvorgang wird für jede angegebene Kombination von Namespace und Art eine Metadatendatei erstellt. Metadatendateien heißen in der Regel NAMESPACE_NAME_KIND_NAME.export_metadata. Wenn jedoch der Name eines Namespace oder einer Art einen ungültigen Cloud Storage-Objektnamen ergeben würde, erhält die Datei den Namen export[NUM].export_metadata.

Die Metadatendateien sind Protokollpuffer und können mit dem Protokollcompiler protoc decodiert werden. Sie können beispielsweise eine Metadatendatei decodieren, um den Namespace und die Art der Exportdateien zu bestimmen:

protoc --decode_raw < export0.export_metadata

Alle Entitäten importieren

Console

  1. Rufen Sie in der Google Cloud Console die Seite Datastore-Entitäten importieren auf.

    Zur Seite "Datastore-Entitäten importieren"

  2. Klicken Sie im Feld File auf Durchsuchen und wählen Sie eine overall_export_metadata-Datei aus.

  3. Setzen Sie das Feld Namespace auf All Namespaces und das Feld Art auf All Kinds.

  4. Klicken Sie auf Importieren.

In der Console wird die Seite Entitäten geöffnet. Dort wird angezeigt, ob die verwaltete Importanfrage erfolgreich war oder fehlgeschlagen ist.

In der Console ist auch die Schaltfläche Status anzeigen vorhanden. Klicken Sie auf diese Schaltfläche, um ein Cloud Shell-Terminal zu öffnen, das bereits den gcloud-Befehl zum Abrufen des Status Ihres Vorgangs enthält.

Führen Sie diesen Befehl aus, wenn Sie den Status des Vorgangs abrufen möchten.

gcloud

Verwenden Sie den Befehl gcloud datastore import für den Import aller Entitäten, die zuvor mit dem verwalteten Exportdienst exportiert wurden.

gcloud datastore import gs://bucket-name/file-path/file-name.overall_export_metadata --async

Dabei ist bucket-name/file-path/file-name der Pfad zur Datei overall_export_metadata in Ihrem Cloud Storage-Bucket.

Verwenden Sie das Flag --async, damit gcloud nicht wartet, bis der Vorgang abgeschlossen ist. Wenn Sie das Flag --async weglassen, können Sie Ctrl+c eingeben, um das Warten auf einen Vorgang zu beenden. Dies bricht den Vorgang aber nicht ab.

REST

Ersetzen Sie in den folgenden Anweisungen diese Werte:

  • project-id: Ihre Projekt-ID
  • bucket-name: Name Ihres Cloud Storage-Buckets
  • object-name: Name Ihres Cloud Storage-Objekts (Beispiel: 2017-05-25T23:54:39_76544/2017-05-25T23:54:39_76544.overall_export_metadata)

HTTP-Methode und URL:

POST https://datastore.googleapis.com/v1/projects/project-id:import

JSON-Text anfordern:

{
  "inputUrl": "gs://bucket-name/object-name",
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie müssten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/project-id/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.datastore.admin.v1.ImportEntitiesMetadata",
    "common": {
      "startTime": "2019-09-18T21:25:02.863621Z",
      "operationType": "IMPORT_ENTITIES",
      "state": "PROCESSING"
    },
    "entityFilter": {},
    "inputUrl": "gs://bucket-name/2019-09-18T18:42:26_85726/2019-09-18T18:42:26_85726.overall_export_metadata"
  }
}
Die Antwort ist ein lang andauernder Vorgang, bei dem Sie prüfen können, ob er abgeschlossen wurde.

overall_export_metadata-Datei finden

Sie können den für den Importspeicherort zu verwendenden Wert mithilfe des Cloud Storage-Browsers in der Google Cloud Console ermitteln:

Cloud Storage-Browser öffnen

Sie können auch abgeschlossene Vorgänge auflisten und beschreiben. Im Feld outputURL wird der Name der Datei overall_export_metadata angezeigt:

"outputUrl": "gs://bucket-name/2017-05-25T23:54:39_76544/2017-05-25T23:54:39_76544.overall_export_metadata",

Bestimmte Arten oder Namespaces importieren

Um eine bestimmte Teilmenge von Arten und/oder Namespaces zu importieren, setzen Sie einen Entitätsfilter mit Werten für Arten und Namespace-IDs.

Arten und Namespaces lassen sich nur dann angeben, wenn die Exportdateien mit einem Entitätsfilter erstellt wurden. Der Import einer Teilmenge von Arten und Namespaces aus einem Export aller Entitäten wird nicht unterstützt.

Console

In der Console können Sie entweder alle Arten oder eine bestimmte Art auswählen. Ebenso können Sie alle Namespaces oder einen bestimmten Namespace auswählen.

Um eine Liste der zu importierenden Namespaces und Arten anzugeben, verwenden Sie gcloud.

  1. Rufen Sie in der Google Cloud Console die Seite Datastore-Entitäten importieren auf.

    Zur Seite "Datastore-Entitäten importieren"

  2. Klicken Sie im Feld File auf Durchsuchen und wählen Sie eine overall_export_metadata-Datei aus.

  3. Setzen Sie das Feld Namespace auf All Namespaces oder auf einen bestimmten Namespace.

  4. Setzen Sie das Feld Art auf All Kinds oder auf eine bestimmte Art.

  5. Klicken Sie auf Importieren.

In der Console wird die Seite Entitäten geöffnet. Dort wird angezeigt, ob die verwaltete Importanfrage erfolgreich war oder fehlgeschlagen ist.

In der Console ist auch die Schaltfläche Status anzeigen vorhanden. Klicken Sie auf diese Schaltfläche, um ein Cloud Shell-Terminal zu öffnen, das bereits den gcloud-Befehl zum Abrufen des Status Ihres Vorgangs enthält.

Führen Sie diesen Befehl aus, wenn Sie den Status des Vorgangs abrufen möchten.

gcloud

gcloud datastore import --kinds="KIND1,KIND2" --namespaces="(default),NAMESPACE2" gs://bucket-name/file-path/file-name.overall_export_metadata --async

Dabei ist bucket-name/file-path/file-name der Pfad zur Datei overall_export_metadata in Ihrem Cloud Storage-Bucket.

Verwenden Sie das Flag --async, damit gcloud nicht wartet, bis der Vorgang abgeschlossen ist. Wenn Sie das Flag --async weglassen, können Sie Ctrl+c eingeben, um das Warten auf einen Vorgang zu beenden. Dies bricht den Vorgang aber nicht ab.

REST

Ersetzen Sie in den folgenden Anweisungen diese Werte:

  • project-id: Ihre Projekt-ID
  • bucket-name: Name Ihres Cloud Storage-Buckets
  • object-name: Name Ihres Cloud Storage-Objekts (Beispiel: 2017-05-25T23:54:39_76544/2017-05-25T23:54:39_76544.overall_export_metadata)
  • kind: Entitätstyp
  • namespace: Namespace-ID (verwenden Sie "" für die Standard-Namespace-ID)

HTTP-Methode und URL:

POST https://datastore.googleapis.com/v1/projects/project-id:import

JSON-Text anfordern:

{
  "inputUrl": "gs://bucket-name/object-name",
  "entityFilter": {
    "kinds": ["kind"],
    "namespaceIds": ["namespace"],
  },
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie müssten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/project-id/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.datastore.admin.v1.ImportEntitiesMetadata",
    "common": {
      "startTime": "2019-09-18T21:51:02.830608Z",
      "operationType": "IMPORT_ENTITIES",
      "state": "PROCESSING"
    },
    "entityFilter": {
      "kinds": [
        "Task"
      ],
      "namespaceIds": [
        ""
      ]
    },
    "inputUrl": "gs://bucket-name/2019-09-18T21:49:25_96833/2019-09-18T21:49:25_96833.overall_export_metadata"
  }
}
Die Antwort ist ein lang andauernder Vorgang, bei dem Sie prüfen können, ob er abgeschlossen wurde.

Transformationen importieren

Ein Importvorgang aktualisiert Entitätsschlüssel und Schlüsselreferenzattribute in den Importdaten mit der Projekt-ID des Zielprojekts. Wenn durch diese Aktualisierung die Entitätsgrößen erhöht werden, kann es bei Importvorgängen zu Fehlermeldungen wie "Entität ist zu groß" oder "Indexeinträge zu groß" kommen.

Durch den Import in ein Zielprojekt mit einer kürzeren Projekt-ID können Sie diese Fehler vermeiden.

Lange laufende Vorgänge verwalten

Verwaltete Import- und Exportvorgänge sind lang andauernde Vorgänge. Diese Methodenaufrufe können sehr viel Zeit in Anspruch nehmen.

Nachdem Sie einen Export- oder Importvorgang gestartet haben, weist der Datastore-Modus dem Vorgang einen eindeutigen Namen zu. Sie können den Vorgangsnamen verwenden, um den Vorgang zu löschen, abzubrechen oder den Status zu prüfen.

Vorgangsnamen haben das Präfix projects/[PROJECT_ID]/databases/(default)/operations/, zum Beispiel:

projects/project-id/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

Wenn Sie für die Befehle describe, cancel und delete einen Vorgangsnamen angeben, können Sie das Präfix weglassen.

Lang andauernde Vorgänge auflisten

Verwenden Sie zum Auflisten von Vorgängen mit langer Ausführungszeit den Befehl gcloud datastore operations list: Dieser Befehl listet laufende und kürzlich abgeschlossene Vorgänge auf. Die Vorgänge sind nach Abschluss einige Tage lang in der Liste enthalten:

gcloud

gcloud datastore operations list

REST

Ersetzen Sie in den folgenden Anweisungen diese Werte:

  • project-id: Ihre Projekt-ID

HTTP-Methode und URL:

GET https://datastore.googleapis.com/v1/projects/project-id/operations

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Weitere Informationen zur Antwort finden Sie weiter unten.

Beispiel: Ein kürzlich abgeschlossener Exportvorgang enthält die folgenden Informationen:

{
  "operations": [
    {
      "name": "projects/project-id/operations/ASAyMDAwOTEzBxp0bHVhZmVkBxJsYXJ0bmVjc3Utc2Jvai1uaW1kYRQKKhI",
      "metadata": {
        "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata",
        "common": {
          "startTime": "2017-12-05T23:01:39.583780Z",
          "endTime": "2017-12-05T23:54:58.474750Z",
          "operationType": "EXPORT_ENTITIES"
        },
        "progressEntities": {
          "workCompleted": "21933027",
          "workEstimated": "21898182"
        },
        "progressBytes": {
          "workCompleted": "12421451292",
          "workEstimated": "9759724245"
        },
        "entityFilter": {
          "namespaceIds": [
            ""
          ]
        },
        "outputUrlPrefix": "gs://bucket-name"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesResponse",
        "outputUrl": "gs://bucket-name/2017-05-25T23:54:39_76544/2017-05-25T23:54:39_76544.overall_export_metadata"
      }
    }
  ]
}

Einzelnen Vorgang beschreiben

Anstelle aller Vorgänge mit langer Ausführungszeit können Sie auch die Details eines einzelnen Vorgangs auflisten:

gcloud

Verwenden Sie den Befehl operations describe, um den Status eines Export- oder Importvorgangs abzurufen.

gcloud datastore operations describe operation-name

REST

Ersetzen Sie in den folgenden Anweisungen diese Werte:

  • project-id: Ihre Projekt-ID
  • operation-name: Der Name des Vorgangs

HTTP-Methode und URL:

GET https://datastore.googleapis.com/v1/projects/project-id/operations/operation-name

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/project-id/operations/ASA3ODAwMzQxNjIyChp0bHVhZmVkBxJsYXJ0bmVjc3Utc2Jvai1uaW1kYRQKLRI",
  "metadata": {
    "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata",
    "common": {
      "startTime": "2019-10-08T20:07:28.105236Z",
      "endTime": "2019-10-08T20:07:36.310653Z",
      "operationType": "EXPORT_ENTITIES",
      "state": "SUCCESSFUL"
    },
    "progressEntities": {
      "workCompleted": "21",
      "workEstimated": "21"
    },
    "progressBytes": {
      "workCompleted": "2272",
      "workEstimated": "2065"
    },
    "entityFilter": {},
    "outputUrlPrefix": "gs://bucket-name/2019-10-08T20:07:28_28481"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesResponse",
    "outputUrl": "gs://bucket-name/2019-10-08T20:07:28_28481/2019-10-08T20:07:28_28481.overall_export_metadata"
  }
}

Fertigstellungszeit schätzen

Während der Ausführung eines Vorgangs wird im Feld state der Gesamtstatus des Vorgangs angezeigt.

Eine Anfrage für den Status eines Vorgangs mit langer Ausführungszeit gibt auch die Messwerte workEstimated und workCompleted zurück. Beide Messwerte werden als Anzahl der Byte und als Anzahl der Entitäten zurückgegeben: workEstimated gibt die geschätzte Gesamtanzahl der Byte und Entitäten an, die ein Vorgang verarbeitet. Die Schätzungen beruhen auf Datenbankstatistiken. workCompleted gibt die Anzahl der bis jetzt verarbeiteten Byte und Entitäten an. Nach Abschluss des Vorgangs gibt workCompleted die Gesamtzahl der tatsächlich verarbeiteten Byte und Entitäten zurück. Dieser Wert ist möglicherweise größer als der Wert von workEstimated.

Teilen Sie workCompleted durch workEstimated, um eine grobe Schätzung des Fortschritts zu erhalten. Die Schätzung ist möglicherweise ungenau, da sie von der verzögerten Statistikerfassung abhängt.

Das folgende Beispiel zeigt den Fortschrittsstatus eines Exportvorgangs:

{
  "operations": [
    {
      "name": "projects/project-id/operations/ASAyMDAwOTEzBxp0bHVhZmVkBxJsYXJ0bmVjc3Utc2Jvai1uaW1kYRQKKhI",
      "metadata": {
        "@type": "type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata",
        ...
        "progressEntities": {
          "workCompleted": "1",
          "workEstimated": "3"
        },
        "progressBytes": {
          "workCompleted": "85",
          "workEstimated": "257"
        },
        ...

Wenn ein Vorgang abgeschlossen ist, enthält die Vorgangsbeschreibung "done": true. Der Wert des Feldes state stellt das Ergebnis des Vorgangs dar. Wenn das Feld done nicht in der Antwort festgelegt ist, lautet der Wert false. Verlassen Sie sich bei laufenden Vorgängen nicht auf die Existenz des Werts done.

Vorgang abbrechen

Verwenden Sie den Befehl operations cancel, um einen laufenden Vorgang zu stoppen:

gcloud datastore operations cancel operation-name

Durch das Abbrechen eines laufenden Vorgangs wird der Vorgang nicht rückgängig gemacht. Bei einem abgebrochenen Exportvorgang werden bereits in Cloud Storage exportierte Dokumente dort beibehalten. Bei einem abgebrochenen Importvorgang werden die bereits an der Datenbank vorgenommenen Aktualisierungen beibehalten. Sie können einen unvollständigen Export nicht importieren.

Vorgang löschen

Verwenden Sie den Befehl operations delete, um einen Vorgang aus der Ausgabe von operations list zu entfernen. Mit diesem Befehl werden keine Exportdateien aus Cloud Storage gelöscht.

gcloud datastore operations delete operation-name

Abrechnung und Preise für verwaltete Exporte und Importe

Sie müssen die Abrechnung für Ihr Google Cloud-Projekt aktivieren, bevor Sie den verwalteten Export- und Importdienst verwenden können. Export- und Importvorgänge tragen auf folgende Weise zu Ihren Google Cloud-Kosten bei:

Die Kosten für Export- und Importvorgänge werden nicht auf das Ausgabenlimit von App Engine angerechnet. Export- oder Importvorgänge können erst nach Abschluss eine Google Cloud-Budgetbenachrichtigung auslösen. Die während eines Export- oder Importvorgangs ausgeführten Lese- und Schreibvorgänge werden nach Abschluss des Vorgangs auf Ihr Tageskontingent angerechnet.

Preise für Export und Import aufrufen

Bei Export- und Importvorgängen wird das Label goog-firestoremanaged:exportimport auf abgerechnete Vorgänge angewendet. Sie können dieses Label auf der Seite Cloud Billing-Berichte verwenden, um die Kosten für Import- und Exportvorgänge anzusehen:

Über das Filtermenü auf das Label "goog-firestoremanaged" zugreifen.

Berechtigungen

Zum Ausführen von Export- und Importvorgängen benötigen Ihr Nutzerkonto und das Standarddienstkonto Ihres Projekts die unten beschriebenen Identitäts- und Zugriffsverwaltungsberechtigungen.

Nutzerkontoberechtigungen

Zum Starten des Vorgangs müssen das Nutzerkonto oder Dienstkonto die IAM-Berechtigungen datastore.databases.export und datastore.databases.import haben. Wenn Sie der Projektinhaber sind, hat Ihr Konto bereits die erforderlichen Berechtigungen. Andernfalls gewähren die folgenden IAM-Rollen die erforderlichen Berechtigungen:

  • Datastore-Inhaber
  • Import-Export-Administrator für Datastore

Ein Projektinhaber kann eine dieser Rollen durch Ausführen der Schritte unter Zugriffsrechte erteilen zuweisen.

Standardberechtigungen für Dienstkonten

Jedes Google Cloud-Projekt erstellt automatisch ein Standarddienstkonto mit dem Namen PROJECT_ID@appspot.gserviceaccount.com. Export- und Importvorgänge verwenden dieses Dienstkonto, um Cloud Storage-Vorgänge zu autorisieren.

Das Standarddienstkonto Ihres Projekts erfordert Zugriff auf den Cloud Storage-Bucket, der in einem Export- oder Importvorgang verwendet wird. Wenn sich Ihr Cloud Storage-Bucket im selben Projekt wie Ihre Datenbank im Datastore-Modus befindet, hat das Standarddienstkonto standardmäßig Zugriff auf den Bucket.

Wenn sich der Cloud Storage-Bucket in einem anderen Projekt befindet, müssen Sie dem Standarddienstkonto Zugriff auf den Cloud Storage-Bucket gewähren.

Dem Standarddienstkonto Rollen zuweisen

Sie können das gsutil-Befehlszeilentool verwenden, um eine der folgenden Rollen zuzuweisen. Führen Sie folgenden Befehl aus, um dem Standarddienstkonto beispielsweise die Rolle des Storage-Administrators zuzuweisen:

gsutil iam ch serviceAccount:[PROJECT_ID]@appspot.gserviceaccount.com:roles/storage.admin \
    gs://[BUCKET_NAME]

Alternativ können Sie diese Rolle mithilfe der Cloud Console zuweisen.

Exportvorgänge

Ändern Sie bei Exportvorgängen mit einem Bucket in einem anderen Projekt die Berechtigungen des Buckets, um dem Standarddienstkonto des Projekts, das Ihre Datenbank im Datastore-Modus enthält, eine der folgenden Cloud Storage-Rollen zuzuweisen:

  • Storage-Administrator
  • Storage-Objekt-Administrator
  • Autor alter Storage-Buckets

Sie können auch eine benutzerdefinierte IAM-Rolle mit etwas anderen Berechtigungen als in den oben aufgeführten Rollen erstellen:

  • storage.buckets.get
  • storage.objects.create
  • storage.objects.list

Importvorgänge

Ändern Sie bei Importvorgängen mit einem Bucket in einem anderen Projekt die Berechtigungen des Buckets, um dem Standarddienstkonto des Projekts, das Ihre Datenbank im Datastore-Modus enthält, eine der folgenden Cloud Storage-Rollen zuzuweisen:

  • Storage-Administrator
  • Sowohl Storage-Objekt-Betrachter als auch Leser alter Storage-Buckets

Mit den folgenden Berechtigungen können Sie auch eine benutzerdefinierte IAM-Rolle erstellen:

  • storage.buckets.get
  • storage.objects.get

Standarddienstkonto deaktiviert oder gelöscht

Wenn Sie Ihr App Engine-Standarddienstkonto deaktivieren oder löschen, verliert Ihre App Engine-Anwendung den Zugriff auf Ihre Datenbank im Datastore-Modus. Wenn Sie Ihr App Engine-Dienstkonto deaktiviert haben, können Sie es wieder aktivieren. Siehe Dienstkonto aktivieren. Wenn Sie Ihr App Engine-Dienstkonto innerhalb der letzten 30 Tage gelöscht haben, können Sie es wiederherstellen. Weitere Informationen finden Sie unter Dienstkonto wiederherstellen.

Unterschiede zu Datastore Admin-Sicherungen

Wenn Sie zuvor die Datastore Admin-Konsole für Sicherungen verwendet haben, sollten Sie die folgenden Unterschiede beachten:

  • Exporte, die bei einem verwalteten Export erstellt wurden, werden nicht in der Datastore Admin-Konsole angezeigt. Verwaltete Exporte und Importe sind ein neuer Dienst. Dieser teilt keine Daten mit der Sicherungs- und Wiederherstellungsfunktion von App Engine, die über die Cloud Console verwaltet wird.

  • Der verwaltete Export- und Importdienst unterstützt nicht dieselben Metadaten wie die Datastore Admin-Sicherung und speichert den Fortschrittsstatus nicht in Ihrer Datenbank. Weitere Informationen zum Prüfen des Fortschritts von Export- und Importvorgängen finden Sie unter Umgang mit lang andauernden Vorgängen

  • Sie können keine Dienstlogs von verwalteten Export- und Importvorgängen abrufen.

  • Der verwaltete Importdienst ist abwärtskompatibel mit Datastore Admin-Sicherungsdateien. Sie können eine Datastore Admin-Sicherungsdatei mithilfe des verwalteten Importdiensts importieren. Die Ausgabe eines verwalteten Exports kann jedoch nicht mithilfe der Datastore Admin-Konsole importiert werden.

Audit-Logs

Firestore im Datastore-Modus schreibt Audit-Logs zu Administratoraktivitäten für Cloud-Audit-Logs. Audit-Logs zu Administratoraktivitäten umfassen Exportvorgänge, Importvorgänge und Indexierungsvorgänge. Informationen zum Anzeigen von Audit-Logs zu Administratoraktivitäten für Ihre Datenbank im Datastore-Modus finden Sie unter Audit-Logs ansehen.

Audit-Logs zu Administratoraktivitäten im Datastore-Modus werden unter den Ressourcentypen Cloud Datastore Database und Cloud Datastore Index angezeigt. Sowohl Firestore- als auch Datastore-Administratoraktivitätslogs werden unter diesen Ressourcentypen angezeigt. Firestore im Datastore-Modus protokolliert die folgenden Vorgänge:

Audit-Logkategorie Vorgänge im Datastore-Modus
Administratoraktivität DatastoreAdmin.CreateIndex
DatastoreAdmin.DeleteIndex
DatastoreAdmin.ExportEntities
DatastoreAdmin.GetIndex
DatastoreAdmin.ImportEntities
DatastoreAdmin.ListIndexes

In BigQuery importieren

Informationen zum Importieren von Daten aus einem verwalteten Export in BigQuery finden Sie unter Daten des Datastore-Exportdienstes laden.

Daten, die ohne Angabe eines Entitätsfilters exportiert wurden, können nicht in BigQuery geladen werden. Wenn Sie Daten in BigQuery importieren möchten, muss die Exportanfrage im Entitätsfilter einen oder mehrere Artnamen enthalten.

BigQuery-Spaltenlimit

In BigQuery gilt ein Limit von 10.000 Spalten pro Tabelle. Exportvorgänge generieren ein BigQuery-Tabellenschema für jede Art. In diesem Schema wird jedes eindeutige Attribut innerhalb der Entitäten einer Art zu einer Schemaspalte.

Wenn das BigQuery-Schema einer Art 10.000 Spalten überschreitet, versucht der Exportvorgang, unterhalb des Spaltenlimits zu bleiben. Dafür werden eingebettete Entitäten als Blobs behandelt. Wenn durch diese Konvertierung die Anzahl der Spalten im Schema unter 10.000 bleibt, können Sie die Daten in BigQuery laden, aber Sie können die Attribute innerhalb eingebetteter Entitäten nicht abfragen. Wenn die Anzahl der Spalten 10.000 weiterhin überschreitet, generiert der Exportvorgang kein BigQuery-Schema für die Art und Sie können die Daten nicht in BigQuery laden.