Postgresql无意升级到9.2.3

好的,所以我对linux比较陌生。 几个月前,我设法build立了一个使用亚马逊构build的CentOS,PHP和Postgres 9.1的网站。 我在/ pgdata上完成了一个initdb,它安装在我为此创build的Amazon卷上。 这个网站自那以后一直在哼唱,而且我觉得这毕竟不是那么辛苦! 🙂

但现在,我的网站已经closures了。 这是发生了什么…

昨天我login开始一些网站的变化。 我看到的第一件事是有一些更新可用(自然),所以我跑了“百胜更新”。 它做了一堆事情,并报告成功。 凉!

一切都很顺利我的网站上的变化,直到我执行一个Postgres函数的变化。 我得到一个错误:

错误:无法加载库“/usr/lib64/pgsql/plpgsql.so”:“/usr/lib64/pgsql/plpgsql.so”:未定义符号:SPI_plan_get_cached_plan

(我在我的函数中使用plpgsql)

谷歌带我到各地,似乎只是需要重新启动Postgresql。 我尝试了各种方法。 Postgres会停下来,但不会重新开始。

在这个过程中的某个时候,我得到了另一个(更有帮助的)错误信息:

“数据目录是由PostgreSQL 9.1版本初始化的,它与9.2.3版本不兼容。”

什么? 如果我的yum更新安装了Postgres的一个新的,不兼容的版本? 这是我们如何在Linux世界中滚动? 主要升级没有警告什么是需要或要求我的许可? Foowee,下次我会更加小心。 顺便说一句,如果我再次有空,我该怎么办?

无论如何,这导致我这些 链接 ,当然还有postgres文档。 我现在坚持运行pg_upgrade。 这是我的命令到目前为止:

pg_upgrade -d / pgdata_temp -D / pgdata -b /usr/lib64/pgsql/postgresql-9.1/bin/ -B / ?? / -v

如何找出新的Postgres bin目录(/ B参数)? 这似乎并没有在任何地方。 然而,当我跑了

su – postgres

initdb -D / pgdata -E UTF8

cat / pgdata / PG_VERSION

…早些时候,我得到了“9.2”。

任何帮助将非常感激。 也许我只是回滚到9.1? 这是我最好的策略吗? 那么下次我运行yum update的时候如何避免升级呢? 否则,我很高兴升级,但我该怎么做,并将我现有的数据库升级到9.2.3?

谢谢!

编辑:我决定我的下一个最好的select是放弃9.1和我的数据库(我有一个CSV格式的数据的副本),并重新创build一个9.2初始的9.1版本的脚本从头开始数据库。

sudo su –
cd / pgdata
rm -fr *。*(从9.1数据库中删除/ pgdata中的所有内容 – 我先保留了一个备份)
su – postgres
initdb -D / pgdata -E UTF

编辑postgresql.conf和pg_hba.conf并启动服务器。

我还是不知道

  • yum放9.2版本的二进制文件 – 但是9.1二进制文件夹仍然存在
  • 如何获得service postgresql upgrade工作

但经过几天的谷歌search和服务器停机时间,我不在乎了。

无意升级是亚马逊的包装故障。 其他Linux发行版在升级时通常不会中断PostgreSQL。

要摆脱这个混乱,请参阅常见问题中的这个条目:

我从PostgreSQL 9.1升级到9.2需要采取哪些步骤?

PostgreSQL 9.2提供了重要的新function和性能改进,并已根据客户请求包含在Amazon Linux AMI 2012.09发行版中。

将PostgreSQL从9.1升级到9.2后,数据库服务将不再启动。 发生这种情况是因为9.1版本的数据库格式不能立即用于9.2服务器。 我们提供了postgresql-upgrade包作为自动安装的最新版本postgresql 9.2。 这使您可以使用service postgresql升级对数据库执行就地升级。

在幕后,这运行pg_upgrade将数据库迁移到新的格式。 请注意,升级会将configuration文件(如pg_hba.conf)重置为干净状态。 您的旧configuration文件存储在/ var / lib / pgsql9 / data-old中,在复审后可以复制到/ var / lib / pgsql9 / data中的默认文件中。

一旦升级完成,configuration文件恢复,服务应该正常启动。