我在设置PostgreSQL hot_standby时遇到了麻烦.在运行pg_basebackup后尝试启动数据库时,我收到,FATAL:无法从WAL流接收数据:ERROR:请求的WAL段00000001000006440000008D已在
postgresql.log中删除.在IRC中进行了简短的讨论后,我开始明白错误可能源于我的写密集型数据库的wal_keep_segments设置太低.
如果可能,我如何计算wal_keep_segments的正确设置?此设置的可接受值是多少?
我在做什么:
> Postgresql 9.3
> Debian 7.6
wal_keep_segments可以估算为pg_xlog目录中每分钟新WAL段的平均数乘以您想要安全的分钟数.请记住,在将wal_level从其默认值minimal更改为archive或hot_standby之后,预计该速率会增加.唯一的成本是磁盘空间,默认情况下,每个段为16 MB.
我通常使用2的幂作为值.以每分钟大约1个段的速率,值256给我大约4小时来设置备用.
您也可以考虑使用带有pg_basebackup的WAL流.这是根据其–xlog-method = stream选项.不幸的是,至少从2013年开始,按照discussion on a PostgreSQL mailing list,仍然可以建议将wal_keep_segments设置为非零值 – 这是为了防止流无法跟上.如果你确实使用了pg_basebackup,也不要忘记–checkpoint = fast.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。