Migracja z wersji Standard na Enterprise

Aby przenieść dane z bazy danych Firestore w wersji Standard do bazy danych Firestore w wersji Enterprise, zalecamy użycie jednej z tych opcji:

  • Funkcje importu i eksportu. Pliki danych z operacji importu są zgodne z wersją Enterprise i Standard.

  • Szablon firestore-to-firestore Dataflow. Usługa Dataflow umożliwia tworzenie potoków danych, a firestore-to-firestore szablon tworzy potok wsadowy między Cloud Firestore bazami danych.

Import i eksport to prostsza opcja, która wymaga mniej opcji konfiguracji.

Szablon Dataflow można bardziej dostosować. Możesz rozszerzyć kod szablonu, aby przeprowadzić częściową migrację lub przekształcić dane. Możesz też kontrolować liczbę i rozmiar instancji roboczych.

Obie opcje obsługują migracje między projektami i regionami.

Migracja danych za pomocą eksportu i importu

Aby przenieść dane za pomocą operacji eksportu i importu, przeczytaj artykuł Eksportowanie i importowanie danych. Aby przenieść dane do bazy danych w innym projekcie, przeczytaj artykuł Przenoszenie danych między projektami.

Migracja danych za pomocą szablonu Dataflow

Aby przenieść dane za pomocą szablonu firestore-to-firestore Dataflow, postępuj zgodnie z tymi instrukcjami.

Zanim zaczniesz

  1. Zanim rozpoczniesz migrację danych, upewnij się, że odzyskiwanie do określonego momentu (PITR) jest włączone w źródłowej bazie danych. Zadanie Dataflow używa PITR do odczytywania danych w sygnaturze czasowej PITR. Jeśli PITR jest wyłączone, zadanie zakończy się niepowodzeniem, jeśli będzie działać dłużej niż godzinę.

  2. Przypisz wymagane role opisane w następnej sekcji.

Wymagane role

Aby przenieść dane z jednej bazy danych do drugiej, przypisz te role. Wymagane uprawnienia możesz też uzyskać za pomocą ról niestandardowych lub innych predefiniowanych ról:

  1. Aby uzyskać uprawnienia potrzebne do utworzenia nowej bazy danych i dostępu do danych Cloud Firestore, poproś administratora o przyznanie Ci w projekcie roli właściciela Cloud Datastore (roles/datastore.owner) w ramach zarządzania tożsamościami i dostępem (IAM).
  2. Aby przyznać zadaniu Dataflow dostęp do odczytu i zapisu w bazach danych Cloud Firestore, przypisz konto usługi instancji roboczej Dataflow (np. PROJECT_NUMBER-compute@) rolę użytkownika Cloud Datastore (roles/datastore.user) w projekcie.

    Więcej informacji o zabezpiezeniach Dataflow znajdziesz w artykule Dataflow zabezpieczenia i uprawnienia.

Więcej informacji o przyznawaniu ról IAM, znajdziesz w artykule Zarządzanie dostępem do projektów, folderów i organizacji.

1. Utwórz nową bazę danych Firestore w wersji Enterprise

Aby przenieść dane z bazy danych w wersji Standard do bazy danych w wersji Enterprise, musisz najpierw utworzyć docelową bazę danych w wersji Enterprise. Zobacz Tworzenie bazy danych.

2. Uruchom szablon Dataflow firestore-to-firestore

Skonfiguruj i uruchom zadanie Dataflow za pomocą szablonu firestore-to-firestore. Szablon obsługuje migrację całej bazy danych lub tylko określonych grup kolekcji.

Ograniczenia

Pamiętaj o tych ograniczeniach dotyczących szablonu firestore-to-firestore Dataflow:

  • Źródłowa baza danych musi być bazą danych w wersji Standard.
  • Migracja odczytuje dane w określonym czasie odczytu. Zalecamy włączenie odzyskiwania do określonego momentu (PITR) w źródłowej bazie danych. Jeśli PITR nie jest włączone, dane wygasają po godzinie, co może być niewystarczające do ukończenia migracji danych. PITR wydłuża okres przechowywania danych do 7 dni.
  • Indeksy nie są przenoszone.
  • Zadanie Dataflow nie przenosi konfiguracji bazy danych, takich jak zasady TTL, kopie zapasowe, PITR i klucze szyfrowania zarządzane przez klienta (CMEK).

    Musisz skonfigurować te ustawienia w nowej bazie danych. Aby przyspieszyć migrację danych, poczekaj, aż migracja się zakończy, i dopiero wtedy skonfiguruj TTL, kopie zapasowe i PITR w docelowej bazie danych.

Te przykłady pokazują, jak uruchomić szablon za pomocą Google Cloud CLI.

Migracja wszystkich danych

Aby przenieść wszystkie dane, użyj tego polecenia:

gcloud dataflow flex-template run "JOB_NAME" \
  --project "PROJECT" \
  --template-file-gcs-location gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_Firestore_to_Firestore \
  --region REGION_NAME \
  --parameters "sourceProjectId=SOURCE_PROJECT_ID" \
  --parameters "sourceDatabaseId=SOURCE_DATABASE_ID" \
  --parameters "destinationProjectId=DESTINATION_PROJECT_ID" \
  --parameters "destinationDatabaseId=DESTINATION_DATABASE_ID" \
  --parameters "readTime=READ_TIME"

Zastąp następujące elementy:

  • JOB_NAME – nazwa zadania.
  • PROJECT – identyfikator Twojego Google Cloud projektu.
  • REGION_NAME – lokalizacja, w której chcesz uruchomić zadanie Dataflow.Google Cloud Użyj lokalizacji, która znajduje się blisko Twoich baz danych.
  • VERSION – wersja szablonu, której chcesz użyć. Możesz użyć tych wartości:

  • SOURCE_PROJECT_ID – identyfikator źródłowego Google Cloud projektu, który zawiera bazę danych Firestore w wersji Standard.

  • SOURCE_DATABASE_ID – identyfikator źródłowej bazy danych.Cloud Firestore

  • DESTINATION_PROJECT_ID – identyfikator docelowego projektu Google Cloud dla nowej bazy danych Cloud Firestore.

  • DESTINATION_DATABASE_ID – identyfikator docelowej bazy danych Cloud Firestore.

  • READ_TIME– sygnatura czasowa odczytu danych ze źródłowej bazy danych. Ustaw sygnaturę czasową w formacie RFC 3339 z dokładnością do minuty, np. 2026-05-15T16:31:00.00Z.

    Najwcześniejsza prawidłowa sygnatura czasowa zależy od ustawień odzyskiwania do określonego momentu (PITR) Zobacz Pobieranie najwcześniejszego czasu wersji.

Migracja określonych grup kolekcji

Aby przenieść tylko określone grupy kolekcji, użyj tego polecenia:

gcloud dataflow jobs run "JOB_NAME" \
  --project "PROJECT" \
  --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Cloud_Firestore_to_Firestore \
  --region REGION_NAME \
  --parameters "sourceProjectId=SOURCE_PROJECT_ID" \
  --parameters "sourceDatabaseId=SOURCE_DATABASE_ID" \
  --parameters "collectionGroupIds=COLLECTION_GROUP_IDS" \
  --parameters "destinationProjectId=DESTINATION_PROJECT_ID" \
  --parameters "destinationDatabaseId=DESTINATION_DATABASE_ID" \
  --parameters "readTime=READ_TIME"

Zastąp następujące elementy:

  • JOB_NAME – nazwa zadania.
  • PROJECT – identyfikator Twojego Google Cloud projektu.
  • REGION_NAME – lokalizacja, w której chcesz uruchomić zadanie Dataflow.Google Cloud Użyj lokalizacji, która znajduje się blisko Twoich baz danych.
  • VERSION – wersja szablonu, której chcesz użyć. Możesz użyć tych wartości:

  • SOURCE_PROJECT_ID – identyfikator źródłowego projektu, który zawiera bazę danych Firestore w wersji Standard.Google Cloud

  • SOURCE_DATABASE_ID – identyfikator źródłowej bazy danych.Cloud Firestore

  • COLLECTION_GROUP_IDS – rozdzielona przecinkami lista identyfikatorów grup kolekcji do przeniesienia.

    Kolekcje podrzędne nie są uwzględniane rekurencyjnie. Jeśli na przykład określisz grupę kolekcji users, migracja nie będzie obejmować messages kolekcji podrzędnej w ścieżce /users/userid/messages, chyba że określisz też grupę kolekcji messages.

  • DESTINATION_PROJECT_ID – identyfikator docelowego projektu Google Cloud dla nowej bazy danych Cloud Firestore.

  • DESTINATION_DATABASE_ID – identyfikator docelowej bazy danych Cloud Firestore.

  • READ_TIME – sygnatura czasowa odczytu danych ze źródłowej bazy danych. Ustaw sygnaturę czasową w formacie RFC 3339 z dokładnością do minuty, np. 2026-05-15T16:31:00.00Z.

    Najwcześniejsza prawidłowa sygnatura czasowa zależy od ustawień odzyskiwania do określonego momentu (PITR) Zobacz Pobieranie najwcześniejszego czasu wersji.

3. Skonfiguruj bazę danych

Zadanie firestore-to-firestore przenosi tylko dane. Indeksy i inne ustawienia bazy danych nie są przenoszone. Oprócz migracji danych rozważ skonfigurowanie w nowej bazie danych tych ustawień:

Po skonfigurowaniu bazy danych możesz kontynuować testowanie aplikacji w nowej bazie danych. Aby przeprowadzić pełną migrację, zaktualizuj aplikacje, aby korzystały z nowej bazy danych.

Rozwiązywanie problemów

W przypadku dużych baz danych zadanie może się nie powieść, jeśli odczyta zbyt dużo danych naraz. Aby rozwiązać ten problem:

Co dalej?