报错信息

image.png

数据导出及备份

如果之前使用Docker运行数据库时数据文件没有映射出来,现在第一步就需要将数据导出来

在主机创建数据目录

mkdir /home/xxx/postgres/data

将容器保存成镜像进行备份

docker commit [容器ID]  xxx-pgsql-backup-20250727

导出数据文件

sudo docker cp [容器ID]:/var/lib/postgresql/data /home/xxx/postgres/data

备份数据文件以防在修复时产生进一步的损坏

tar -zcvf xxx-database-data.tar.gz /home/xxx/postgres/data/

解决方案

由于当前Docker镜像已经无法启动,所以要创建一个新的镜像,将这个数据目录随便映射到镜像中的一个目录中,然后启动镜像。

切换用户

su postgres

使用pg_resetwal修复WAL文件

==注意==

pg_resetwal 会重置 WAL 日志,可能导致未提交的事务丢失。

pg_resetwal -f /var/lib/postgql/data