使用流式复制时,有人可以在PostgreSQL中解释archive_command和restore_command的用途吗?
当我在流式复制中研究辅助服务器读取并应用部分填充的WAL文件。假设我在pg_xlog中使用wal段位置并使用archive_command我将其复制到我的本地存档目录/ / arclogs。
因此,如果辅助服务器将通过网络从pg_xlog读取部分填充的存档日志,那么/ arclogs中保存的文件的用途是什么。 并且文件只有在16 mb时才会被发送到/ arclogs?
我是PostgreSQL&的新手。你的帮助将会被证实。
答案 0 :(得分:4)
主人通常只会在pg_xlog
中保留有限数量的WAL,由主人wal_keep_segments
设置控制。如果副本太慢或断开连接太长时间,主服务器将删除这些事务日志,以确保它可以继续运行而不会耗尽磁盘空间。
如果发生这种情况,副本无法赶上主副本,因为它需要一个连续且无间隙的WAL流。
所以你可以:
archive_command
和archive_mode
)作为后备,因此如果主服务器从其pg_xlog
删除所需的WAL,副本可以切换到从归档重播WAL。副本使用restore_command
获取WAL。重要的是,存档的WAL不需要与主机在同一台机器上,通常也不是。或
primary_slot_name
in recovery.conf
)将副本连接到主服务器。如果使用插槽,则即使副本断开连接,主设备也知道副本所需的WAL。所以它不会删除pg_xlog
副本中仍然需要的WAL。但缺点是,如果副本停机时间过长会导致pg_xlog
填满,导致主机因磁盘空间不足而失败。或
文档确实需要一个概述文件来将所有这些组合在一起。
WAL归档有一个额外的好处:如果您创建服务器的base backup,您可以使用它和WAL归档来执行主服务器的point-in-time restore。这使您可以从意外表丢弃等内容中恢复数据。 PgBarman
是可以帮助您解决此问题的工具之一。