注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

PostgreSQL 中文网

 
 
 

日志

 
 

The limit on max_standby_streaming_delay is currently 35 minutes  

2011-08-30 17:53:42|  分类: PG案例分析 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

          
       有一套系统刚搭建好 HOT-Standby, 为了降低主库压力,准备让数据仓库在备库上抽取,这里需要
修改参数 max_standby_streaming_delay ,否则在备库上查询时间超过 30 秒时会报错,关于这个报错
可以参考之前写的blog:  http://francs3.blog.163.com/blog/static/405767272011430103620482/
但今天在修改这个参数时,出现了奇怪的一幕,以下为详细信息。

     
--1 修改 $PGDATA/postgresql.conf 文件
max_standby_streaming_delay = 3600s

    备注:修改参数  max_standby_streaming_delay,准备修改成一小时,当在备库上执行查询操作时,
恰当备库需要应用主库发来的WAL日志,此时两者发生冲突,那么允许备库上的SQL的最大执行时间为 1
小时,超过一小时后,备库会 cancel 备库上的查询语句。


--2 参数修改后,重新载入
postgres@db-192-168-1-25-> pg_ctl reload -D $PGDATA
server signaled


--3 再次查询 max_standby_streaming_delay 值
netpk=> show max_standby_streaming_delay;
 max_standby_streaming_delay
-----------------------------
 30s
(1 row)

  备注:这里出现了奇怪的一幕,明明将参数 max_standby_streaming_delay 值设置成了 3600 秒,而仍然显示
             默认的 30 秒,这个参数修改后是不需要重启 PostgreSQL 的。
       
       
--4 尝试将备库重启

     由于是备库,参数 max_standby_streaming_delay 在线修改不成功,于是准备重启下备库, 接下来报了下面
 这个 FATAL。
 
postgres@db-192-168-1-25-> FATAL:  3600000 is outside the valid range for parameter "max_standby_streaming_delay" (-1 .. 2147483)
                                                     
    备注: 奇怪了,根据提示,参数  max_standby_streaming_delay 值超出了设置范围,难道这个参数
             有限制,于是迅速查看手册,遗憾的是,9.0 上的手册没有提到 max_standby_streaming_delay
             参数有限制值, 没办法,只有问 GOOGLE 老师了, 还好运气不错。                    


--5 来自 http://archives.postgresql.org/ 的信息
The limit on max_standby_streaming_delay is currently 35 minutes
(around) - or you have to set it to unlimited. This is because the GUC
is limited to MAX_INT/1000, unit milliseconds.

Is there a reason for the /1000, or is it just an oversight thinking
the unit was in seconds?

If we can get rid of the /1000, it would make the limit over three
weeks, which seems much more reasonable. Or if we made it a 64-bit
counter it would go away completely.

    备注:运气不错,查到了相关的回复,上面是说 max_standby_streaming_delay 参数当前的限制值为 35 分钟,
               也可以将值设为 "-1" ,表示不限制。这个限制可能会在后期版本中修改。

 

--6 总结
    1  合理的设置 max_standby_streaming_delay   的值,主要还是要看备库的用途,是高可用,还是用来
       分担主库负载,比如跑些报表,数据抽取之类的,如果是高可用,设置较小的值比较合理;因为备库
       需要时刻同步主库的数据;如果是为了分担主库负载 ,那么可以设置较大的值(35 min), 那么长时
       间的报表,或者仓库抽取之类的工作可以进行;
      
    2  $PGDATA/postgresql.conf 参数修改后,最好还是登陆到数据库里用" show parameter " 命令去查看下,
        因为有些参数有范围限制,即使设置超出范围的参数值,在 reload 也没报错,max_standby_streaming_delay
        参数就是这样。

  评论这张
 
阅读(26461)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016