postgresql - Postgres:如何安全地删除副本?
问题描述
如果我永久删除它的唯一副本,我是否需要在主节点上做任何事情?我担心 WAL 文件会填满磁盘。
我想从单节点复制设置中删除唯一的副本:
P -> R
我想删除 R。
解决方案
你的担心是绝对正确的。副本在存储的主服务器上创建复制槽restart_lsn
。根据文档,restart_lsn
是:
最旧的 WAL 的地址 (LSN),此插槽的使用者可能仍需要该地址,因此在检查点期间不会自动删除。
如果replica没有在这个replication slot中推进LSN,primary会保留所有从这个位置开始的WAL segment,并且忽略max_wal_size
limit。
如果要删除副本并启用 WAL 轮换,则还必须删除复制槽:
postgres=# SELECT * FROM pg_replication_slots;
postgres=# SELECT pg_drop_replication_slot('replication_slot_name');
Postgres Commitfest 上有一个补丁,它引入了新的 GUC 来限制复制槽持有的 WAL 的数量。但是,该补丁是长期存在的,但尚未提交。
推荐阅读
- c# - 如何从 Xamarin 表单中的 ListView 集合中获取总价格
- microservices - 微服务架构中的Server-2-server授权
- reactjs - npm install 无法在 ubuntu 上运行 ERR EMISSINGARG
- python - 在 Python 中使用“exchangelib”在特定日期范围(用户输入)内从 Outlook 中的特定文件夹访问电子邮件
- kubernetes - Kubernetes 中 Prometheus 的动态目标?
- c# - 设置组合框自动完成的宽度
- html - div的动画背景颜色不起作用
- python - 为什么外键显示为下拉框?
- python - 为我的 kmeans 聚类数据创建散点图时遇到问题
- windows - 向 IE 代理设置添加例外以允许连接到 Exchange Online