• PG维护笔记


    一.PG启动失败

    1.查看 pg_log, 磁盘空间不够

    主要是 根 目录 与 $PGDATA 目录

    2.权限异常

    PG软件安装路径 ,确保onwer 与 group 都是 postgres
    PG 数据库路径 700, 确保onwer 与 group 都是 postgres
    PG 日志路径 , 确保 onwer 与 group 都是 postgres

    3.could not locate a valid checkpoint record


    实际环境可能日志打印上下文可能不一定完全相同, 主要是查看是否有这句
    could not locate a valide checkpoint record

    • 解决方法
    su - postgres
    pg_resetwal -f $PGDATA
    
    • 1
    • 2

    4.报错Could not open file pg_xact/0E97

    cd $PGDATA/pg_xact
    dd if=/dev/zero of=0E97 bs=256k count=1
    
    
    • 1
    • 2
    • 3

    5. 权限异常问题

    • 某开发反馈, PG服务启动失败
    • 查看日志, 报错 /home/postgres/pgsql/bin/postmater : permission not permitted
    • 查看文件权限
    [root@localhost tewst]# ll /home/postgres/pgsql/bin/postmaster*
    lrwxrwxrwx 1 postgres postgres 8 Apr  7 21:32 /home/postgres/pgsql/bin/postmaster -> postgres
    
    [root@localhost tewst]# ll /home/postgres/pgsql/bin/postgres
    ---------- 1 postgres postgres 40132616 Apr  7 21:32 /home/postgres/pgsql/bin/postgres
    
    [root@localhost tewst]# lsattr /home/postgres/pgsql/bin/postgres
    ----i--------e-- /home/postgres/pgsql/bin/postgres
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 解决方法:
    chattr -i /home/postgres/pgsql/bin/postgres
    chmod 755  /home/postgres/pgsql/bin/postgres
    
    • 1
    • 2

    6.查看 pg_log下最新日志文件中的报错信息,如果看到下面的信息

    replication checkpoint has wrong magic xxx instead of xxxx

    • 解决方法:
    mkdir -p /bak
    mv -f /mnt/syncdata/pgsql/data/pg_logical/replorigin_checkpoint /bak
    pgsql_ctl start
    
    • 1
    • 2
    • 3

    如果 PG 可以启动; 启动之后, reindex 一下 imos 库

    • 连接 imos 库
      /home/postgres/pgsql/bin/psql -Upostgres -d imos

      • 执行如下两个 命令
        set maintenance_work_mem to ‘1GB’;
        reindex database imos;

      • 重启整个服务

      • 检查基本业务功能

    7.如果最终还是无法启动, 可以初始化一个空的数据库,然后重新手动恢复数据库

    二. PG 启动成功,但是运行日志中报错

    1.报错 unexpected chunk number 1 (expected 0 ) for toast value xx in pg_toast_xx

    ERROR:  unexpected chunk size 1996 (expected 1585) in final chunk 0 for toast value
    114925100in pg_toast_10920100 
    
    • 1
    • 2
    • 连接数据库
    • 执行如下SQL, 获取10920100 对应的表名称
      select 10920100 ::regclass ;
    • 整理表
    REINDEX TABLE pg_toast.pg_toast_10920100;
    REINDEX TABLE ;
    vacuum full pg_toast.pg_toast_10920100;
    vacuum full ;
    
    • 1
    • 2
    • 3
    • 4
    • 重启服务, 如果PG日志中还是报错上面错误,则可以手动备份一下数据库, 然后恢复数据库,如果手动备份数据库报错, 请使用每日备份数据库来恢复;
  • 相关阅读:
    JAVA毕业设计宠物寄存管理系统计算机源码+lw文档+系统+调试部署+数据库
    mkfs.ubifs与ubinize
    scapy工具交互式窗口
    Linux C简单服务器模型解析及完整代码
    【WPF】Dispatcher 与消息循环
    云资产管理之CF利用框架
    Maven pom.xml <packaging>pom</packaging> 引发的问题
    22、接口与抽象类、匿名类的介绍
    Ubuntu22.04.1 LTS系统上实现KVM虚拟机显卡直通(AMD/NVIDIA+板载显卡)
    【校招VIP】前端JS之深拷贝和浅拷贝
  • 原文地址:https://blog.csdn.net/yueludanfeng/article/details/126455023