Postgres:如何安全地删除副本?

问题描述 投票:2回答:1

如果我永久删除其唯一的副本,我是否需要在主要内容上执行任何操作?我担心WAL文件会填满磁盘。

我想从单节点复制设置中删除唯一的副本:

P -> R

我想删除R.

postgresql replication database-replication
1个回答
2
投票

您的担忧绝对正确。副本在主服务器上创建replication slot,其中存储了restart_lsn。根据文档,restart_lsn是:

最老的WAL的地址(LSN)仍然可能是此插槽的消费者所需要的,因此在检查点期间不会自动删除。

如果副本不在此复制槽中前进LSN,则主要将保持所有WAL段从此位置开始并忽略max_wal_size限制。

如果要删除副本并启用WAL旋转,则还必须删除复制槽:

postgres=# SELECT * FROM pg_replication_slots;
postgres=# SELECT pg_drop_replication_slot('replication_slot_name');

有一个patch on Postgres Commitfest,它引入了新的GUC来限制复制槽所持有的WAL数量。然而,补丁是长寿的,但仍然没有承诺。

© www.soinside.com 2019 - 2024. All rights reserved.