我有一个具有 3 个节点的 Postgres 集群:ETCD+Patroni+Postgres13。
现在出现了
pg_wal
文件夹不断增长的问题。现在包含 5127 个文件。网上查了一下,发现一篇文章建议大家注意以下数据库参数(当时的含义是这样的):
archive_mode off;
wal_level replica;
max_wal_size 1G;
SELECT * FROM pg_replication_slots;
postgres=# SELECT * FROM pg_replication_slots;
-[ RECORD 1 ]-------+------------
slot_name | db2
plugin |
slot_type | physical
datoid |
database |
temporary | f
active | t
active_pid | 2247228
xmin |
catalog_xmin |
restart_lsn | 2D/D0ADC308
confirmed_flush_lsn |
wal_status | reserved
safe_wal_size |
-[ RECORD 2 ]-------+------------
slot_name | db1
plugin |
slot_type | physical
datoid |
database |
temporary | f
active | t
active_pid | 2247227
xmin |
catalog_xmin |
restart_lsn | 2D/D0ADC308
confirmed_flush_lsn |
wal_status | reserved
safe_wal_size |
Patroni 集群的所有其他功能均有效(切换、重新初始化、复制);
root@srvdb3:~# patronictl -c /etc/patroni/patroni.yml list
+ Cluster: mobile (7173650272103321745) --+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+--------+------------+---------+---------+----+-----------+
| db1 | 10.01.1.01 | Replica | running | 17 | 0 |
| db2 | 10.01.1.02 | Replica | running | 17 | 0 |
| db3 | 10.01.1.03 | Leader | running | 17 | |
+--------+------------+---------+---------+----+-----------+
Patroni 帕特罗尼编辑:
loop_wait: 10
maximum_lag_on_failover: 1048576
postgresql:
parameters:
checkpoint_timeout: 30
hot_standby: 'on'
max_connections: '1100'
max_replication_slots: 5
max_wal_senders: 5
shared_buffers: 2048MB
wal_keep_segments: 5120
wal_level: replica
use_pg_rewind: true
use_slots: true
retry_timeout: 10
ttl: 100
请帮忙,可能是什么问题?
这就是我在
pg_stat_archiver
中看到的:
postgres=# select * from pg_stat_archiver;
-[ RECORD 1 ]------+------------------------------
archived_count | 0
last_archived_wal |
last_archived_time |
failed_count | 0
last_failed_wal |
last_failed_time |
stats_reset | 2023-01-06 10:21:45.615312+00
如果你将
wal_keep_segments
设置为5120,那么pg_wal
中有5127个WAL段是完全正常的,因为PostgreSQL将始终保留至少5120个旧的WAL段。如果这对您来说太多,请减少该参数。如果您使用复制槽,唯一的缺点是您可能只能在故障转移后很快pg_rewind
。
大家好,登陆这里想知道为什么他们的(zalando)数据库集群正在使用 patoni 时空间不足。
在主数据库节点上执行
du -h -d 4
告诉我
wal 文件夹变得非常大 ./pgdata/pgroot/data/pg_wal
。原因是复制节点不再健康且无法追赶。
我通过在节点上执行:
patronictl reinit
并选择不健康的副本来解决这个问题。 您可以使用 patronictl list
查看副本的状态。 当节点再次恢复健康时,我的 wal 文件夹大小在数据库节点上从 144GB 降至接近零。