Jah*_*tal 6 postgresql postgresql-9.3
我在设置PostgreSQL hot_standby时遇到了麻烦.在运行pg_basebackup后尝试启动数据库时,我FATAL: could not receive data from WAL stream: ERROR: requested WAL segment 00000001000006440000008D has already been removed在postgresql.log中收到了.在IRC进行了简短的讨论后,我开始明白错误可能源于wal_keep_segments我的写密集型数据库的设置太低.
如果可能的话,我如何计算适当的设置wal_keep_segments?此设置的可接受值是多少?
我在做什么:
wal_keep_segments可以估计为pg_xlog目录中每分钟新 WAL 段的平均数量乘以您希望安全的分钟数。请记住,wal_level从默认值 更改minimal为archive或后,该速率预计会增加hot_standby。唯一的成本是磁盘空间,正如您所知,默认情况下每个段 16 MB。
我通常使用 2 的幂作为值。以每分钟 1 段的速率计算,值 256 为我提供了大约 4 小时的时间来设置待机。
您也可以考虑将 WAL 流与pg_basebackup. 这是根据它的--xlog-method=stream选项。不幸的是,至少截至 2013 年,根据PostgreSQL 邮件列表上的讨论,wal_keep_segments仍然建议设置为非零值 - 这是为了防止流无法跟上的风险。如果你pg_basebackup确实使用了,也不要忘记--checkpoint=fast。
| 归档时间: |
|
| 查看次数: |
4628 次 |
| 最近记录: |