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

postgresql – 自动清理pg_xlog

有谁知道如何自动清理Postgresql 9.5中的pg_xlog?
由于我启用了复制磁盘已经填充了200G,为期2周.所以我用以下命令手动清理它:

sudo service portgesql stop
sudo /usr/lib/postgresql/9.5/bin/pg_controldata /var/lib/postgresql/9.5/main/ | grep Next | grep -v Multi
sudo -u postgres /usr/lib/postgresql/9.5/bin/pg_resetxlog -o 44842 -x 575323138 -f /var/lib/postgresql/9.5/main/
sudo service portgesql start

当然我可以用bash脚本自动化它,但问题是有必要停止Potgresql.有没有其他方法可以在不停止Postgresql的情况下清理它?

解决方法

稍微担心你要从pg_xlog中删除文件,它们对于恢复数据库是必不可少的.请不要告诉我这是生产:)

无论如何,有一个更为根本的原因,就是为什么WAL会以这种速率聚集,这是由于Postgresql中新引入的“复制槽”.

复制插槽将保留WAL日志,直到它们已应用于DR,因此您的WALS不会应用于备用数据库.如果你一直在移除WALS,那么他们将永远不会被应用:)因此可能会出现这种有意义的循环.

您还可以通过参数“wal_keep_segments”来控制该目录中的WALS数量,但我不确定它在9.5中具有副本和复制槽的角色有多少.

无论哪种方式,您当然需要停止删除WAL并使用主人的全新同步重建DR.

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

相关推荐