PostgreSQL 数据库故障排查与修复记录
日期 : 2025-12-23 服务器: ec-xuz-2
一、问题现象
PostgreSQL 服务启动失败,状态显示:
systemctl status postgresql
错误信息:
Active: failed (Result: exit-code)
could not write to log file: No space left on device
二、问题分析
2.1 检查磁盘空间
df -h
结果显示根分区已满:
/dev/vda3 38G 38G 0 100% /
2.2 检查磁盘使用分布
du -sh /* 2>/dev/null | sort -hr | head -20
主要占用:
-
/usr- 21G -
/root- 8.4G -
/var- 8.1G
2.3 发现未使用磁盘
lsblk
发现 200G 磁盘 vdb 未挂载:
vdb 253:16 0 200G 0 disk
三、解决方案
3.1 挂载新磁盘
创建分区:
fdisk /dev/vdb
# n -> p -> 1 -> 回车 -> 回车 -> w
格式化:
mkfs.xfs /dev/vdb1
挂载:
mkdir -p /data
mount /dev/vdb1 /data
配置开机自动挂载:
echo "/dev/vdb1 /data xfs defaults 0 0" >> /etc/fstab
3.2 验证挂载
df -h | grep vdb
结果:
/dev/vdb1 200G 1.5G 199G 1% /data
3.3 重启数据库服务
systemctl restart postgresql
systemctl status postgresql
四、处理结果
-
200G 磁盘成功挂载到
/data -
PostgreSQL 服务恢复正常运行
五、后续建议
-
迁移大目录到 /data :将
/var/lib/pgsql等大目录迁移到新磁盘 -
配置日志轮转:防止日志文件过大占满磁盘
-
设置磁盘监控告警:当使用率超过 80% 时发送告警
-
定期清理:清理旧日志和临时文件
六、常用命令参考
| 命令 | 用途 |
|---|---|
df -h |
查看磁盘使用情况 |
du -sh /path/* |
查看目录大小 |
lsblk |
列出块设备 |
blkid |
查看设备文件系统 |
fdisk /dev/xxx |
磁盘分区 |
mkfs.xfs /dev/xxx |
格式化为 XFS |
mount /dev/xxx /path |
挂载磁盘 |