阿里云数据库迁移遇到的问题总结
程序员文章站
2022-03-12 12:31:54
注:本文不深究任一知识点,仅限于记录阿里云迁移数据库遇到的问题及解决办法。原博客服务器:阿里云ECS+Ubuntu18.04原博客数据库:阿里云RDS+pgsql目标:将RDS数据库迁移到ECS上自建的pgsql数据库原RDS快要到期了,跑去阿里云续费页面看了一眼,简直贵的吐血:对于只是用于学习没人访问的小破站,一年1500我万万不能接受。换成MySQL又比较麻烦,想来想去,还是在ECS上再搭建个数据库服务比较靠谱,0成本。问题一:在服务器上安装的pgsql只能本地访问解决方法:....
注:本文不深究任一知识点,仅限于记录阿里云迁移数据库遇到的问题及解决办法。
- 原博客服务器:阿里云ECS+Ubuntu18.04
- 原博客数据库:阿里云RDS+pgsql
- 目标:将RDS数据库迁移到ECS上自建的pgsql数据库
原RDS快要到期了,跑去阿里云续费页面看了一眼,简直贵的吐血:
对于只是用于学习没人访问的小破站,一年1500我万万不能接受。换成MySQL又比较麻烦,想来想去,还是在ECS上再搭建个数据库服务比较靠谱,0成本。
问题一:在服务器上安装的pgsql只能本地访问
解决方法:
- 我的pgsql安装不完整。请不要使用
sudo apt-get install postgresql
这安装的只是核心包。我卸载原来的,重新使用这个命令:
sudo apt-get install postgresql postgresql-contrib
- 修改配置文件postgres.conf,该文件位于
/etc/postgresql/x.x/main
下(x取决于你的版本号),编辑或新增如下一行
listen_addresses = '*'
再修改文件pg_hba.conf,和postgres.conf在一起。编辑或新增如下一段
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 0.0.0.0/0 md5
- 修改阿里云安全组配置。因为阿里云默认屏蔽5432端口,所以需要手动打开。在入方向和出方向都添加规则:
问题二:数据库迁移报错
问题描述:
- navicat上执行操作,无论是转储为sql文件再执行还是直接数据传输,都无法正确的迁移。(猜测是外键约束或者自增字段错乱的问题。我有在dev模式下的字段自增竟然是prod模式下的seq,搞不清楚这方面。)
解决方法:
- 手动重新创建表结构、外键、索引,再使用navicat的数据同步将数据迁移过来。
问题三:数据库迁移后自增字段值不对
问题描述:
- 由于新数据库的表结构是我手动新建的,新表的自增id字段都重新置为1了,但表里在迁移后有了很多数据,占用了很多id值。一旦id字段自增到数据库已有的id,就会冲突报错。
解决办法:
- 通过观察和查阅资料我发现id自增是通过sequence实现的,所以只要使用命令将自增id的值设置为比数据库里最大的id大1就可以了。
# 设置 sequence 的开始值
select setval('"article".article_id_seq', 1000, false);
更多精彩文章请访问我的个人博客(zhuoerhuobi.cn)
本文地址:https://blog.csdn.net/s1293678392/article/details/107376833