postgresql数据库PANIC: replication checkpoint has wrong magic故障处理
·
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文件移动到其他目录并重启数据库服务即可
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)