【问题标题】:How to automatically backup Firestore database daily如何每天自动备份 Firestore 数据库
【发布时间】:2018-10-25 00:06:44
【问题描述】:

我想每天备份一个 Firestore 数据库。

我的数据结构是这样的:

usersCollection
  uid
     defaultCurrency: 'USD'
     name: 'something'
     dreamsCollection
                     name
                     image

我查看了 firestore-export-importnode-firestore-backup 来进行备份并将数据导出到 JSON 文件。

我的问题是:

  1. 如果我创建了一个云函数,我如何每天运行该云函数?
  2. 进行备份的最佳方法是什么?
    • 我应该将数据存储在 Firebase 存储中吗?如何做到这一点?
    • 我应该将 JSON 保存到单独的服务等吗?

任何帮助,无论多么小,我们都会感激不尽。

谢谢

【问题讨论】:

标签: firebase google-cloud-firestore google-cloud-functions


【解决方案1】:

方法 1(App 引擎)

我已经使用这个解决方案几个月了,效果很好:https://github.com/firebase/snippets-node/tree/master/firestore/solution-scheduled-backups

此示例演示如何使用 AppEngine cron 作业在夜间运行 Cloud Firestore 中的数据备份。

方法 2(云调度程序)

也就是说,the approach described by @eMAD 看起来也不错;它基于相同的 gcloud 命令,但它使用的 Cloud Scheduler 可能优于 App Engine 调度。 (例如,它可以让您指定一天中的确切时间,而不仅仅是您第一次设置时间表的时间)

还有 this helper package 用于设置基于 Cloud-Scheduler 的自动备份。

编辑:我现在使用上面提到的 helper-package (simple-firestore-backup),因为 npm-package 有助于保持项目之间的实现一致,我喜欢它而不是 app-engine 解决方案因为云功能具有更大的灵活性。

但请注意,自述文件目前“缺少”几个步骤(取决于您认为“不言而喻”的内容)。如果您需要更全面的说明集,请在自述文件中增加额外的步骤 I explain here

【讨论】:

    【解决方案2】:

    您现在可以将数据导出和导入到指定的存储桶。

    更多信息在这里:https://firebase.google.com/docs/firestore/manage-data/export-import

    以下是有关如何自动执行此操作的信息:

    https://firebase.google.com/docs/firestore/solutions/schedule-export

    【讨论】:

    • 恕我直言,这不是一个好的解决方案。它应该是一个简单的 Cloud Function 部署,不需要使用 App Engine。
    • 另外,这个解决方案也不起作用。 Firestore 的权限永远不会被批准让 AppEngine 连接..
    • 看不懂上面的cmets。如下:firebase.google.com/docs/firestore/solutions/schedule-export 正是我想要的。我使用了控制台路径,粘贴了代码,创建了一个存储桶,设置了作业,授予了权限并且它可以工作。添加了保留策略和清理规则,完成。
    【解决方案3】:

    老实说,我不喜欢 firebase 页面上提供的示例解决方案。它不必要地令人费解,尤其是您需要在应用引擎上运行的部分¯\_(ツ)_/¯

    使用Cloud Schedulergoogle-auth-library 可以更简单地执行此操作,将备份直接存储在 Firebase 云存储中。我写了一篇深入的文章,其中包含我在生产中使用的无缝工作代码。看看吧。

    https://blog.emad.in/automate-firestore-db-backups/

    【讨论】:

      【解决方案4】:

      我在博客中介绍了创建一个完全托管的、无服务器自动触发的工作流,该工作流触发 Firestore 导出/备份 API,并将其放入 Cloud Storage 存储桶中,这样您就可以确保为灾难恢复进行适当的备份。

      由于它是无服务器的无需维护 SDK 工具无需更新库,即使是非开发人员也可以设置。

      全文在这里:Firestore Backups the easy way with Cloud Workflows

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-26
        • 2018-03-26
        • 2017-10-21
        • 2015-08-20
        • 1970-01-01
        • 2019-07-25
        • 2011-10-02
        相关资源
        最近更新 更多