Gab*_*ich 9 postgresql postgresql-10
清理 WAL postgres 的正确方法是什么?我有一个超过 100 GB 的数据库,它在 pg_wal 中有大约 600 GB。我还设置了 2 个逻辑复制。
主从 - Postgres 10。
Master 和 Slaves 有评论wal_keep_segments
和max_wal_size
。
pg_archivecleanup
没有使用%r
选项,然后我通过在pg_controldata
最新检查点的 REDO WAL 文件中搜索并删除了日志来获取存档名称,但随后一个副本因错误而停止
无法从 WAL 流接收数据:致命:请求的 WAL 段 xxx 已被删除
为了解决这个问题,我删除并重新创建了副本。
jja*_*nes 14
“pg_wal”会自我清理。你几乎不应该用手触摸 pg_wal。如果它没有自行清理,您需要找出原因并解决根本问题。
一个可能的原因是您有一个复制槽阻碍了它。副本正在使用插槽并且无法跟上。或者你有一个没有连接复制品的插槽,例如你摧毁了复制品但没有丢弃它曾经占用的垃圾。您可以通过查询pg_replication_slots来查看您拥有哪些插槽,如有必要,使用pg_drop_replication_slot删除一个插槽,两者都在主服务器上运行。您将寻找具有“restart_lsn”的最旧非空值的插槽。
另一个原因是您打开了“archive_mode”,但您的“archive_command”不断失败或跟不上。如果失败,您将在服务器日志文件中看到有关此问题的警告。
"pg_archivecleanup" 用于清理 WAL存档。“pg_wal”不是存档,而是实时WAL 文件。你很幸运,你没有通过在那里胡闹而破坏你的数据库。
归档时间: |
|
查看次数: |
16049 次 |
最近记录: |