一、 背景
pgbackrest配置的归档目录/backup被写满
归档报错 No space left on device,wal日志堆积
解决方法直接查看第三部分
二、 问题分析及处理
1. 目录清理
首先想到的就是清理/backup目录,清理后剩余6T空间
但发现pgbackrest归档依旧在报错 No space left on device,没有识别到空间已经释放,一直在尝试归档结尾 0055那个wal日志文件。
归档目录写入依然停止在7:02
2. 尝试重启pgbackrest
重启命令:pgBackRest User Guide - Debian & Ubuntu
执行 pgbackrest stop,但发现并没有停下,进程依然在,等待一段时间后依然如此。
再次执行stop,发现会报错,执行start,进程没有变化,且后台归档依旧在报错
3. 尝试kill旧进程
再次执行 pgbackrest stop,kill pgbackrest主进程
执行pgbackrest start,发现有进程被重新拉起
查看错误日志,最后报错记录停留在11:15:53,即pgbackrest重新启动的时间
一段时间后,并发子进程也被拉起
查看归档目录,已有新归档日志写入
三、 解决方法
- 清理报错提到的/backup目录,删除无用的备份或归档文件(注意保留日期及文件名,不要直接复制)
bash
find /backup/pgbackrest/repos/archive/demo/10-1 -maxdepth 1 -mtime +1 -name "00000003*" -exec rm -rf {} \;
- 停止pgbackrest
bash
pgbackrest stop
- kill 当前pgbackrest主进程
bash
ps -ef|grep pgbackrest
kill 对应进程号
- 启动pgbackrest,有pgbackrest进程被拉起即可
bash
pgbackrest start
ps -ef|grep pgbackrest
- 检查错误日志,应该已无报错输出
bash
cd $PGDATA/log
tail xxxx.log
- 检查归档目录,应该有新归档文件写入
bash
cd /backup/pgbackrest/repos/archive/demo/10-1
ll -th|more
参考: