如何每天自动备份Firestore数据库

时间:2018-05-15 08:15:22

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

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

我的数据结构如下:

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

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

我的问题是:

  1. 如果我创建云功能,我该如何每天运行云功能?
  2. 备份的最佳方法是什么?
    • 我应该将数据存储在firebase存储中以及如何执行此操作吗?
    • 我应该将JSON保存到单独的服务等吗?
  3. 任何帮助,无论多么小,都会受到赞赏。

    由于

4 个答案:

答案 0 :(得分:2)

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

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

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

enter image description here

答案 1 :(得分:0)

这是我计划使用的解决方案:https://github.com/firebase/snippets-node/tree/master/firestore/solution-scheduled-backups

  

此示例演示了如何使用AppEngine cron作业每晚运行   Cloud Firestore中的数据备份。

答案 2 :(得分:0)

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

此处有更多信息:https://firebase.google.com/docs/firestore/manage-data/export-import

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

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

答案 3 :(得分:0)

老实说,我不喜欢firebase页面上提供的示例解决方案。它不必要地令人费解,尤其是需要在应用引擎from selenium import webdriver import time urllist = [] with open('urls.txt') as file_object: for line in file_object: #[:-1] gets rid of newline "\n" at end of string urllist.append(line[:-1]) driver = webdriver.Firefox() driver.get("https://google.com/search?q=wikipedia") while True: url = driver.current_url time.sleep(0.2) if url != driver.current_url: for a in driver.find_elements_by_xpath('.//a'): try: if "google.com" not in a.get_attribute('href') and "googleusercontent.com" not in a.get_attribute('href'): if a.get_attribute('href') in urllist: driver.execute_script("arguments[0].style.backgroundColor = 'yellow'", a) except: pass

上运行内容的部分

使用Cloud Schedulergoogle-auth-library可以将备份直接存储在Firebase Cloud Storage中,这是一种更简单的方法。我写了一篇深入的文章,介绍了我在生产中使用的无缝工作代码。看看。

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