Как выполнить восстановление на месте

На этой странице описано, как восстановить данные из резервной копии в базу данных с тем же названием, что и у исходной базы данных. Прежде чем читать эту страницу, ознакомьтесь со статьей Резервное копирование и восстановление данных.

Восстановление на месте

Локальное восстановление позволяет восстановить базу данных из резервной копии в исходную базу данных, которая создала резервную копию, пока исходная база данных ещё существует. Восстановление на месте позволяет избежать перенаправления трафика или создания базы данных с другим именем.

Для операции восстановления необходимо использовать целевую базу данных, которая ещё не существует. Однако вы можете имитировать восстановление на месте, удалив исходную базу данных, а затем восстановив ее из резервной копии в новую базу данных с тем же именем, что и у исходной.

Как выполнить восстановление на месте

Чтобы выполнить восстановление на месте, выполните следующие действия:

  1. Выберите резервную копию, которую нужно использовать для восстановления.
  2. Удалите существующую базу данных.
  3. Чтобы завершить операцию восстановления, используйте резервную копию и идентификатор удаленной базы данных.
Внимание! Если ваше приложение использует клиентскую библиотеку Cloud Firestore в режиме Native, а ваши клиенты используют офлайн-кеш, восстановление на месте может привести к записи данных в восстановленную базу данных вместо их удаления. Такая ситуация может возникнуть, если клиент, подключенный к удаленной базе данных, переходит в офлайн-режим и в это время в кеше накапливаются записи, когда вы выполняете восстановление на месте.

Подготовка

Прежде чем начать восстановление на месте, рекомендуем выполнить следующие действия:

Получите и скопируйте конфигурацию индекса вашей базы данных. Используйте конфигурацию индекса, чтобы повторно создать индексы после завершения операции восстановления на месте. Чтобы получить конфигурацию индекса базы данных, используйте следующие команды:

  • Чтобы получить список составных индексов, используйте gcloud firestore indexes composite list:

        gcloud firestore indexes composite list --database=DATABASE_ID
    

    Замените DATABASE_ID идентификатором своей базы данных.

  • Используйте gcloud firestore indexes fields list, чтобы получить список исключений для встроенных индексов по одному полю.

        gcloud firestore indexes fields list --database=DATABASE_ID
    

Как выполнить восстановление на месте

Чтобы выполнить восстановление на месте, выполните следующие действия: Этот процесс требует простоя между моментом удаления базы данных и завершением операции восстановления.

После запуска операцию восстановления нельзя отменить, и необходимо дождаться ее завершения. Операция восстановления сразу же занимает идентификатор базы данных, используемый в операции.

  1. Используйте команду gcloud firestore backups list, чтобы определить резервную копию, которую нужно использовать для восстановления, и запишите название ресурса. Название ресурса имеет следующий формат:

        projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID
    
  2. Чтобы удалить существующую базу данных, используйте команду gcloud firestore databases delete:

        gcloud firestore databases delete --database='DATABASE_ID'
    

    Замените DATABASE_ID на идентификатор базы данных.

  3. Подождите не менее пяти минут после удаления базы данных, чтобы ее идентификатор снова стал доступен. Запустите операцию восстановления с помощью команды gcloud firestore databases restore:

    gcloud firestore databases restore \
    --source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
    --destination-database='DATABASE_ID'
    

    Замените DATABASE_ID на идентификатор базы данных.

Дальнейшие действия