如何将PostgreSQL从8.4版本升级到9.4?


18

我想将PostgreSQL从8.4升级到9.4

文档对我来说不是很清楚。

  1. 如果进行升级,是否会丢失旧数据库?
  2. 如果升级后丢失旧数据库,该如何备份?
  3. 如何升级我的psql?

我的PostgreSQL在CentOS 6.6服务器上运行。


老实说,链接页面上的描述非常清楚。进行转储意味着您在某些情况下无法进行转储。这也意味着您不会失去它。此外,该页面上还有一个指向实际安装更新版本的链接-例如,在Ubuntu上,有一个postgresql-client-9.4包含的软件包psql
dezso 2015年

@dezso因此,如果我卸载psql 8.4并继续使用9.4,我会丢失旧数据库吗?
Alex Jolig 2015年

3
如果您将其丢弃,则不会。无论如何,您都应该具有定期备份以测试其可恢复性,因此这根本不是问题。另外,如果您选择使用pg_upgrade,它将保留您的数据库-但是在这种情况下,也必须进行备份。
dezso 2015年

How can I backup my old databases if”- 如果没有。升级后,您的数据库几乎肯定会很好,但是在执行此类操作时,无论如何,如果出现意外问题(假设最坏的情况:断电或其他硬件故障可能会导致一部分故障),您应该始终具有新的(最好经过测试)备份您所处的位置很难前后滚动)。根据您的常规备份计划,您可能不需要进行额外的备份。
David Spillett

Answers:


25

这就是我解决问题的方式。

在Centos中将Postgresql 8.4升级到9.4

 1. Yum Install PG9.4
 2. wget http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1.noarch.rpm
 3. yum install pgdg-redhat94-9.4-1.noarch.rpm
 4. yum install postgresql94-server
 5. service postgresql-9.4 initdb
 6. chkconfig postgresql-9.4 on

备份数据

 7. su - postgres

 8. pg_dumpall > dump.sql

恢复数据

 9. service postgresql stop

 10. service postgresql-9.4 start

 11. su - postgres

 12. psql < dump.sql

配置网络访问

vi /var/lib/pgsql/9.4/data/postgresql.conf

 1. listen_addresses = '*'
 2. port = 5432

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

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident
host    all         all         130.51.79.0/24        md5
host    all         all         10.210.29.0/24        md5
# IPv6 local connections:
host    all         all         ::1/128               ident

删除PG8.4

 1. yum remove postgresql
 2. ln -s /usr/pgsql-9.4/bin/psql /usr/local/bin/psql

3
我不确定您为什么拒绝我的编辑为“危害可读性”。它实际上使命令更易于复制,
nhahtdh

1
我只是使用这种方法从9.2升级到9.6,它确实有效。谢谢 !
EisenHeim

我认为例如使用pgdump迁移具有TB级数据的数据库是不可能的。还有另一种方法吗?
deFreitas

还是第一个命令“ Yum Install PG9.4”,这是正确的大写字母吗?
戴夫

1
@deFreitas我有点晚了,但是pg_upgrade如果从> = 8.4升级并且使用相同的服务器,则可以使用。pg_upgrade在这种情况下非常有用,而且速度更快:在Ubuntu 18上,恢复a所需的时间pg_upgrade少于pg_dump恢复1GB数据库所需的时间。缺点是您必须在同一台机器上安装并运行2个postgres版本(当然,要监听不同的端口)。
EAmez

3

service postgresql-9.4initdb对我不起作用,我不得不使用sudo /usr/pgsql-9.4/bin/postgresql94-setup initdb(在此处找到)。

感谢您的指导,即使我必须重新配置pg_hba.conf文件,我也能从9.2升级到9.4 ,这很简单。


1

比将单个postgresql94 psql二进制文件链接到/ usr /(local /)bin更好的方法是使用替代系统:

cd /etc/alternatives/
ls pgsql-* -1 | xargs -L 1 alternatives --auto

它创建了postgresql94的二进制文件,mans,confs等到CentOS的默认目录的链接。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.