目前我遇到了一个奇怪的情况。存档failed_count
从 0 飙升至 2475。
这是我检查的一些参数:
- 从 pg_stat_archiver 中选择 *;
archived_count
3567;
last_archived_time
2022-08-17 21:36:05;
failed_count
2516;
last_failed_time
2022-08-18 10:58
select pg_switch_wal();
WAL 总是在切换,非常 1-2 秒。从 pg_stat_replication 中选择 pg_wal_lsn_diff(pg_current_wal_lsn(), replay_lsn);
这也每秒钟都在变化。总是在一段时间内从数千旋转到 0。
SELECT COUNT(*) FROM pg_ls_dir('pg_wal') WHERE pg_ls_dir ~ '^[0-9A-F]{24}';
从今天早上 12 点开始,这个值一直是 7450。在此之前,它一直在增加。观察到的最大值是 10811
SELECT * FROM pg_stat_bgwriter ;
这给出了:名称 |价值 | ---------------------+---------------------------- -+ checkpoints_timed |109040 --> 增加 |
checkpoints_req |96 --> 保持不变 |
checkpoint_write_time|12514471288 | checkpoint_sync_time |1373072.0 | 缓冲区检查点 |412734838 | buffers_clean |20745183 | maxwritten_clean |121362 | buffers_backend |98238043 | buffers_backend_fsync|0 | 缓冲区分配 |904724994 | stats_reset |2021-08-04 12:19:41.333 +0700|
看着pg_stat_bgwriter
, checkpoints_timed 正在增加,这很好。
这发生在我的生产服务器上(另一个是测试服务器)。
- 这是怎么回事 ?为什么 WAL 停止生成但存档计数失败?我的印象是,如果没有新的 WAL,则不应进行归档。
- 我应该打开什么 LOGGING 参数来监控这些错误?
我的配置:
name |setting |unit|
----------------------------+------------------------------------------+----+
archive_command |test ! -f /archive/%f && cp %p /archive/%f| |
archive_mode |on | |
archive_timeout |2400 |s |
checkpoint_completion_target|0.9 | |
checkpoint_flush_after |32 |8kB |
checkpoint_timeout |300 |s |
checkpoint_warning |30 |s |
hot_standby |on | |
log_checkpoints |off | |
max_replication_slots |10 | |
max_wal_senders |5 | |
max_wal_size |8192 |MB |
min_wal_size |2048 |MB |
synchronous_commit |off | |
synchronous_standby_names |* | |
wal_compression |off | |
wal_keep_segments |4000 | |
wal_level |logical | |
wal_log_hints |off | |
wal_segment_size |16777216 |B |
wal_sender_timeout |60000 |ms |
请帮忙。谢谢
PostgreSQL 不断尝试一次又一次地归档相同的 WAL 段。这就是为什么失败次数不断增加的原因,即使没有生成新的 WAL。
修复问题 - PostgreSQL 日志中的错误消息应该为您提供有关原因的线索。