把应用的数据存到 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 Postgres?
Section titled “什么时候该用 Railway Postgres?”如果你已经在 Railway 上运行其他服务,希望应用的数据存放在自己的账户中,或者想用自己的数据库工具访问数据,就可以选择它。否则,MonstarX 自带的数据库完全不需要设置,详见应用的数据库。
应用的数据同一时间只存放在一个地方。迁移到 Railway Postgres 是一次迁移,而不是复制一份。
在 Railway 中:
- 打开(或新建)一个 Railway 项目,选择要使用的环境,通常是 production。
- 在项目中添加一个 Postgres 数据库服务,并开启它的公共网络(public networking),让 MonstarX 能够访问。
- 在 Railway 的 Account Settings → Tokens 中创建一个账户或工作区 API 令牌。项目令牌无法创建服务,所以不能用。
在 MonstarX 中,应用的数据必须存放在 MonstarX 自带的数据库中。如果数据在 Supabase 或 Firestore 中,请先迁回。
如何把应用的数据迁移到 Railway Postgres?
Section titled “如何把应用的数据迁移到 Railway Postgres?”-
打开项目,点击顶部栏中的后端,再点击云服务。
-
在连接器中点击 Railway 旁的连接;或者在此应用的数据存储位置中选择 Railway(Postgres)。
-
填写表单:
- 账户或工作区 API 令牌:从 Railway 获取的令牌。
- 项目 ID:在 Railway 项目设置中查看。
- 环境 ID:在同一处设置中查看。
- Postgres 公开连接字符串(选填):你的 Postgres 服务的
DATABASE_PUBLIC_URL。填写它才会开始迁移;如果只想部署到 Railway,请留空。
-
点击连接 Railway。MonstarX 会检查该环境是否属于这个项目,以及能否在数据库中创建表。
-
聊天中会出现一张卡片:将此应用的数据迁移到 Railway Postgres,并显示找到了多少张表和多少行。点击迁移我的应用。
-
卡片会显示每一个步骤:读取数据、创建表、复制数据行、检查数据是否完整、将应用连接到 Railway、修改应用代码,最后显示你的应用现已在 Railway Postgres 上运行。
随后,后端云服务 中的数据库卡片会显示位于 Railway。
我的数据会怎样?
Section titled “我的数据会怎样?”- 每一张表、每一行数据都会迁入你的 Railway Postgres 数据库。MonstarX 会在切换之前核对两边的行数;如果对不上,迁移就会停止,应用保持原样。
- MonstarX 会原样保留之前的副本,方便你迁回。
- 应用的代码会被改写为适用于 Postgres 的代码,这是 MonstarX 自己发起的一次构建请求。
- 迁移期间,新的请求会在队列中等待;点击卡片上的停止可以停止迁移。
可以迁回吗?
Section titled “可以迁回吗?”可以。在 后端云服务 中点击数据库卡片上的迁回,然后确认。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。
我的用户需要重新注册吗?
不需要。账户是应用数据库中的数据行,所以会和其他数据一起迁移,并继续正常使用。