因为Ubuntu升级以后,postgresql的低版本支持就没了。。。没了(干嘛不能多版本共存啊喂),被迫升级Postgresql。
方案:
首先记得备份好数据库的资料,万一下面炸了还能救回来(不是)
[sudo] su postgres pg_dumpall > backup.sql
然后现在才是真正的第一步:(停掉服务,我默认你们已经装好新的版本了)
[sudo] systemctl stop postgresql.service # 什么用户都可以,有sudo权限或者root就行
然后记得用postgres用户操作:
[sudo] su postgres cd ~ /usr/lib/postgresql/{new_version_number}/bin/pg_upgrade \ --old-datadir=/var/lib/postgresql/{old_version_number}/main \ --new-datadir=/var/lib/postgresql/{new_version_number}/main \ --old-bindir=/usr/lib/postgresql/{old_version_number}/bin \ --new-bindir=/usr/lib/postgresql/{new_version_number}/bin \ --old-options '-c config_file=/etc/postgresql/{old_version_number}/main/postgresql.conf' \ --new-options '-c config_file=/etc/postgresql/{new_version_number}/main/postgresql.conf'
命令执行完成会在当前目录下生成两个新的文件 analyze_new_cluster.sh
和 delete_old_cluster.sh
,所以要保证当前执行的目录 postgres用户有写权限。
回到正常用户
exit
重新配置postgresql端口,同时要记得同步pg_hba.conf和pg_ident.conf文件,避免自己访问不了的尴尬。
#change port to 5432 [sudo] vim /etc/postgresql/{new_version_number}/main/postgresql.conf #change port to 5433 [sudo] vim /etc/postgresql/{old_version_number}/main/postgresql.conf [sudo] vim /etc/postgresql/{new_version_number}/main/pg_hba.conf [sudo] vim /etc/postgresql/{new_version_number}/main/pg_ident.conf
然后启动postgresql服务测试下链接和数据库内容
[sudo] systemctl start postgresql.service [sudo] su postgres psql -c "SELECT version();" #output ${new_version_number} # and other something check
生成新的cluster(postgres用户下)
./analyze_new_cluster.sh
然后回到正常用户,清理旧版本残留:
[sudo] apt-get remove postgresql-{old_version_number} postgresql-doc-{old_version_number} #uninstalls postgres packages [sudo] rm -rf /etc/postgresql/{old_version_number}/ #removes the old postgresql directory [sudo] su postgres #login as postgres user ./delete_old_cluster.sh #delete the old cluster data
ok,数据基本完成迁移。
声明:
本文采用
BY-NC-SA
协议进行授权,如无注明均为原创,转载请注明转自
凤曦的小窝
本文地址: Postgresql大版本升级
本文地址: Postgresql大版本升级