postgresql - 在 PostgreSQL 中存档失败
问题描述
pg_wal
文件夹越来越大,当我查询文件时archiver
没有存档。
postgres=# select * from pg_stat_archiver;
archived_count | last_archived_wal | last_archived_time | failed_count | last_failed_wal | last_failed_time | stats_reset
----------------+-------------------+--------------------+--------------+------------------------------------------+-------------------------------+-------------------------------
0 | | | 19404 | 000000010000000E00000018.00000028.backup | 2019-09-03 11:35:07.161632+08 | 2019-08-30 09:58:19.943897+08
(1 row)
来自失败归档命令的消息是:
test ! -f /var/lib/postgresql/10/main/pg_wal/000000010000001D00000024 && cp pg_wal/000000010000001D00000024 /var/lib/postgresql/10/main/pg_wal/000000010000001D00000024 cp: cannot create regular file '/var/lib/postgresql/10/main/pg_wal/000000010000001D00000024': No such file or directory
在主postgresql.conf
文件中有一个archive_command
test ! -f /var/lib/postgresql/10/main/pg_wal/%f && cp %p /var/lib/postgresql/10/main/pg_wal/%f
这个路径var/lib/postgresql/10/main/pg_wal/%f
是我要归档到的从服务器中的路径。然后我pg_basebackup
在复制服务器中运行以复制数据库。数据确实复制到了复制服务器,但是在主服务器中,当我签入时,WAL 文件没有存档pg_stat_archiver
。
解决方案
您必须查看服务器日志文件,在那里您将看到一条错误消息和来自archive_command
.
这会告诉你哪里出了问题,以便你可以修复它。
一旦问题得到解决,PostgreSQL 将归档 WAL 文件,一切都会恢复正常。
经过一番调查,事实证明您配置archive_command
为将 WAL 文件写入从服务器的pg_wal
目录,它与从服务器的 WAL 文件发生冲突。
您必须将 WAL 存档写入其他地方,而不是写入从站的数据目录。
推荐阅读
- python - 向数据框中的新列添加值
- visual-studio - 如何获取选定的 FileView 项目
- c - 我想用 C 语言创建一个折扣计算器,使用一个函数。我想从用户那里获取值。但我的不工作
- scheme - Chicken Scheme.- 如何将复数(例如: (sqrt 2) )转换为整数?不考虑舍入策略
- arrays - 在数组中查找“空帧”(LRU 和 OS 上的模拟)
- spring-boot - 带有 Spring Boot 的 Informix
- python - 无法在列表理解之外检索 itertools 迭代器
- reactjs - 在 React 16 和 Bootstrap 4 中,如何将引导选项卡组件中的每个选项卡映射到 URL?
- python - 在 websocket 的输出中向数据框添加新行
- node.js - 为什么 http.get 在 NodeJS 中需要这么长时间?