postgresql 流式复制 - 主服务器保留所有档案,这正在填满我的 HD

Posted

技术标签:

【中文标题】postgresql 流式复制 - 主服务器保留所有档案,这正在填满我的 HD【英文标题】:postgresql streaming replication - Master Server keeps all the archives and this is filling up my HD 【发布时间】:2020-08-31 08:14:27 【问题描述】:

有没有办法在主服务器上对这些较旧且从服务器不需要用于流式复制的存档文件运行清理?

【问题讨论】:

您说的是存档,而不是pg_wal 中的活动WAL 文件,对吧?为什么流复制需要它们?是不是因为你在备机上使用了restore_command 是的,我在备用服务器和主服务器上使用restore_command,我在 postgresql.conf 文件中使用archive_command 打开了archive_mode 为什么不直接使用带有复制槽的流而不是 archive_command 和 restore_command? 【参考方案1】:

您可以将恢复参数archive_cleanup_commandpg_archivecleanup 命令一起使用:

archive_cleanup_command = 'pg_archivecleanup /var/lib/postgresql/pg_log_archive/main %r'

该命令假定 WAL 存档可在备用服务器上的 /mnt/server/archivedir 中访问。

请注意,对于早于 v12 的 PostgreSQL 版本,这必须在 recovery.conf 中指定。

如果您没有简单的方法从备用服务器访问 WAL 存档,则可以使用 NFS 挂载。

【讨论】:

我正在使用 postgresql v10 并点击此链接 [scalingpostgres.com/tutorials/postgresql-streaming-replication/…,现在使用它已经有一段时间了,现在我的主服务器上的这个目录刚刚填满。我在 Masters postgresql.conf 中有 archive_mode = onarchive_command = 'test ! -f /var/lib/postgresql/pg_log_archive/main/%f && cp %p /var/lib/postgresql/pg_log_archive/main/%f' 那就按照我在回答中说的做吧。 我的 recovery.conf 文件在我的备用服务器上,存档发生在另一台服务器上的主服务器上,并且无法从备用服务器访问它的存档文件夹。你能建议应该怎么做吗? 执行与restore_command 类似的操作,但会删除所有旧文件。 像什么?在 V10 中

以上是关于postgresql 流式复制 - 主服务器保留所有档案,这正在填满我的 HD的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL高可用 1-主/热备集群

用于高负载的 PostgreSQL 流式复制

postgreSQL主从复制

PostgreSQL强大的高可用技术

Postgresql主从配置

centos8 postgresql14主服务器:192.168.80.128 从服务器:192.168.80.133 做主从复制,有哪些步骤,具体的命令是什么,从数据库需要初始化吗