在 debian 生产服务器上升级 PostgreSQL 的完整解决方案

Dai*_*mon 3 postgresql debian-squeeze

我在几个网站的生产环境中使用 Debian 6 (Squeeze)。我决定使用 postgresql 向后移植,以便我可以使用 PostgreSQL 9.0 功能。我认为它将保持 9.0 并接收该主要版本的更新。

不幸的是,Squeeze 向后移植已更新到 PostgreSQL 9.1,所以我可能不会收到 9.0 的更新。

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

我已经阅读了官方 pg_upgrade 和 debian 的 pg_upgradecluster,但我会很感激完整的升级指南。

  1. 要执行哪些步骤(首先 apt-get install postgresql,然后是 pg_upgradecluster,然后删除旧集群)?步骤列表会很好。
  2. 有哪些可能的故障场景?
  3. 如何准备失败并对其做出反应?

我只能停止数据库几个小时,所以我想做好准备

vor*_*aq7 6

很难为您提供适合您的情况/环境的分步升级过程。
我已经尝试了下面的一些重点,但您确实需要根据您的环境定制流程。


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

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

第 2 步,我建议通读9.1 发行说明。确保您需要的任何东西都没有损坏,并且您使用的任何东西都没有改变。
没有什么比数据库升级更能破坏您的生产系统以真正毁掉您的一个月了。

第三步,Postgres手册的升级部分是必读的。

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

第五步,制定升级计划。

第 6 步,测试升级计划(技术上可选,但强烈推荐)。

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


适用标准警告:

  • 升级可能会破坏您的数据库。做好备份。
    • 确保您可以恢复它。
    • 确保您也可以恢复数据库系统的二进制文件
      (如果可以,请继续使用旧的 Debian 软件包 - 我见过有人无法退出失败的升级,因为他们不再拥有旧的数据库二进制文件,这确实是一个非常悲伤的景象。)

  • 这将需要比您预期的更长的时间。为此做好计划。
    我公司的数据库升级策略是“周五下午 6 点开始。如果周日上午 9 点前不工作,则回滚”。

  • 安装临时猴子
    如果您的数据非常重要,请在别处恢复它的副本并测试您的升级路径。
    是的,我使用 16GB 数据库执行此操作。如果我能找到让它工作的方法,我仍然会用 160GB 的数据库来做:-)