sqlite文件损坏后的修复方法
基于k8s,未删除旧集群的情况下,使用脚本搭建部署平台后无法登录部署平台web界面,排查发现sqlite文件损坏。
·
修复背景:
基于k8s,未删除旧集群的情况下,使用脚本搭建部署平台(linux系统:x86 centos7.4)。
脚本初始化成功,但无法登录部署平台的web界面,排查脚本搭建部署的日志,发现sqlite文件损坏。
注意:所有方式都需要停止运行iomp,执行后完成后重启iomp(通过更改iomp文件名实现停止运行操作)
第一种方式(并未完全损坏不会丢失数据)
1、备份数据库:
sqlite3 iomp.db
sqlite> PRAGMA wal_checkpoint=PASSIVE
sqlite> .output tmp.sql
sqlite> .dump
sqlite> .quit
2、导入新库 iomp_tmp:
sqlite3 iomp_tmp
sqlite> PRAGMA journal_mode = wal;
wal
sqlite> .read tmp.sql
sqlite> .quit
3、删除临时数据
rm iomp.db-wal;rm iomp.db-shm; rm iomp.db; rm tmp.sql
(若不存在wal文件及shm文件则只需要执行rm iomp.db; rm tmp.sql)
4、 更改为之前的名称
mv iomp_tmp iomp.db
5、 重启服务
第二种方式(丢失部分数据)数据库完全损坏情况使用
1、 删除损坏数据
rm iomp.db-wal;rm iomp.db-shm; rm iomp.db;
2、 进入备份数据文件夹
3、选择需要恢复的db文件,放入该路径下
4、 更改文件名称为 iomp.db即可
更多推荐
已为社区贡献1条内容
所有评论(0)