【存档】后端评论数据库PostgreSQL的迁移
本博客的评论系统依赖开源的cusdis。这个系统支持的后端数据库是PostgreSQL。之前我在Heroku上租了一个PostgreSQL的空间,每个月5美元,大概可以买俩麦麦的芝士汉堡了。于是我准备迁移到其他的PostgreSQL服务,步骤如下。
- 找到一个免费的PostgreSQL服务,这一步根据个人需求而定。
- 导出之前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
- 根据新PostgreSQL服务提供的数据库空间信息,修改Vercel(或者其他部署平台)部署cusdis时的环境变量,然后重新部署一个cusdis应用,用新的用户名登陆。
- 这里有个小坑,如果重新创建一个cusdis应用,需要修改pages表里的应用ID字段,才能让之前的评论成功迁移过去。我修改时用的是pgAdmin。不知道有没有其他方法,可以不用部署新应用。
- 修改博客代码中和cusdis集成的部分,让它指向新应用。
- 确认线上全部迁移完毕后,把Heroku里所有的旧东西干掉就行了。