停止PostgreSQL流式复制

gc0ot86w  于 2022-11-23  发布在  PostgreSQL
关注(0)|答案(3)|浏览(491)

我想将PostgreSQL主/从流复制设置转换为一个没有复制和HA的主/从设置。
如何才能告诉主服务器它不再拥有从服务器,并且它不应该将其数据复制到从服务器?
当然,它也不应该像从机暂时停机时那样,保留要发送给从机的 * WAL *。

fwzugrvs

fwzugrvs1#

下面是我所做的:

  • 在主/从设备上,编辑pg_hba.conf,删除:

主机复制复制器x.x.x.x/32 md5

  • 在主服务器中,通过以下方式重新加载配置:

选择pg_reload_conf()

  • 在从服务器数据目录中,删除文件:standby.signal
  • 重启从设备,

然后slave将保留数据,但不再从master复制,并且slave是可写的。

pxy2qtax

pxy2qtax2#

根据您使用的Postgres版本,您的复制可能是使用“复制插槽”完成的。如果您不再有来自复制插槽的客户端流,您可以删除该插槽。以下是一些有用的查询:
获取每个复制插槽的磁盘使用情况(对于Postgres 9.6):

SELECT
    redo_location,
    slot_name,restart_lsn,
    round((redo_location-restart_lsn) / 1024 / 1024 / 1024, 2) AS GB_behind
FROM
    pg_control_checkpoint(),
    pg_replication_slots;

获取每个复制插槽的磁盘使用情况(适用于Postgres 10+):

SELECT redo_lsn,
    slot_name,
    restart_lsn,
    round((redo_lsn-restart_lsn) / 1024 / 1024 / 1024, 2) AS GB_behind
FROM pg_control_checkpoint(),
    pg_replication_slots;

删除复制插槽:

select pg_drop_replication_slot('slot_name');

参考文献:

dxxyhpgq

dxxyhpgq3#

非常重要的是也要停止walsender以使用以下命令恢复服务器内存:

select pg_terminate_backend(pid) from pg_stat_replication;

这将释放服务器存储内存。

相关问题