PostgreSQL 9.2-9.6升级,停机时间为零


9

我必须从PostgreSQL 9.2升级到9.6。以下是我面临的挑战:

  1. 由于我们具有流复制设置,并且PostgreSQL在流复制模式下不支持从较低版本升级到较高版本,因此在升级主服务器时,我必须重建从服务器,这需要3个小时。我没有时间闲暇。在任何给定时间,我们需要一个从属服务器和一个主控服务器。是否有其他方法可以使用流复制来升级而不必重建从服务器?

  2. 为了构建逻辑复制,我们考虑过使用slony,但是slony具有一些局限性,因为它无法自动复制:

    • 更改为大对象(BLOBS)
    • DDL命令所做的更改
    • 用户和角色的更改
      ...并且我们的应用程序具有连续的创建命令。因此,我们不能使用slony。

请提出一些建议,以避免从站重建,并以最少的停机时间进行升级,并准备好一个主站和一个从站。


3
阻止您使用Slony的相同问题也将阻止您使用其他工具,例如Bucardo,Londiste,pgologic等。您将需要调整应用程序,因此它不会进行连续创建。是的,LOB将是一个问题。
Craig Ringer

Answers:


1

升级数据库将需要在服务器上停机。为了最大程度地减少停机时间,我建议您将新版本安装在新服务器上,在该服务器上创建复制设置,并在此处转储旧实例中的所有数据,然后更改服务器指向,以便应用程序指向新服务器以连接到数据库。


2
好吧,我们最近使用来将9 TB数据库从9.3升级到9.6 pg_upgrade。它花费了几分钟(在主服务器和从服务器上合计),而仅进行转储则需要3个小时以上。
dezso

但是,进行转储不需要停机。
罗希特·古普塔

绝对地,我的意思是(并且忘记添加)还原备份与还原备份所花费的时间差不多,这意味着在我们的情况下会造成一些停机。
dezso

感谢您的建议,所以我正在做的是升级主服务器和重建从服务器,这是正确的过程吗
Prabhat

1
第2步不起作用。主要版本之间WAL格式不兼容,因此需要pg_upgrade
dezso
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.