Postgres:如何安全删除副本?

时间:2019-04-19 14:36:21

标签: postgresql replication database-replication

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

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

P -> R

我要删除R。

1 个答案:

答案 0 :(得分:2)

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

  

此插槽的使用者可能仍需要最旧的WAL地址(LSN),因此不会在检查点期间自动删除。

如果副本没有在此复制插槽中推进LSN,则primary将保留所有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数量。但是,该补丁程序是长期有效的,仍未提交。