db_ha集群中某个节点启动失败,报错缺少sm4加密模块

文章目录

环境

系统平台:Linux x86-64 Red Hat Enterprise Linux 8

版本:4.5.1

症状

使用命令 pg_ctl start 启动db_ha集群中的一个节点上的数据库报错,

查看数据库日志,日志中无关于此次启动的任何信息输出。

数据目录中postgresql.conf、postgresql.auto.conf 等配置文件为空文件

报错信息如下,提示缺少加密模块。

复制代码
pg_ctl  start

等待服务器进程启动 ....
2025-07-16 15:51:10.468 CST [15752] FATAL:  database files are encrypted
2025-07-16 15:51:10.468 CST [15752] DETAIL:  The database cluster was initialized with encryption but the server was started without an encryption module.
2025-07-16 15:51:10.468 CST [15752] HINT:  Set the encryption module using encryption_library configuration parameter.
 已停止等待
pg_ctl: 无法启动服务器进程
检查日志输出.

问题原因

数据库为db_ha两节点集群,sm4加密。

启动失败的节点之前一个月一直处于关机状态,且关机前为主库。

由于较长时间未开启,再次开启时db_ha将其降为备库,且做rewind修复数据。

因rewind未正常结束,导致postgresql.conf为空文件,

数据库启动时找不到参数encryption_library = 'sm4'

解决方案

由于该节点数据已完全损坏,需要重新拉取数据,重做备库。

1.更改数据目录名称

mv /data/highgo/data_bak_yyyymmdd

2.新建数据目录

mkdir /data/highgo/data

3.拉取数据

pg_basebackup -h 主库IP -U sysdba -D /data/highgo/data -Fp -Xs -R -P -v

4.启动备库

pg_ctl start

5.主库上查看流复制状态

select * from pg_stat_replication;

6.主库上查看复制槽

select * from pg_replication_slots;

7.在备库上添加复制槽

alter system set primary_slot_name = 'xxxx'; -- 根据上面的查询填写

select pg_reload_conf();

8.切换主节点

db_ha switchover xxx.xxx.xxx.xxx # 原备节点IP

9.新主库创建复制槽

select * from pg_create_physical_replication_slot('db_ha_slot_2');

10.新备库添加复制槽

alter system set primary_slot_name = 'db_ha_slot_2';

11.主库上查看流复制状态

select * from pg_stat_replication;

报错编码

15752

相关推荐
这个DBA有点耶7 分钟前
数据融合平台的下一代形态:数据库内核自己就能融合,为什么还要ETL?
数据库·架构·aigc
数据库小学妹11 分钟前
MySQL大表怎么优化?2亿行表的分区归档与冷热分离实战
数据库·mysql·分库分表·分区表·数据库运维·冷热分离
91刘仁德15 分钟前
RAG实战 - 向量数据库(Milvus)
数据库·milvus
资深技术分享员20 分钟前
Geejing WebBuilder 日志、在线用户、系统监控,出问题时的三个第一现场
java·运维·数据库
我是小白呀1 小时前
n8n 实战:把 AcmeFlow 的 READY 事件接到 CRM 通知
数据库·人工智能·workflow
蓝速科技1 小时前
仓储盘点移动终端选型与蓝速科技 K10 实战方案
运维·数据库·人工智能·科技·材质
TLA技术1 小时前
LogMiner vs 裸日志解析(六):想提速,只能“堆实例”,结果把源库拖垮
数据库·oracle·flink·dba·迁移学习
学好statistics和DS2 小时前
数据库数据世界的逻辑基石:Armstrong公理系统全解析
数据库·数据库开发
IT古董2 小时前
《FDE前沿部署工程师实战教程》23 - Enterprise AI Event Bus:事件驱动、消息队列与AI工作流自动触发
大数据·数据库·人工智能
程序猿乐锅2 小时前
【黑马点评 | 第七篇】Redis 分布式锁的两种实现
java·数据库·redis·分布式·spring·缓存