是否可以在零停机时间内将Postgres 9.6升级到10。可以遵循哪些方法?

时间:2019-01-23 12:13:02

标签: postgresql postgresql-9.6 postgresql-10

我正在尝试将Postgres数据库从9.6升级到10,而不会造成任何停机。能做到吗?

1 个答案:

答案 0 :(得分:1)

正如“ a_horse_with_no_name”中提到的那样,逻辑复制在您的情况下是一个很好的选择。

唯一的问题是9.6还没有内部实现,因此您必须在两个DB上都使用扩展名“ pgologic”-在这里我找到了一些描述-https://rosenfeld.herokuapp.com/en/articles/infrastructure/2017-11-10-upgrading-postgresql-from-9-6-to-10-with-minimal-downtime-using-pglogical-略过有关Docker的部分,并了解pgologic的工作方式。

唯一的小问题是必须将pgologic添加到“ shared_preload_libraries”参数中,并且必须重新启动PostgreSQL服务,这有时在生产中可能会很困难...

我在pgologic上做了很多测试(这里有一些注释-http://postgresql.freeideas.cz/pglogical-postgresql-9-6-small-hints-debian/),尽管最后我从未在生产中使用pgologic。因此,我没有长期使用的经验。

但是我认为某些问题可能与PG 10和11中的逻辑复制的内部实现类似。因此,这是我目前在PG 11上使用内部逻辑复制的注意事项-http://postgresql.freeideas.cz/setting-logical-replication-is-not-entirely-straight-forward/-可能来自它会帮助您。

我对您的建议是:

  • 在具有完全相同的OS的云VM上的另一台计算机上创建PG 9.6数据库的热备份副本,如果可能,请使用pg_basebackup创建磁盘类型和配置-您可以在此处找到一些灵感:
  • 或者如果您已经使用pg_basebackup进行数据库的tar备份,则在其他计算机或VM(http://postgresql.freeideas.cz/pg_basebackup-pgbarman-restore-tar-backup/)上还原最新备份
  • 启动与普通服务器(而不是热备用服务器)一样,并在此DB副本上针对PG 10的一些测试安装测试pgologic-在尽可能接近生产环境的环境中对其进行测试,至少包括强度类似的模拟DML操作-这将向您显示计算机/ VM上的负载差异。
  • 我强烈建议您设置监视功能,例如使用telegraf + influxdb + Grafana(我认为这是最简单的实现),以便以后可以分析CPU和内存使用情况-这对于在生产中使用非常重要!
  • 希望通过简短而成功的测试来实现它,并庆祝您的成功:-),然后请写下您的经历。因为我相信很多人都会欢迎它。