跳转到内容

把应用的数据存到 Railway Postgres

要点Railway 连接器可以做两件互不相关的事。填写 API 令牌、项目 ID 和环境 ID,就能把应用部署到 Railway。如果再填上 Railway Postgres 的公开连接字符串,MonstarX 会把应用的表和数据行迁移过去、逐一核对,并改写应用来使用它。点击“迁回”即可把数据迁回来。

Railway 是一个运行应用和数据库的云平台。MonstarX 的 Railway 连接器可以把你的某个应用与你的 Railway 项目关联起来,用于以下一项或两项工作:

  • 把应用的数据存到 Railway Postgres:用你自己在 Railway 上的 Postgres 数据库,代替 MonstarX 的数据库。本页介绍的就是这项。
  • 把应用部署到 Railway:从应用的 GitHub 仓库出发,在你的 Railway 项目上运行它。详见发布到其他托管平台。

这两项互不相关:数据可以存放在 Railway Postgres 中,而应用发布在 MonstarX 上;反过来也可以。

如果你已经在 Railway 上运行其他服务,希望应用的数据存放在自己的账户中,或者想用自己的数据库工具访问数据,就可以选择它。否则,MonstarX 自带的数据库完全不需要设置,详见应用的数据库。

应用的数据同一时间只存放在一个地方。迁移到 Railway Postgres 是一次迁移,而不是复制一份。

在 Railway 中:

  1. 打开(或新建)一个 Railway 项目,选择要使用的环境,通常是 production。
  2. 在项目中添加一个 Postgres 数据库服务,并开启它的公共网络(public networking),让 MonstarX 能够访问。
  3. 在 Railway 的 Account Settings → Tokens 中创建一个账户或工作区 API 令牌。项目令牌无法创建服务,所以不能用。

在 MonstarX 中,应用的数据必须存放在 MonstarX 自带的数据库中。如果数据在 Supabase 或 Firestore 中,请先迁回。

如何把应用的数据迁移到 Railway Postgres?

Section titled “如何把应用的数据迁移到 Railway Postgres?”
  1. 打开项目,点击顶部栏中的后端,再点击云服务。

  2. 在连接器中点击 Railway 旁的连接;或者在此应用的数据存储位置中选择 Railway(Postgres)。

  3. 填写表单:

    • 账户或工作区 API 令牌:从 Railway 获取的令牌。
    • 项目 ID:在 Railway 项目设置中查看。
    • 环境 ID:在同一处设置中查看。
    • Postgres 公开连接字符串(选填):你的 Postgres 服务的 DATABASE_PUBLIC_URL。填写它才会开始迁移;如果只想部署到 Railway,请留空。
  4. 点击连接 Railway。MonstarX 会检查该环境是否属于这个项目,以及能否在数据库中创建表。

  5. 聊天中会出现一张卡片:将此应用的数据迁移到 Railway Postgres,并显示找到了多少张表和多少行。点击迁移我的应用。

  6. 卡片会显示每一个步骤:读取数据、创建表、复制数据行、检查数据是否完整、将应用连接到 Railway、修改应用代码,最后显示你的应用现已在 Railway Postgres 上运行。

随后,后端云服务 中的数据库卡片会显示位于 Railway。

  • 每一张表、每一行数据都会迁入你的 Railway Postgres 数据库。MonstarX 会在切换之前核对两边的行数;如果对不上,迁移就会停止,应用保持原样。
  • MonstarX 会原样保留之前的副本,方便你迁回。
  • 应用的代码会被改写为适用于 Postgres 的代码,这是 MonstarX 自己发起的一次构建请求。
  • 迁移期间,新的请求会在队列中等待;点击卡片上的停止可以停止迁移。

可以。在 后端云服务 中点击数据库卡片上的迁回,然后确认。MonstarX 会把所有内容复制回自己的数据库,并再次改写代码。你的 Railway 数据库保持原样。

  • 令牌留在 MonstarX。 API 令牌、项目 ID 和环境 ID 都会加密保存,只供 MonstarX 管理 Railway 时使用,永远不会进入你的应用。
  • 连接字符串只会交给应用的服务器,而且只在切换完成之后。它永远不会到达浏览器。
  • 应用正在使用 Railway 时,无法断开 Railway,也无法更换它的数据库。 请先迁回。
  • 从 Railway 取消发布只会删除 MonstarX 创建的服务,永远不会删除你的 Postgres 数据库。
  • 导入的应用保留自己的数据库代码:MonstarX 会以 RAILWAY_DATABASE_URL 的形式把连接字符串交给它,但不会迁移它的数据。
  • Railway 的私有地址无法使用。 MonstarX 需要公开连接字符串才能访问数据库。
要使用 Railway Postgres,必须部署到 Railway 吗?

不需要,两者互不相关。数据存放在 Railway Postgres 中时,应用仍然可以继续在 MonstarX 上发布。

应该粘贴哪个连接字符串?

Postgres 服务的 DATABASE_PUBLIC_URL,前提是你已为它开启公共网络。MonstarX 无法访问私有网络地址。

为什么我的令牌被拒绝了?

Railway 的项目令牌无法创建服务。请改为在 Railway 的 Account Settings → Tokens 中创建账户或工作区令牌。

可以从 Supabase 换到 Railway 吗?

可以,分两步:先用迁回把数据迁回 MonstarX 的数据库,再连接 Railway Postgres。

我的用户需要重新注册吗?

不需要。账户是应用数据库中的数据行,所以会和其他数据一起迁移,并继续正常使用。