微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

postgresql – 无需停机即可在Production Server上更新Postgres

我有一台运行Postgres 9.4的生产服务器.该数据库是> 10 GB.是否可以在没有停机且不丢失数据的情况下升级到Postgres 9.5?

升级教程建议在执行sudo pg_upgradecluster 9.4 main时停止Postgres,但这可能需要很长时间.更新10 GB群集可能需要几个小时!

我也试过pg_dump mydb> db.sql.删除数据库并在PG 9.4(psql -d mydb -f db.sql)中再次插入转储大约需要50分钟.

但是在PG 9.5中插入转储仅在7个小时之后完成.特别是创建索引真的很慢……

2016-07-18 00:13:55 CEST [60358-5] ERROR:  canceling autovacuum task
2016-07-18 00:13:55 CEST [60358-6] CONTEXT:  automatic analyze of table ...
2016-07-18 00:36:20 CEST [60366-1] ERROR:  canceling autovacuum task
2016-07-18 00:36:20 CEST [60366-2] CONTEXT:  automatic analyze of table ...
2016-07-18 04:21:40 CEST [60361-1] ERROR:  canceling autovacuum task
2016-07-18 04:21:40 CEST [60361-2] CONTEXT:  automatic analyze of table ...
2016-07-18 07:55:19 CEST [61316-1] ERROR:  canceling autovacuum task
2016-07-18 07:55:19 CEST [61316-2] CONTEXT:  automatic analyze of table ...

因此,pg_upgradecluster和pg_dump都不是可接受的解决方案.即使使用PG 4,您也可以获得至少50分钟的停机时间.因此:如何在没有停机和数据输出的情况下在生产服务器或大型主从集群上升级数据库

没有一些聚类魔法,就不可能没有停机时间.

其他一些可能性:

>将pg_upgrade与–link选项一起使用.使用此选项,不会复制原始数据库文件,而是将它们硬链接到新目录,从而大大加快了进程.请注意,这将永久更改源数据库文件.>使用pg_dump并在新数据库上恢复.您可以通过在新数据库中禁用同步写入来大大缩短所需的时间(新PG实例的配置文件中为fsync = false)>侧安装新的PG实例,让它在不同的端口上运行.然后,使用pg_dump通过网络将转储加载到新实例.完成后,交换端口并使用新实例.

原文地址:https://www.jb51.cc/postgresql/192501.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐