Skip to main content

【存档】后端评论数据库PostgreSQL的迁移

本博客的评论系统依赖开源的cusdis。这个系统支持的后端数据库是PostgreSQL。之前我在Heroku上租了一个PostgreSQL的空间,每个月5美元,大概可以买俩麦麦的芝士汉堡了。于是我准备迁移到其他的PostgreSQL服务,步骤如下。

  1. 找到一个免费的PostgreSQL服务,这一步根据个人需求而定。
  2. 导出之前Heroku上PostgreSQL的数据,然后导入新的数据库。这一步用PostgreSQL的指令行完成,我参考的是Stackoverflow上的这个答案。这里不同数据库服务提供的默认权限角色名不一样,导入新数据库时,需要加上--no-owner --no-acl来忽略权限角色问题。
  • 导出命令:pg_dump -h old_host -d old_database -U old_user -p old_port -W -Ft > latest.dump
  • 导入命令:pg_restore -h new_host -d new_database -U new_user -p 5432 -W --no-owner --no-acl -Ft latest.dump
  1. 根据新PostgreSQL服务提供的数据库空间信息,修改Vercel(或者其他部署平台)部署cusdis时的环境变量,然后重新部署一个cusdis应用,用新的用户名登陆。
  • 这里有个小坑,如果重新创建一个cusdis应用,需要修改pages表里的应用ID字段,才能让之前的评论成功迁移过去。我修改时用的是pgAdmin。不知道有没有其他方法,可以不用部署新应用。
  1. 修改博客代码中和cusdis集成的部分,让它指向新应用。
  2. 确认线上全部迁移完毕后,把Heroku里所有的旧东西干掉就行了。