我正在使用Debian 6(Squeeze)生产一些网站。 我决定使用postgresql后端,以便我可以使用PostgreSQL 9.0function。 我认为它会保持9.0,并接收到该主要版本的更新。
不幸的Squueze后台更新到PostgreSQL 9.1,所以可能我不会收到更新到9.0。
我打算升级到9.1,但我知道这不是自动完成的。
我已阅读官方pg_upgrade和debian的pg_upgradecluster,但我将不胜感激完整的升级指南。
我可以停止数小时的数据库,所以我想做好准备
为您提供适合您的情况/环境的逐步升级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步,在您的生产系统上进行升级。
标准的注意事项适用于:
这将需要比你期望的更长的时间。 为此计划。
我公司的数据库升级政策是“星期五下午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
这很有用 。