繁体   English   中英

停止 PostgreSQL 流复制

[英]Stop PostgreSQL streaming replication

我想将我的 PostgreSQL 主/从流复制设置变成一个没有复制且没有 HA 的主从设置。

怎么可能告诉 master 它不再有 slave 并且它不应该将它的数据复制到 slave?

当然,它也不应该像从站暂时关闭时那样,将WAL发送给从站。

根据您使用的 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');

参考:

这是我所做的:

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

    主机复制复制器 xxxx/32 md5

  • 在 master 中,通过以下方式重新加载配置:

    选择 pg_reload_conf()

  • 在从机的数据目录中,删除文件: standby.signal
  • 重启奴隶,

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

使用以下命令停止 walsender 以恢复服务器 memory 也非常重要

select pg_terminate_backend(pid) from pg_stat_replication;

这将释放您的服务器存储空间 memory。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM