因为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大版本升级