暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

瀚高数据库开启加密(sm4)导致pg_resetwal不生效问题

瀚高PG实验室 2025-08-18
153
症状
无法启动数据库,报错ould not locate a valid checkpoint record,尝试使用pg_resetwal修复。修复后无效。相关报错信息如下
pg_ctl 启动报错
    [root@cxt pg_wal]# pg_ctl start
    等待服务器进程启动 ....2024-01-31 15:31:12.901 CST [258179] LOG:  data encryption performed by sm4  《《《
    2024-01-31 15:31:12.903 CST [258179] LOG:  starting HighGo Security Enterprise Edition Database System 4.5.8.2 on x86_64,build on 20240119
    2024-01-31 15:31:12.903 CST [258179] LOG:  listening on IPv4 address "0.0.0.0", port 5871
    2024-01-31 15:31:12.903 CST [258179] LOG:  listening on IPv6 address "::", port 5871
    2024-01-31 15:31:12.904 CST [258179] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5871"
    2024-01-31 15:31:12.913 CST [258179] LOG:  redirecting log output to logging collector process
    2024-01-31 15:31:12.913 CST [258179] HINT:  Future log output will appear in directory "hgdb_log".
    ........................................................... 已停止等待
    pg_ctl: 服务没有及时启动
    [root@cxt pg_wal]#
    查看日志错误信息
      2024-01-31 15:31:12.915 CST,,,258182,,65b9f740.3f086,1,,2024-01-31 15:31:12 CST,,0,LOG,00000,"database system was interrupted; last known up at 2024-01-31 15:26:03 CST",,,,,,,,,""
      2024-01-31 15:31:13.617 CST,,,258182,,65b9f740.3f086,2,,2024-01-31 15:31:12 CST,,0,LOG,00000,"invalid primary checkpoint record",,,,,,,,,""
      2024-01-31 15:31:13.617 CST,,,258182,,65b9f740.3f086,3,,2024-01-31 15:31:12 CST,,0,PANIC,XX000,"could not locate a valid checkpoint record",,,,,,,,,""
      2024-01-31 15:31:13.794 CST,,,258179,,65b9f740.3f083,3,,2024-01-31 15:31:12 CST,,0,LOG,00000,"startup process (PID 258182) was terminated by signal 6: Aborted",,,,,,,,,""
      2024-01-31 15:31:13.794 CST,,,258179,,65b9f740.3f083,4,,2024-01-31 15:31:12 CST,,0,LOG,00000,"aborting startup due to startup process failure",,,,,,,,,""

      数据库报错,could not locate a valid checkpoint record。说明控制文件或wal日志有损坏。此时需要使用备份恢复。如果没有备份,可尝试pg_resetwal。其会清空旧的wal,产生新的wal,并更新控制文件信息。


      pg_resetwal修复,启动后依然报错
        pg_resetwal -D /opt/highgo/hgdb-see-4.5.8/data -f
        pg_ctl start  #无法启动
        触发条件
        检查数据库启用了sm4。 pg_controldata |grep encryption
        解决方案

        应用数据库补丁,如不能使用补丁。则考虑备份恢复。


        • hgdb458以补丁的形式提供。补丁包hgdb-see-4.5.8-patch-0330-20240119.x86_64.rpm

        • hgdb457以整包的形式提供。安装包hgdb-see-4.5.7-da8c022.x86_64.rpm

        • hgdb456以整包的形式提供。安装包hgdb-see-4.5.6-4c56395.x86_64.rpm


        下面以hgdb458应用补丁为例


        1. 上传和安装补丁

          rpm -ivh hgdb-see-4.5.8-patch-0330-20240119.x86_64.rpm

          补丁安装路径:$HGDB_HOME/etc/patch-20240119,此路径下有README.txt


          2. 应用补丁并启动数据库


            #关闭数据库
            pg_ctl stop
            #应用补丁
            cd $HGDB_HOME/etc/patch-20240119
            ./upgrade.sh patch-20240119

            3. 重新resetwal

              pg_resetwal -D /opt/hgdata -f

              4. 启动数据库,数据库可正常启动,resetwal生效

                pg_ctl start
                #数据库版本变为4582
                highgo=# select version();
                                           version                          
                -------------------------------------------------------------
                 瀚高安全版数据库系统V4.5.8.2, x86_64平台, 创建日期:20240119
                (1 行记录)
                版权声明:本文由瀚高及PG志愿者翻整理,转载请注明出处,本页面内容均源自PostgreSQL Weekly英文官网,翻译目的在于传递更多信息,并不意味着瀚高赞同其观点或证实其内容的真实性。如果其他媒体、网站或其他任何形式的法律实体和个人使用,必须经过著作权人合法书面授权并自负全部法律责任。不得擅自使用瀚高名义进行转载,或盗用瀚高名义发布信息。否则瀚高将保留追究法律责任的权利

                文章转载自瀚高PG实验室,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论