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 zarówno z wersją Enterprise, jak 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. Aby używać tego szablonu, musisz włączyć interfejs API datastore.googleapis.com.

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

Wymagane role

Aby przenieść dane z jednej bazy danych do innej, przypisz te role. Wymagane uprawnienia możesz też uzyskać, używając ról niestandardowych lub innych gotowych 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 Cloud Datastore Owner (roles/datastore.owner) w ramach zarządzania tożsamościami i dostępem.
  2. Aby przyznać zadaniu Dataflow dostęp do odczytu i zapisu w bazach danych Cloud Firestore, przypisz kontu usługi instancji roboczej Dataflow (np. PROJECT_NUMBER-compute@) rolę Cloud Datastore User (roles/datastore.user) w ramach zarządzania tożsamościami i dostępem w projekcie.

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

Więcej informacji o przyznawaniu ról IAM, zobacz 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. Przeczytaj artykuł Tworzenie bazy danych.

2. Uruchom szablon Dataflow firestore-to-firestore

Skonfiguruj i uruchom zadanie Dataflow za pomocą szablonu firestore-to-firestore. Szablony obsługują 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 migruje 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 Google Cloud w której chcesz uruchomić zadanie Dataflow 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 Google Cloud projektu dla nowej Cloud Firestore bazy danych.

  • 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) Przeczytaj artykuł 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 Google Cloud w której chcesz uruchomić zadanie Dataflow 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 Google Cloud, który zawiera bazę danych Firestore w wersji Standard.

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

  • COLLECTION_GROUP_IDS: lista identyfikatorów grup kolekcji rozdzielona przecinkami 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 Google Cloud projektu dla nowej Cloud Firestore bazy danych.

  • 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) Przeczytaj artykuł Pobieranie najwcześniejszego czasu wersji.

3. Skonfiguruj bazę danych

Zadanie firestore-to-firestore migruje 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?