在Ubuntu主机上升级Postgres

背景 – 背景情况

由于PostgreSQL从9.4版本开始支持hstore和json格式,所以如果需要升级旧版本,则需要进行升级。我想在这里记录一下我自己的升级经验。

可用的资料

只要按照基本方法进行操作,总能搞定。根据自己想要升级的版本进行相应更改。但是,还是会遇到一些错误或问题。

环境

Ubuntu 14.04 升级 PostgreSQL 9.3 到 9.5。

咦?有人问我的版本呢?

客户端版本

psql --version

服务器版本

pg=config --version 

乌班图

暂时复制设置文件

我觉得没有必要。不过为了确保起见。

sudo cp /etc/postgresql/9.3/main/postgresql.conf ~/
sudo cp /etc/postgresql/9.3/main/pg_hba.conf ~/ 

安装Postgres9.5

更新并安装到最新状态后,安装(最后的postgis安装失败,原因不明)。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install postgresql-9.5 postgresql-server-dev-9.5 postgresql-contrib-9.5
sudo apt-get install postgresql-9.5-postgis

将数据转储

创建一个用于存储临时文件的目录(可选)。

在链接上,正在创建一个新的”Directory”,但因为需要”Sudo权限”,所以可以适当地自行更改位置,可以跳过这一步。

mkdir /mnt/dumps 
cd /mnt/dumps

倾倒

执行以下操作并转储(此处将在当前目录下进行转储,请确认您所处的位置):
bash
sudo /usr/lib/postgresql/9.5/bin/pg_dumpall > pre_upgrade_from_9.3_to_9.5.dump

如果无法正常工作,则尝试在sud su postgres以postgres用户身份运行,前提是postgres是sudoer。如果postgres不是sudoer,则不要在上述命令中加sudo。

(在配置文件中更改数据保存位置(非必需))

这次不做任何变动。

停止Postgres

切换到postgres用户,若postgres用户不是sudoer,请先成为sudoer,然后执行以下命令,即可停止当前存在的PostgreSQL(我处于9.3和9.5版本)

sudo /etc/init.d/postgresql stop

启动新的 Cluster。

sudo pg_dropcluster 9.5 main
sudo pg_createcluster 9.5 main

请注意:如果没有设置Locale,可能会出现错误。您可以参考http://qiita.com/d6rkaiz/items/c32f2b4772e25b1ba3ba,在执行pg_createcluster之前先执行export=en_US.UTF-8和export LC_ALL=$LANG,也许就可以解决问题。

sudo /etc/init.d/postgresql start 9.5

导入已倒出的数据

目前的状态下,没有之前的数据,需要导入数据。
– 可以查看 /etc/postgresql/9.5/main 获取端口号。如果升级了,可能会是 5433。
– 数据需要指定自己的转储文件所在的位置。

sudo su postgres
psql -d postgres -p 5433 -f ~/pre_upgrade_from_9.3_to_9.5.dump

最后重新开始(是否需要还不确定。。)

sudo service postgresql restart 9.5

完成了

最终

如果不需要之前的版本,可以删除。

sudo apt-get autoremove postgres-9.3

苹果电脑

我貼上了以下的Uninstall和Install。

只要将剩余数据倒出并恢复就可以了!

广告
将在 10 秒后关闭
bannerAds