在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。
只要将剩余数据倒出并恢复就可以了!