Firestore新数据库 - 如何备份

Gal*_*cha 40 backup google-cloud-firestore

Google Firestore数据库服务是否提供备份?如果是这样,我如何备份数据库以及如何在出现错误时进行恢复?

Gal*_*cha 36

更新:现在可以使用Cloud Firestore管理的导出和导入服务备份和还原Firebase Firestore

你这样做:

  1. 为您的项目创建云存储桶 - 确保它是us-central1或2/multi区域类型的桶中的区域

  2. 使用为您的项目设置gcloudgcloud config set project [PROJECT_ID]

出口

导出所有通过调用 gcloud alpha firestore export gs://[BUCKET_NAME] 或者导出特定集合使用 gcloud alpha firestore export gs://[BUCKET_NAME] --collection-ids='[COLLECTION_ID_1]','[COLLECTION_ID_2]'

进口

通过调用 gcloud alpha firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ [BUCKET_NAME]和[EXPORT_PREFIX]指向导出文件位置的方式导入所有内容.例如 -gcloud alpha firestore import gs://exports-bucket/2017-05-25T23:54:39_76544/

通过调用导入特定集合: gcloud alpha firestore import --collection-ids='[COLLECTION_ID_1]','[COLLECTION_ID_2]' gs://[BUCKET_NAME]/[EXPORT_PREFIX]/

有关完整说明,请访问:https: //firebase.google.com/docs/firestore/manage-data/export-import

  • 有没有办法每X小时自动备份数据库?基本上如何将它与 cron 工作联系起来? (3认同)

Sam*_*ern 30

2018年7月更新:Cloud Firestore现在支持托管数据导入和导出.有关详细信息,请参阅文档:

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


[Googler here]不,现在我们不提供托管备份或导入/导出服务.这是我们将来肯定会提供的,我们只是没有为最初的Beta版本做好准备.

现在备份的最佳方法是使用我们的Java/Python/Node.js/Go服务器SDK编写自己的脚本,从每个集合下载所有文档并在需要时将其写回应该相当简单.

  • 那很棒.感谢评论 - 奖励积分如果有人可以分享他们的代码(Node.js额外奖金:)) (3认同)
  • @hakatashi Firebase现在支持它.请参阅上面的答案. (2认同)

Nic*_*cis 16

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

是一个为此而创建的工具.

(我没有创建它,只是在这里添加它,因为人们会发现这个问题)


小智 6

我正在使用以下解决方法来进行每日firestore备份:

我在全球安装了这个:https://www.npmjs.com/package/firestore-backup-restore

我有一个看起来像这样的cron作业:

0 12 * * *  cd ~/my/backup/script/folder && ./backup-script.sh
Run Code Online (Sandbox Code Playgroud)

而我的backup-script.sh看起来像这样:

#!/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"
Run Code Online (Sandbox Code Playgroud)


Ven*_*ryx 6

有多种备份 Firestore 数据的选项:

  1. 官方gcloud 备份命令

    缺点:

    1. 备份文件难以解析/不可行。(更新:如何转换为json文件
    2. 您必须设置gcloud cli。(更新:或使用云外壳运行命令)
    3. 它不在本地备份;相反,它会备份到云中,然后您可以下载. (也可以被认为是一种优势,取决于你想要什么)
  2. Firestore-进出口

    这是我通常推荐的一种。(如果您想要单个 JSON 文件,则最直接)

  3. firestore-备份-恢复

    缺点:

    1. 好久没更新了。

目前我同时使用选项 1 和选项 2:我使用这些gcloud命令进行自动备份(如此处所示),以及firestore-import-export大多数“一次性”备份/下载。


附加选项:(不推荐)

  1. python-firebase-admin-firestore-backup

    缺点:

    1. 仅备份;无法从它创建的备份中恢复。
    2. 好久没更新了。
  2. Firestore-备份

    缺点:

    1. 仅备份;无法从它创建的备份中恢复。


jlo*_*sli 5

我编写了一个工具,可以遍历数据库的集合/文档并将所有内容导出到单个 json 文件中。此外,它还将导入相同的结构(有助于克隆/移动 Firestore 数据库)。它作为 NPM 包发布。随意尝试并提供一些反馈。

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