【问题标题】:Stop streaming replication停止流复制
【发布时间】:2021-11-12 00:59:35
【问题描述】:

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

如何告诉master它不再有slave并且它不应该将它的数据复制到slave。当然,它也不应该像从站暂时关闭时那样将 WAL 发送到从站。

【问题讨论】:

  • 您无需执行任何操作。只需关闭从站。流复制是一种“拉”复制——从服务器主动从主服务器检索 WAL 记录。
  • 如果我关闭slave,master不会累积WAL吗? wal_keep_segments 不是表示如果数据没有发送到slave,Master 中将保留多少WAL?
  • 来自文档:Specifies the minimum number of past log file segments kept in the pg_xlog directory。我相信这是一个下限,而不是上限。

标签: postgresql


【解决方案1】:

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

参考资料:

【讨论】:

    【解决方案2】:

    这是我所做的:

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

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

    • 在 master 中,重新加载配置,通过:

      选择 pg_reload_conf()

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

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

    【讨论】:

    • 这适用于哪个版本的 postgres?
    • @KhoPhi pg 13.4
    • 谢谢。我只是询问上下文。在 2072 年 Postgres v 134.3 可能不支持此功能时,以防到那时有人偶然发现此功能。
    • @KhoPhi 2072?你是个有趣的人。
    猜你喜欢
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    相关资源
    最近更新 更多