seguridad hacer firestore copias copia configurar active backup google-cloud-firestore

hacer - firestore backup



Firestore nueva base de datos-¿Cómo puedo hacer una copia de seguridad (6)

Actualización de julio de 2018: Cloud Firestore ahora admite la importación y exportación de datos administrados. Consulte la documentación para más detalles:

https://firebase.google.com/docs/firestore/manage-data/export-import

[Googler aquí] No, en este momento no ofrecemos un servicio de copia de seguridad o importación / exportación administrado. Esto es algo que definitivamente ofreceremos en el futuro, simplemente no lo preparamos para la versión Beta inicial.

La mejor manera de realizar una copia de seguridad ahora es escribir su propio script con nuestros SDK de servidor Java / Python / Node.js / Go. Debería ser bastante sencillo descargar todos los documentos de cada colección y volver a escribirlos si es necesario.

¿El servicio de base de datos de Google Firestore proporciona una copia de seguridad? Si es así, ¿cómo hago una copia de seguridad de la base de datos y cómo restauro en caso de un error?


Estoy utilizando la siguiente solución temporal para tener copias de seguridad diarias de firestore:

Instalé esto globalmente: https://www.npmjs.com/package/firestore-backup-restore

Tengo un trabajo de cron que se ve así:

0 12 * * * cd ~/my/backup/script/folder && ./backup-script.sh

Y mi backup-script.sh se ve así:

#!/bin/sh . ~/.bash_profile export PATH=/usr/local/bin/ dt=$(/bin/date ''+%d-%m-%Y %H:%M:%S''); echo "starting backup for $dt" firestore-backup-restore -a ~/path/to/account/credentials/file.json -B ./backups/"$dt"


He escrito una herramienta que recorre las colecciones / documentos de la base de datos y exporta todo en un solo archivo json. Además, también importará la misma estructura (útil para clonar / mover bases de datos Firestore). Se publica como un paquete NPM. Siéntete libre de probarlo y dar algún comentario.

https://www.npmjs.com/package/node-firestore-import-export


Una solución utilizando Python 2 .

Búscalo en https://github.com/RobinManoli/python-firebase-admin-firestore-backup

Primero instale y configure Firebase Admin Python SDK: https://firebase.google.com/docs/admin/setup

Luego instálalo en tu entorno python:

pip install firebase-admin

Instale el módulo Firestore:

pip install google-cloud-core pip install google-cloud-firestore

(de ImportError: no se pudo importar la biblioteca de Cloud Firestore para Python )

Código Python

# -*- coding: UTF-8 -*- import firebase_admin from firebase_admin import credentials, firestore import json cred = credentials.Certificate(''xxxxx-adminsdk-xxxxx-xxxxxxx.json'') # from firebase project settings default_app = firebase_admin.initialize_app(cred, { ''databaseURL'' : ''https://xxxxx.firebaseio.com'' }) db = firebase_admin.firestore.client() # add your collections manually collection_names = [''myFirstCollection'', ''mySecondCollection''] collections = dict() dict4json = dict() n_documents = 0 for collection in collection_names: collections[collection] = db.collection(collection).get() dict4json[collection] = {} for document in collections[collection]: docdict = document.to_dict() dict4json[collection][document.id] = docdict n_documents += 1 jsonfromdict = json.dumps(dict4json) path_filename = "/mypath/databases/firestore.json" print "Downloaded %d collections, %d documents and now writing %d json characters to %s" % ( len(collection_names), n_documents, len(jsonfromdict), path_filename ) with open(path_filename, ''w'') as the_file: the_file.write(jsonfromdict)



Actualización : ahora es posible realizar copias de seguridad y restaurar Firebase Firestore utilizando el servicio de exportación e importación administrado de Cloud Firestore

Lo haces por:

  1. Cree un cubo de almacenamiento en la nube para su proyecto : asegúrese de que sea un tipo de cubo regional en us-central1 o 2 / multi regional

  2. Configure gcloud para su proyecto utilizando gcloud config set project [PROJECT_ID]

EXPORTAR

Exportar todo llamando a gcloud alpha firestore export gs://[BUCKET_NAME] O Exportar una colección específica usando gcloud alpha firestore export gs://[BUCKET_NAME] --collection-ids=''[COLLECTION_ID_1]'',''[COLLECTION_ID_2]''

IMPORTAR

Importe todo llamando a gcloud alpha firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ donde [BUCKET_NAME] y [EXPORT_PREFIX] apuntan a la ubicación de sus archivos de exportación. Por ejemplo, gcloud alpha firestore import gs://exports-bucket/2017-05-25T23:54:39_76544/

Importe una colección específica llamando a: gcloud alpha firestore import --collection-ids=''[COLLECTION_ID_1]'',''[COLLECTION_ID_2]'' gs://[BUCKET_NAME]/[EXPORT_PREFIX]/

Las instrucciones completas están disponibles aquí: https://firebase.google.com/docs/firestore/manage-data/export-import