无名阁

美好的生活需要用心记录

记录tt-rss的数据库损坏的修复过程

2019-2-17 笑看风云 linux知识

今天上午发现自己架设的rss服务又挂了,和之前出现的故障一样,mysql数据库坏了,上次出现问题我就直接删除损坏的数据库,用备份的数据库导入进行恢复的,今天准备修复损坏的数据库。
第一步:检查是否是数据库损害导致mysql无法启动:
innochecksum  /var/lib/mysql/rss/*.ibd

检查后提示某个数据库出现错误,这里我们暂时不用管他。
第二步:强行启动mysql服务
编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件,在[mysqld]下面添加此内容
innodb_force_recovery=1

保存后重新启动mysql服务,正常情况下就可以启动mysql服务了,如果无法启动把上面的以改成2或者更大。
第三步:导出数据库
终端执行此命令导出所有数据
mysqldump -uroot -p --all-databases> back.sql

现在数据已经成功导出
第四步:重新创建新的数据库
停止mysql服务,然后删除/var/lib/mysql文件夹,把之前的innodb_force_recovery=1这行注释掉,最后重新安装mysql软件:
sudo apt install mysql-server-5.7 --reinstal

很奇怪的是网上说的其它重建数据库的命令我这里总是运行失败,只有重装mysql才可正常创建数据库。
第五步:恢复数据库
执行此命令导入之前备份的数据库
mysql -uroot -p < back.sql

等待导入完成后再次重启一次mysql就成功恢复了数据库。
现在损坏的数据库已经恢复正常了,不过我们最好再用mysqlcheck校验一下数据库:
mysqlcheck -c --all-databases -uroot -p

如果全是OK就没有问题了。
ps:如果是用来迁移RSS数据库的话单独导出数据库好一点,例如
mysqldump -uroot -p rss >rss.sql

然后导入
mysql -uroot -p rss < rss.sql

然后重新创建用户,这样不会出一些莫名奇妙的远程问题

标签: Linux mysql

et_highlighter51

发表评论: