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-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ę.
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:
- 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). -
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: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 FirestoreDESTINATION_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: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, który zawiera bazę danych Firestore w wersji Standard.Google CloudSOURCE_DATABASE_ID– identyfikator źródłowej bazy danych.Cloud FirestoreCOLLECTION_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ćmessageskolekcji podrzędnej w ścieżce/users/userid/messages, chyba że określisz też grupę kolekcjimessages.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ń:
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ń, wykonaj te czynności:
- Omówienie indeksów Firestore w wersji Enterprise.
- Optymalizacja wydajności zapytań za pomocą indeksów.
- Za pomocą interfejsu Firebase CLI możesz eksportować indeksy i wdrażać je w nowej bazie danych.
- 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.