跳过正文
将 Waline 数据库从 LeanCloud 迁移到Neon

将 Waline 数据库从 LeanCloud 迁移到Neon

·1900 字·4 分钟· loading · ·
褐瞳さん
作者
褐瞳さん
Everyone is mania in general
目录

前言
#

本文主要用于和我一样在建设 Waline 时选择了 Vercel + LeanCloud 作为后端的情况,其他使用 LeanCloud 作为数据库的可以参照。

前段时间收到了 LeanCloud 的停止服务通知邮件,昨天才开始着手开始迁移,所以有了这篇文章。

准备
#

  • 搭建 Waline 数据库 LeanCloud 时的账号;
  • 搭建 Waline 前端 Vercel 时的账号;
  • 一个数据库管理软件,推荐使用 Navicat;

迁移前的备份
#

在正式开始数据迁移之前推荐先对数据进行备份,以免发生不可逆转的错误。

先直接导出一份 Waline 的数据:

  1. 进入自己的 Waline 后端管理界面
  2. 鼠标置于左上角点击「管理」选择「导入导出」
  3. 点击导出,等待导出完成即可

后端导出

接下来导出数据库的备份,首先进入 LeanCloud 的控制台: 前往LeanCloud控制台

  1. 进入你的 Waline 数据库对应的项目,在左侧菜单栏展开「数据存储」再点击「导入导出」
  2. 顶部选择「数据导出」,再点击「导出」按钮(此步骤导出的数据需要很久才能到我们手中,至少到我现在写这篇文章为止,昨天中午我发出的导出申请到现在也还没收到数据)

导出数据库

  1. 点击左侧菜单栏的「结构化数据」,可以看到我们实际上正在使用的表只有三张,分别是CommentCounterUsers,我们分别点击这三张表,然后在右上方点击下载按钮,再选择JSON即可

导出为json

开始数据迁移
#

我们进入 Vercel 的控制台: 前往Vercel控制台

  1. 找到自己 Waline 对应的项目,在顶部我们可以看见有一个「Storage」,点击进入后再点击「Create Database」,数据库服务选择「Neon」,点击「Continue」进行下一步
  2. 接下来会跳转到 Neon 让你创建账号,点击「Accept and Create」后直接「Continue」即可
  3. 然后会让你自定义数据库名称,按喜好填入后「Continue」即可
  4. 进入 Neon 控制台: 前往Neon控制台 ,点击你对应的项目后在顶部可以看见一个「Connect」的按钮,点击后会有一个会话框,在connection string中会有你所有的连接信息,点击底部「Show password」查看密码,以下是示例以及对应信息:

数据库连接

psql 'postgresql://neondb_owner:yourwalinedbpassword@dbserverrgeion.aws.neon.tech/neondb?sslmode=require&channel_binding=require'

其中需要的信息有:

  • 数据库用户名:neondb_owner
  • 用户对应密码:yourwalinedbpassword
  • 数据库地址及数据库名称:dbserverrgeion.aws.neon.tech/neondb,其中/后的neondb就是连接的数据库名称
  • 启用 SSL 加密:require即“需要”
  • 启用通道绑定:require即“需要”

打开你的 Navicat,新建连接,选择PostgreSQL。其中「连接名称」随意;「主机」填上面的数据库地址,例如我的dbserverrgeion.aws.neon.tech,端口默认;初始数据库填neondb;用户名和密码填上面你对应的用户名和密码,例如我的neondb_owneryourwalinedbpassword;切换选项卡到「SSL」,勾选「使用 SSL」,点击确定。

在左侧选择你刚刚新建的数据库连接,选择neondb数据库,选择模式public,点击顶部新建查询,将 waline.pgsql 的内容填入,确认选择运行位置后点击「运行」即可。

运行脚本

使用F5刷新后就可以看见我们刚刚初始化的三张表,接下来按照UsersCounterComment的顺序导入我们的数据。

导入数据库

  1. 右键Users表,选择「导入向导」;
  2. 导入类型:.json
  3. 添加文件,导出时默认下载在Downloads下,命名为类似于Counter_20260203_112138.json
  4. 表行标签选(Root)
  5. 源的日期时间格式将「日期排序」改为YMD,日期分隔符改为-
  6. 手动映射以下项,请注意,其他字段 Navicat 会帮你自动映射,但createdAtupdatedAt还有Comment表的insertedAt字段需要自己手动映射;另外,objectId的目标字段需要为空,并设置为主键:
源字段目标字段主键
2fa2fa
createdAtcreatedat
display_namedisplay_name
emailemail
githubgithub
labellabel
objectId
passwordpassword
qqqq
typetype
updatedAtupdatedat
urlurl
  1. 导入模式使用默认的「追加」即可;
  2. 最后点击「开始」按钮,等待数据导入完成。

其他两张表,CommentCounter按照以上步骤依葫芦画瓢即可。

导入完成后可以在 Navicat 看到我们最后的数据库内容。

导入结果

连接到 Vercel
#

完成以上数据导入之后我们就可以开始连接到我们的 Vercel 了。

回到我们的 Vercel,依旧是顶部的「Storage」,可以看到我们的 Neon 后有一个「Connect Project」。

点击之后再在顶部「Settings」中找到「Environments」,点击「Production」,将其中的LEAN_IDLEAN_KEYLEAN_MASTER_KEY名称后加一个_OFF,像下面这样:

连接数据库

停用 LeanCloud

最后
#

以上我们就已经完成了数据库的迁移,可以重新部署一次 Waline 后就可以开始使用了,可以发现使用体验没变,差不多也算平滑迁移了吧(

本文作者: 褐瞳さん
本文链接: https://www.hetong-re4per.com/posts/migrate-database-to-neon/
版权声明: 本文文字在未特别注明下默认使用 CC BY-NC-SA 4.0 许可协议。

相关文章