收起左侧

记一次因PostgreSQL索引损坏导致APP图标变白、无法访问的解决过程

0
回复
19
查看
[ 复制链接 ]

0

主题

1

回帖

0

牛值

江湖小虾

原先问题来自我发布的求助帖:https://club.fnnas.com/forum.php?mod=viewthread&tid=68826

简而言之,问题就是在某次断 电重启后,应用中心和通过应用中心安装的APP(百度网盘、安全中心、相册等)无法开启,提示502 Bad Gateway。

最后是确定由于不明原因导致飞牛自带的PostgreSQL内的appcenter数据库索引损坏(AI解释为:这个错误是一个PostgreSQL数据库内部系统错误,表明数据库的索引元数据已损坏。简单来说,索引2668记录的关键信息(indnatts)与它实际对应的表结构信息(relnatts)不匹配),导致trim_app_center.service反复崩溃造成的。

根据AI的提示,修复思路如下:
1、备份原PostgreSQL数据库。
2、以单用户模式进入PostgreSQL。
3、重新建立索引。
4、重启系统。

具体修复步骤如下:

0、使用SSH连接到NAS,具体步骤不再赘述。

1、备份数据库:
分别执行以下命令:

sudo systemctl stop postgresql
sudo cp -r /var/lib/postgresql/15/main /var/lib/postgresql/15/main_backup_$(date +%Y%m%d)

此时会在/var/lib/postgresql/15目录下生成一个名为main_backup_当天日期的文件夹。

2、以单用户模式进入PostgreSQL进行修复:
执行以下命令:

sudo -u postgres /usr/lib/postgresql/15/bin/postgres --single -P -D /var/lib/postgresql/15/main -c config_file=/etc/postgresql/15/main/postgresql.conf appcenter

执行后,提示符会变成 backend>
分别执行以下命令:

REINDEX SYSTEM appcenter;
REINDEX DATABASE appcenter;

若没有任何提示,直接返回到 backend>,则代表重建索引成功。
使用Ctrl+D退出,回到Linux命令行,输入以下命令启动数据库:

sudo systemctl start postgresql

输入以下命令观察appcenter数据库是否连接成功:

psql -U postgres -d appcenter

如果命令行变成 appcenter=#,则代表修复成功,Ctrl+D退出回到Linux命令行。
直接强制重启,或输入 sudo reboot重启机器。

3、验证trim_app_center.service是否正常工作:
输入:

systemctl status trim_app_center.service

返回的结果如果包含了你安装的应用,内存占用也有明显提升,例如:

● trim_app_center.service - trim app center service
     Loaded: loaded (/etc/systemd/system/trim_app_center.service; enabled; pres>
     Active: active (running) since Sun 2026-08-02 16:02:49 CST; 18min ago
   Main PID: 2793 (trim_app_center)
      Tasks: 58 (limit: 14099)
     Memory: 336.6M
        CPU: 46.844s
     CGroup: /system.slice/trim_app_center.service
             **─2793 /usr/trim/bin/trim_app_center
             **─5059 /usr/local/apps/@appcenter/trim.security/trim.security
             **─5064 /usr/local/apps/@appcenter/trim.photos/trim-photos
             **─5065 /usr/local/apps/@appcenter/baidu.netdisk/baidu.netdisk
             **─6021 /usr/local/apps/@appcenter/trim.docs/docs
             **─7185 perl /usr/local/bin/exiftool -stay_open True -@ - -source_i>

其中Memory不仅仅只占用了几MB,而是几百MB甚至几GB,下面CGroup也出现了如“trim.security”(安全中心)、“trim-photos”(相册)等你安装的APP,证明trim_app_center.service已经正常运行。

此时,通过Web端或手机APP就可以正常访问应用中心和你安装的APP了。

收藏
送赞
分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则