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

相关推荐
微软技术分享几秒前
Ubuntu 本地部署Ollama+OpenWebUI教程
数据库·ubuntu·postgresql
ly768916 分钟前
MySQL 自增主键耗尽:从原理到应急恢复
数据库·mysql·innodb·故障恢复·自增主键·主键设计
文人sec25 分钟前
MySQL主库出问题了,从库怎么办?备库为什么会延迟好几个小时?
android·数据库·mysql
砚底藏山河1 小时前
【量化纯GET实战 #23】多股票相关性:用收益率看板块联动
java·数据库·python·金融·数据分析
Java小白笔记2 小时前
MySQL 8.0 常用内置函数用例
数据库·mysql·mybatis
ZGG0032 小时前
MySQL 索引详解:B+ 树、聚簇索引与最左前缀
java·数据库·mysql
勿忘,瞬间2 小时前
Mybatis高阶
java·数据库·mybatis
运维行者_3 小时前
ISP 企业级带宽计费怎么做?网络流量计费的 6 大核心能力
运维·服务器·网络·数据库·支持向量机·接口隔离原则
奇树谦3 小时前
PCB生产制造全流程详解:从开料、钻孔、沉铜到检测、包装
网络·数据库·制造
驾驭人生3 小时前
Hangfire.Redis.StackExchange 已归档停更!生产任务卡死、重复执行、网络抖动问题解决方案
数据库·redis·缓存