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-firestoreDataflow. Usługa Dataflow umożliwia tworzenie potoków danych, afirestore-to-firestoreszablon 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
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ę.
Aby używać tego szablonu, musisz włączyć interfejs API
datastore.googleapis.com.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:
- 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. -
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:latest– aby użyć najnowszej wersji szablonu, która jest dostępna w folderze nadrzędnym bez daty w zasobniku: gs://dataflow-templates-REGION_NAME/latest/- nazwa wersji, np.
2023-09-12-00_RC00, aby użyć konkretnej wersji szablonu, którą można znaleźć w odpowiednim folderze nadrzędnym z datą w zasobniku: gs://dataflow-templates-REGION_NAME/
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:latest– aby użyć najnowszej wersji szablonu, która jest dostępna w folderze nadrzędnymbez daty w zasobniku: gs://dataflow-templates-REGION_NAME/latest/- nazwa wersji, np.
2023-09-12-00_RC00, aby użyć konkretnej wersji szablonu, którą można znaleźć w odpowiednim folderze nadrzędnym z datą w zasobniku: gs://dataflow-templates-REGION_NAME/
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ćmessageskolekcji podrzędnej w ścieżce/users/userid/messages, chyba że określisz też grupę kolekcjimessages.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ń:
Indeksy: bazy danych Firestore w wersji Enterprise nie wymagają indeksów do uruchamiania zapytań i domyślnie nie tworzą automatycznych indeksów. Aby utworzyć indeksy dla zapytań, przeczytaj te artykuły:
- Omówienie indeksów Firestore w wersji Enterprise.
- Optymalizacja wydajności zapytań za pomocą indeksów.
- Do eksportowania indeksów i wdrażania ich w nowej bazie danych możesz użyć interfejsu wiersza poleceń Firebase .
- Użyj statystyk zapytań , aby zidentyfikować zapytania, które możesz zoptymalizować za pomocą indeksu.
TTL: Utwórz zasady TTL.
Kopie zapasowe: skonfiguruj kopie zapasowe.
PITR: włącz PITR.
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:
Zwiększ
maxNumWorkerswartość.
Co dalej?
- Dowiedz się więcej o wysyłaniu zapytań do danych za pomocą operacji potoku.
- Dowiedz się, jak optymalizować zapytania w Firestore w wersji Enterprise.
- Dowiedz się, jak skaluje się baza danych w wersji Enterprise.