11

将主 PostgreSQL 9.2 服务器配置为不归档但执行流复制是否允许和/或合理?即配置如下图:

wal_level = hot_standby
archive_mode = off

可以将“从”服务器(热备用)配置为归档 WAL 段吗?

wal_level = hot_standby
hot_standby = on
archive_mode = on

这将允许主服务器上的归档网络流量减半(复制但不归档)。这似乎是合理的,文档似乎支持这种配置,但我更希望我们有一个很好的配置。

4

2 回答 2

11

文档(我自己强烈添加):

如果您使用流式复制而不使用基于文件的连续归档,则必须将主服务器中的wal_keep_segments设置为足够高的值,以确保不会过早回收旧的 WAL 段,而备用服务器可能仍需要它们赶上。如果备用数据库落后太多,则需要从新的基本备份重新初始化。如果您设置了可从备用服务器访问的 WAL 存档,则不需要 wal_keep_segments,因为备用服务器始终可以使用存档来赶上进度。

因此,据我了解,当您运行的事务过多时,从属服务器可能很难保持同步。特别是如果主人在奴隶真正得到里面的东西之前删除了 WAL 文件。如果没有archive_mode在 master 上,WAL 文件可以被删除,而不会留下任何方法来取回它们。

如果您将 WAL 归档保留在适当的位置,并将流添加到工作中的 hot-standby-with-archives 结构上,则不会发生这种情况,因为从站始终可以访问已归档的 WAL,并且只要流上的活动较低,就会取回未同步的事务允许它。如果无法访问存档,风险显然是在一些非常重的东西之后失去你的奴隶完整性。

于 2013-10-16T16:49:30.920 回答
1

我不知道这是否是真正的“官方和认证”,我也不认为它是最近的,但它来自 PostgreSQL Wiki ..(https://wiki.postgresql.org/wiki/Streaming_Replication

第5步,指定有趣的评论,与帖子的答案不谋而合:

# To enable read-only queries on a standby server, wal_level must be set to
# "hot_standby". But you can choose "archive" if you never connect to the
# server in standby mode.
wal_level = hot_standby

# Set the maximum number of concurrent connections from the standby servers.
max_wal_senders = 5

# To prevent the primary server from removing the WAL segments required for
# the standby server before shipping them, set the minimum number of segments
# retained in the pg_xlog directory. At least wal_keep_segments should be
# larger than the number of segments generated between the beginning of
# online-backup and the startup of streaming replication. If you enable WAL
# archiving to an archive directory accessible from the standby, this may
# not be necessary.
wal_keep_segments = 32

# Enable WAL archiving on the primary to an archive directory accessible from
# the standby. If wal_keep_segments is a high enough number to retain the WAL
# segments required for the standby server, this is not necessary.
archive_mode    = on
archive_command = 'cp %p /path_to/archive/%f'
于 2020-08-13T19:19:07.593 回答