postgresql – Postgres热备和长期查询从属

前端之家收集整理的这篇文章主要介绍了postgresql – Postgres热备和长期查询从属前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
问题:在热备模式下,在从站(从站角色作为报表数据库服务器)上应用WAL更新时,是否可以运行长时间运行的查询(30秒)?它现在的工作方式是,要么设置下面的参数来杀死长时间运行的查询,以便可以应用WAL更新,或者无限期地延迟WAL更新,直到没有运行查询来应用它们.我们可以同时拥有吗?长时间运行的查询和WAL更新同时应用?

案例实现:我们目前正在使用热备模式来同步从一个主服务器到一个服务器的任何更改.从属角色是一个报告数据库服务器,其查询不断并同时运行(有些以ms为单位,有些以秒为单位,
一些在几分钟内.)在奴隶上运行没有活动查询的差距是非常罕见的.

我们调整了这两个参数,以便在热备份上进行长时间查询

max_standby_archive_delay = -1  # max delay before canceling queries
max_standby_streaming_delay = -1  # max delay before canceling queries

在postgres邮件列表中查看类似于我们的存档邮件问题:

http://www.postgresql.org/message-id/AANLkTinLg+bpzcjzdndsnGGNFC=D1OsVh+hKb85A-s=n@mail.gmail.com

我理解防止应用WAL更新的概念
查询运行时的从站.但是,我想过使用MVCC,
从站上的活动查询(长时间运行,30秒)可以运行读取
从一个版本/快照,当正在应用WAL更新时,所以
当WAL事务发生时,后续查询将获得WAL更新
承诺.我还没有完全消化Postgresql中使用的MVCC模型
[https://devcenter.heroku.com/articles/postgresql-concurrency],所以这是
只是我的假设 – 即使一个表在一个表中被删除/截断
WAL更新,当前运行的查询应该仍然可以正常使用
它正在查询的表的版本/快照?

简介:无论如何(即使有第三方扩展)我们可以同步奴隶
来自主人并将来自主人的更新应用于
奴隶,同时让任何执行时间的查询继续
一直运行到备用/从机完成?如果Hot Standby不能那样做,
你会为这种情况推荐什么?我们的情景就是我们
不停地同时运行查询postgres(一些在
ms,一些在几秒钟内,一些在几分钟内,)几乎没有时间用于WAL
要应用更新.我们使用过Bucardo,但这不会很好
在这种情况下的选择,因为我们需要超过200个表
同步,包括观点以及我们的主要以外的其他40个数据库
数据库.

任何帮助将不胜感激.

谢谢!

感谢Guillaume的回答,但幸运的是,从Postgresql 9.1开始,Postgresql有hot_standby_Feedback选项(你在postgresql.conf中的备用服务器上设置它),它不会杀死长时间运行的查询,并允许WAL更新到备用服务器.这个答案归功于Postgresql邮件列表(Raja / Albe / Scott)上的三个人,他们在该邮件线程中帮助了我.希望这对于在stackoverflow上搜索此答案的人有所帮助.电子邮件主题可以在这里找到:

http://www.postgresql.org/message-id/D274E3C1.1113E8%awilliams@dresourcesgroup.com

http://www.postgresql.org/docs/9.1/static/hot-standby.html

摘抄:

Remedial possibilities exist if the number of standby-query cancellations is found to be unacceptable. The first option is to set the parameter hot_standby_Feedback,which prevents VACUUM from removing recently-dead rows and so cleanup conflicts do not occur. If you do this,you should note that this will delay cleanup of dead rows on the primary,which may result in undesirable table bloat. However,the cleanup situation will be no worse than if the standby queries were running directly on the primary server,and you are still getting the benefit of off-loading execution onto the standby. max_standby_archive_delay must be kept large in this case,because delayed WAL files might already contain entries that conflict with the desired standby queries.

方案实施:

以下是您应该在备用服务器上配置postgresql.conf的内容

max_standby_archive_delay = -1
max_standby_streaming_delay = -1
hot_standby_Feedback = on

猜你在找的Postgre SQL相关文章