因为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.shdelete_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,数据基本完成迁移。

分类: Linux

0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注