在debian制作服务器上升级PostgreSQL的完整解决scheme

我正在使用Debian 6(Squeeze)生产一些网站。 我决定使用postgresql后端,以便我可以使用PostgreSQL 9.0function。 我认为它会保持9.0,并接收到该主要版本的更新。

不幸的Squueze后台更新到PostgreSQL 9.1,所以可能我不会收到更新到9.0。

我打算升级到9.1,但我知道这不是自动完成的。

我已阅读官方pg_upgrade和debian的pg_upgradecluster,但我将不胜感激完整的升级指南。

  1. 什么是步骤(首先apt-get安装postgresql,然后pg_upgradecluster,然后删除旧的群集)? 步骤列表将是很好的。
  2. 什么是可能的故障情况?
  3. 如何准备失败并对他们做出反应?

我可以停止数小时的数据库,所以我想做好准备

为您提供适合您的情况/环境的逐步升级stream程非常困难。
我试图打击下面的一些亮点,但是您确实需要根据您的环境来调整stream程。


步骤零,决定是否需要升级。 Postgres 9.1带来了同步复制和一些其他很酷的东西,如果你需要它是有用的,但没有理由马上升级,如果你不这样做。

第一步,如果数据库很大,预计这将花费很长时间。
即使使用pg_upgrade ,复制备份数据的简单过程也可能需要一段时间:我们的16GB数据库需要一个小时或更多时间才能完成pg_dump / pg_restore,或者pg_upgrade需要大约10-20分钟)。

第2步,我build议阅读9.1发行说明 。 确保你所需要的东西没有被破坏,没有任何东西可以改变。
没有什么比数据库升级摧毁你的生产系统真正毁了你的月份。

步骤3, Postgres手册的升级部分需要阅读。

第4步,(在这里插入任何Debian特定的东西,但这真的不是我的包:-)

第5步,创build一个升级计划。

第6步,testing升级计划(技术上可选,但强烈build议)。

第7步,在您的生产系统上进行升级。


标准的注意事项适用于:

  • 升级可能会破坏您的数据库。 做一个备份。
    • 确保你可以恢复它。
    • 确保您可以还原数据库系统的二进制文件
      (如果可以的话,请坚持使用旧的Debian软件包 – 我已经看到人们无法退出失败的升级,因为他们不再有旧的数据库二进制文件,确实是非常可悲的景象。)
  • 这将需要比你期望的更长的时间。 为此计划。
    我公司的数据库升级政策是“星期五下午6点开始,如果星期天上午9点不工作,那么我们的数据库升级政策将会恢复。”

  • 挂一只抓猴子
    如果您的数据非常重要,请将其复制到其他位置并testing升级path。
    是的,我用16GB的数据库做这个。 如果我能find一种方法使其工作,我仍然会用160GB数据库来做:-)

这基本上是第4步 – 再加上--check选项来确保你的path是正确的。 我的安装是从回购,并具有标准的debianpath的文件。

 [email protected]:~$ /usr/lib/postgresql/9.1/bin/pg_upgrade --old-datadir /var/lib/postgresql/9.0/main --new-datadir /var/lib/postgresql/9.1/main --old-bindir /usr/lib/postgresql/9.0/bin/ --new-bindir /usr/lib/postgresql/9.1/bin/ --check 

上面的失败 – 一直说我在同一个端口上运行两台服务器。

以下似乎工作:

 pg_dumpall -p 5432 | psql -d postgres -p 6543 

这很有用 。