gpt4 book ai didi

postgresql - 在 PostgreSQL 流复制中使用 archive_command

转载 作者:行者123 更新时间:2023-11-29 11:58:45 25 4
gpt4 key购买 nike

当使用流复制时,谁能解释一下 PostgreSQL 中 archive_command 和 restore_command 的用途?

正如我在流复制辅助服务器中研究的那样,读取并应用部分填充的 WAL 文件。假设我在 pg_xlog 中有我的 wal 段位置并使用 archive_command 我正在将其复制到我的本地存档目录,比如/arclogs。

因此,如果辅助服务器要通过网络从 pg_xlog 读取部分填充的归档日志,那么保存在/arclogs 中的文件有什么用。并且文件只有在 16 MB 时才会发送到/arclogs?

我是 PostgreSQL 的新手,您的帮助将会得到应用。

最佳答案

master 通常只会在pg_xlog 中保留有限数量的 WAL,由 master 的 wal_keep_segments 控制。环境。如果副本太慢或断开连接的时间太长,主服务器将删除这些事务日志以确保它可以继续运行而不会耗尽磁盘空间。

如果发生这种情况,副本将无法 catch 主副本,因为它需要连续且无间隙的 WAL 流。

所以你可以:

  • 启用 WAL 归档(archive_commandarchive_mode)作为后备,因此如果主从其 pg_xlog 中删除它需要的 WAL,则副本可以切换到从归档重放 WAL。副本使用其 restore_command 获取 WAL .重要的是,存档的 WAL 不需要与主服务器位于同一台机器上,而且通常不需要。

  • 使用物理复制槽 (primary_slot_name in recovery.conf) 将副本连接到主副本。如果使用插槽,即使副本断开连接,master 也知道副本需要什么 WAL。因此它不会从 pg_xlog 中删除副本仍然需要的 WAL。但缺点是,如果副本停机时间过长,pg_xlog 可能会填满,导致主服务器因磁盘空间不足而失败。

  • 两者都不做,如果副本落后太多则允许副本失败。如果发生这种情况,然后从新的基础备份中重新创建它们。

文档确实需要一个概述部分来将所有这些放在一起。

WAL 归档有一个额外的好处:如果你做一个 base backup你可以使用它的服务器,加上 WAL 文件,做一个 point-in-time restore主人的。这使您可以从意外的表丢失等情况中恢复数据。 PgBarman是可以帮助您解决此问题的工具之一。

关于postgresql - 在 PostgreSQL 流复制中使用 archive_command,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45703167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com