> CentOS > CentOS教程 >

CostOS7下升级postgres

环境

CentOS7 
原版本: 
psql -version 
psql (9.2.14) 
准备升级到9.4版本

操作步骤

完整备份Postgresql

-bash-4.2$ pg_dump -U postgres whr_info_db>whr_info_db_bak.copy.sql; 这句使用copy备份,可以不运行。
-bash-4.2$ pg_dump -U postgres --column-inserts whr_info_db>whr_info_db_bak.insert.sql;

备份的文件位置是在:  /var/lib/pgsql

安装新版本(这一步操作后面遇到问题,这里作记录,但不要使用此步骤)

查找资源

到http://yum.postgresql.org

wget http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-2.noarch.rpm
rpm -ivh ./pgdg-centos94-9.4-2.noarch.rpm

确定目前正在运行的包。运行

rpm -qa | grep postgre 
 
yum list postgres* | grep 94  如果yum资源无法连接,则可运行命令:  yum install yum-plugin-fastestmirror 自动寻找最快的镜像。 

  yum install postgresql94.x86_64 postgresql94-server.x86_64 postgresql94-libs.x86_64 postgresql94-contrib.x86_64 postgresql94-devel.x86_64

这时它的安装位置可以通过命令查询到: 

  /usr/pgsql-9.4

运行upgrade

停止sudo systemctl stop postgresql

删除现有postgresql

rpm -qa | grep postgresql  把找到的包全部删除  yum remove postgresql*

再运行安装命令:  yum install postgresql94-server

数据位置:  /var/lib/pgsql/9.4/data

初始化

运行:  service postgresql-9.4 initdb  当然这句很可能会失败,则运行:  /usr/pgsql-9.4/bin/postgresql94-setup initdb  chkconfig postgresql-9.4 on

参照http://blog.csdn.net/xundh/article/details/50037353#t1修改配置: 

  这里路径要改为/var/lib/pgsql/9.4/data/pg_hba.conf

设置允许远程访问:

修改/var/lib/pgsql/9.4/data/pg_hba.conf

在该配置文件的host all all 127.0.0.1/32 md5行下添加以下配置,或者直接将这一行修改为以下配置

host all all 0.0.0.0/0 md5

service postgresql-9.4 start

还原数据

           sudo su - postgres
-bash-4.2$ psql
创建用户用色
postgres=# CREATE USER whr_info WITH PASSWORD '123456';
postgres=# CREATE DATABASE whr_info_db OWNER whr_info;
postgres=# GRANT ALL PRIVILEGES ON DATABASE whr_info_db to whr_info;
postgres=# \q
-bash-4.2$ psql -d whr_info_db -U postgres -f whr_info_db_bak.insert.sql

参考: http://www.uptimemadeeasy.com/databases/upgrade-postgresql/  9.4文档:http://www.postgresql.org/docs/9.4/static/

(责任编辑:IT)