【问题标题】:Move Firebase project to another region将 Firebase 项目移至另一个区域
【发布时间】:2021-01-27 19:28:34
【问题描述】:

我使用 Firebase 已有很长时间(自 2018 年以来)并且很喜欢它。当时没有 Location southamerica-east1(圣保罗)。现在我想将项目(网络应用程序、云功能和数据库)存储在南美洲,以降低成本并使其靠近我的最终用户(也位于巴西)。

我有源代码控制,所有环境参数值都存储在自定义环境变量中。找不到数据时,应用程序可以正常工作。无需担心备份数据。停机时间没有问题。这不是一个关键的应用程序。

无论如何,我无法删除该应用程序,因为我已经有一些用户在那里登录并且物联网设备通过 PubSub 发送数据。

  1. 如何从头开始重建 Firebase/Firestore/Web 应用程序/Function,并确保新位置位于南美洲?如果可能,我需要保留用户名和密码以及网络

展望未来,(我认为移动降压位置不是最好的解决方案)但基于此页面Select locations for your project我无法更新位置,但由于它基于降压位置,如果它不破坏项目,我将使用谷歌云传输页面到Moving and renaming buckets

  1. 这可能是比重建应用程序(Firebase/Firestore/Web 应用程序/Function)更好的解决方案吗?
  2. 我可以破坏我的 Firestore 数据库、云功能或网络应用吗?
  3. 我是否会丢失我的项目域或任何其他相关的 URL 参数,例如 authDomain、databaseURL、storageBucket?
  4. 更改后我是否需要更新一些网络应用参数?

【问题讨论】:

  • 您的 Web 应用程序是否使用 Firebase 托管?你有应用引擎服务吗?是否可以通过前端访问 Firestore?
  • 是的,我正在使用 Firebase 主机。没有 App Engine 服务。是的,Firestore 可通过前端访问

标签: firebase google-cloud-platform


【解决方案1】:

它们目前无法移动,并且迁移数据是一个手动过程。难度因产品而异。

一般指导

  1. 在完全迁移之前不要删除旧项目。

托管

这种迁移几乎是微不足道的,因为在移动自定义域时可能会出现轻微的服务中断。

  1. 部署到新站点
  2. 将您的自定义域命名为新站点 (myproject.firebaseapp.com)
  3. 从旧网站中删除自定义域
  4. 将自定义域添加到新站点

云函数

这个迁移很简单。

  1. 为您的新项目创建一个本地目录
  2. 运行firebase init并正常设置项目(启用功能)
  3. 将您的 Functions 代码复制到新项目的 functions/ 目录中
  4. 部署到新项目

数据库

这种迁移非常棘手、困难,并且高度特定于您的用例和对停机时间的容忍度。以下是适应的通用模板。

导入/导出参考文档:Firestore import/exportRealtime Database backups

  1. 在旧项目中:
    1. 使用安全规则锁定数据库以防止更改
    2. 导出现有数据库
  2. 在新项目中:
    1. 导入数据库备份
    2. 您可能还需要迁移现有用户(请参阅 account export/import),以便存储在数据库中的用户 ID 仍会引用正确的帐户
  3. 将现有应用指向新项目

如果不能选择停机,或者如果您要部署新的移动应用版本并且需要时间来传播更改,那么您需要设置双写入模型:

  1. 双同步:在新旧数据库上创建一个云函数,复制相应合作伙伴端点上的所有创建/更新/删除操作。
  2. 同步预先存在的数据:对实施双同步之前创建的所有数据执行上述导出/导入过程,不包括锁定旧数据库的步骤
  3. 关闭您的旧移动应用版本(一旦迁移了足够多的帐户)
  4. 关闭双同步功能并关闭旧站点

【讨论】:

  • 感谢您提供此类技术信息,但我担心的是我不想创建新项目,因为我的应用程序中已经连接了设备。只是为了更好地理解
  • Cloud IoT Core 将设备消息路由到 Cloud Pub/Sub。它触发了一个 Firebase 函数,该函数将消息存储到 Firebase Firestore 中,并在 Firebase 主机网页上向我的 Firebase 用户实时显示。问题是如果我创建一个新项目,设备消息将在旧项目中,而其他所有内容都在新项目中。它将增加整个解决方案的复杂性...
【解决方案2】:

根据您的信息,主要问题是Firestore,因为其他产品是全局平衡的,例如Cloud IoT CoreHosting(这些无法在特定区域配置)

其他产品(如 Functions)可以使用相同的代码和名称重新部署到另一个区域。

我认为您可以创建另一个项目,仅将数据库移动到新区域并配置所有云资源以访问新定位的数据库。

需要注意的是,您需要添加另一个域/子域并创建新凭据以使用新项目;此步骤不能跳过,因为它是身份验证所必需的。

应用端可以add the access to the new database

如果您在迁移过程中需要帮助,您可以start a case 获得 GCP/Firestore 支持。

这是一颗难以下咽的药丸,但迁移到另一个区域的成本和时间可能比让您的应用程序保持今天的工作状态要高。

【讨论】:

    猜你喜欢
    • 2019-09-23
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    相关资源
    最近更新 更多