PG数据库如何通过pg_resetwal处理wal日志的误删除
一 问题
一个开发环境数据库无法访问,发现存储数据库的挂载点存储使用率达到了100%,导致数据库宕机且无法再启动。追踪发现是pg_wal日志把存储撑爆了,然后就直接rm掉了,直接导致了数据库的启动报错。
二 解决方案
使用pg_resetwal重置wal日志
查看控制文件是否正常
pg_controldata -D $PGDATA
如果控制文件没问题,可以进行重置。
pg_resetwal -D $PGDATA
启动数据库
systemctl start postgresql
检查数据库状态
systemctl status postgresql
注意:这种方式会丢失未做checkpoint的wal数据,丢失数据的多少受checkpoint_timeout参数的影响。
使用pg_resetwal注意项
在命令行中指定数据目录PGDATA
这个命令不能在服务器正在运行时被使用,如果在数据目录中发现一个服务器锁文件,pg_resetwal将拒绝启动。
如果服务器崩溃那么一个锁文件可能会被残留,需先移除锁文件且确认没有服务器进程存活,然后再运行pg_resetwal。
使用pg_resetwal后,数据库可能包含由于部分提交事务产生的不一致数据。应立刻备份数据库,初始化实例后重新恢复数据,检查不一致的数据并修复。
pg_resetwal是服务端工具,不能在客户端运行。
如果pg_resetwal无法通过读取pg_control确定合适的值时,才需要选项-c、-l、-m、-x、-O、-o、-e等参数。具体使用可参考官方指南,实在不行只能使用-f参数。但是恢复的数据库还是值得怀疑,一次立即的备份和重新恢复是势在必行的,在备份之前不要在该数据库中执行任何数据修改操作,因为任何这样的动作都可能使破坏更严重。
使用pg_resetwal官方指南
https://www.postgresql.org/docs/12/app-pgresetwal.html
PG数据库如何通过pg_resetwal处理wal日志的误删除
一 问题一个开发环境数据库无法访问,发现存储数据库的挂载点存储使用率达到了100%,导致数据库宕机且无法再启动。追踪发现是pg_wal日志把...
点击下载文档
本文2024-09-23 01:13:05发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144529.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章