postgresql数据库故障处理

服务器断电重启之后,postgresql数据库无法正常启动,查看数据库日志发现如下报错在这里插入图片描述

故障分析

通过日志分析可以看到数据库启动时再检查数据库的magic(幻数)值时,发现该值错误,导致启动的失败。
该值的来源是再数据库安装目录的pg_logical下面的replorigin_checkpoint文件 例如:/var/lib/pgsql/15/data/pg_logical/replorigin_checkpoint,它主要用于逻辑复制的 Replication Origin(复制源)机制,保存各复制源的进度。数据库在发生重启恢复时,会读取它,用来让逻辑复制从正确位置继续,避免重复执行或丢失已处理的事务。

处理方案

一般这种报错都是出现再数据库是主备集群的情况下,如果是主备的话,需要确认一下当前主备的复制方式是逻辑复制还是物理复制。采用的是物理复制的话,直接将安装目录中的/var/lib/pgsql/15/data/pg_logical/replorigin_checkpoint mv 移除到其他目录重启postgresql数据库即可

postgresql的物理复制和逻辑复制有什么区别
对比物理复制逻辑复制
复制粒度整个 PostgreSQL 集群指定的表或数据变更
复制内容数据、表结构、索引、所有数据库等整体状态主要是表的 INSERT/UPDATE/DELETE
版本要求通常要求主备同一大版本可以支持跨大版本迁移
备库状态通常只读,故障时提升为主库订阅端可以继续写入
主要用途高可用、故障切换、只读查询、灾备数据分发、数据同步、版本升级、部分表迁移
DDL 是否自动复制是,整体复制通常不会自动复制,需要手工执行
复制范围不能只复制某一张表可以选择指定表
实现复杂度相对简单、稳定更灵活,但需要处理表结构、冲突和同步状态

处理方案: mv /var/lib/pgsql/15/data/pg_logical/replorigin_checkpoint /tmp/,将replorigin_checkpoint文件移动到其他目录并重启数据库服务即可

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐