63 votes

Firestore nouvelle base de données - Comment faire une sauvegarde ?

Le service de base de données google firestore fournit-il une sauvegarde ? Si oui, comment sauvegarder la base de données et comment la restaurer en cas d'erreur ?

0 votes

Il s'agit pour l'instant d'un produit bêta qui ne propose pas encore d'outil de sauvegarde. Vous devrez donc écrire vous-même. Ref : groups.google.com/forum/#!topic/firebase-talk/5r3xeda07ek

2 votes

C'est maintenant l'AG depuis quelques années, mais il n'y a toujours pas d'option de sauvegarde. Cela me rend sceptique quant à l'utilisation de Firestore dans les applications de production.

52voto

Gal Bracha Points 1360

Mise à jour : Il est désormais possible de sauvegarder et de restaurer Firebase Firestore à l'aide du service d'exportation et d'importation géré par Cloud Firestore.

Vous le faites en :

  1. Créez un panier de stockage en nuage pour votre projet - Assurez-vous qu'il s'agit d'un seau régional de type us-central1 ou 2 / multirégional.

  2. Mise en place gcloud pour votre projet en utilisant gcloud config set project [PROJECT_ID]

EXPORTATION

Exporter tout en appelant gcloud firestore export gs://[BUCKET_NAME] Ou Exporter une collection spécifique en utilisant gcloud firestore export gs://[BUCKET_NAME] --collection-ids='[COLLECTION_ID_1]','[COLLECTION_ID_2]'

IMPORT

Importer tout en appelant gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ où [BUCKET_NAME] et [EXPORT_PREFIX] indiquent l'emplacement de vos fichiers d'exportation. Par exemple - gcloud firestore import gs://exports-bucket/2017-05-25T23:54:39_76544/

Importer une collection spécifique en appelant le gcloud firestore import --collection-ids='[COLLECTION_ID_1]','[COLLECTION_ID_2]' gs://[BUCKET_NAME]/[EXPORT_PREFIX]/

Les instructions complètes sont disponibles ici : https://firebase.google.com/docs/firestore/manage-data/export-import

5 votes

Existe-t-il un moyen de sauvegarder automatiquement la base de données toutes les X heures ? En fait, comment puis-je l'associer à une tâche cron ?

1 votes

@codefx jetez un coup d'œil à ceci firebase.google.com/docs/fonctions/schedule-functions

0 votes

Je l'ai intégré dans un package npm à déployer dans Firebase Cloud Functions. Consultez ma réponse pour plus de détails : stackoverflow.com/a/56618618/3763626

33voto

hatboysam Points 1191

Mise à jour juillet 2018 : Cloud Firestore prend désormais en charge l'importation et l'exportation gérées des données. Consultez la documentation pour plus de détails :

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


[Googler ici] Non, pour l'instant, nous n'offrons pas de service de sauvegarde gérée ou d'importation/exportation. C'est quelque chose que nous proposerons certainement à l'avenir, mais nous ne l'avons pas encore préparé pour la version bêta initiale.

La meilleure façon de sauvegarder est d'écrire votre propre script en utilisant nos SDK Java/Python/Node.js/Go server, il devrait être assez simple de télécharger tous les documents de chaque collection et de les réécrire si vous en avez besoin.

3 votes

C'est très bien. Merci d'avoir commenté - Points bonus si quelqu'un peut partager son code (Node.js pour un bonus supplémentaire :) )

1 votes

Y a-t-il un calendrier pour l'outil officiel de sauvegarde et de restauration qui, idéalement, ne nécessiterait pas une demande d'api pour chaque opération d'écriture de document ?

1 votes

@ForrestLyman Avez-vous essayé écritures en lots ?

18voto

Nicholas Tsaoucis Points 794

https://www.npmjs.com/package/firestore-backup

est un outil qui a été créé à cette fin.

(Je ne l'ai pas créé, je l'ajoute ici car les gens trouveront cette question)

0 votes

Cet outil ne semble pas avoir de fonctionnalité pour restaurer la base de données Firestore.

6voto

user3440076 Points 61

J'utilise la solution de contournement suivante afin d'avoir des sauvegardes quotidiennes du dépôt de feu :

Je l'ai installé globalement : https://www.npmjs.com/package/firestore-backup-restore

J'ai une tâche cron qui ressemble à ceci :

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

Et mon backup-script.sh ressemble à ceci :

#!/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"

5voto

jloosli Points 835

J'ai écrit un outil qui parcourt les collections/documents de la base de données et exporte le tout dans un seul fichier json. De plus, il importera également la même structure (utile pour cloner/déplacer des bases de données Firestore). Il est publié en tant que paquet NPM. N'hésitez pas à l'essayer et à donner votre avis.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X