记一次Ubuntu Server Upgrade服务器升级导致的MySQL崩溃的问题

发布时间 2023-12-27 15:05:48作者: NoobEric

开篇介绍,大致两部分内容:

  1. ibdata1文件损坏导致MySQL崩溃无法启动
  2. 重装MySQL时忘记清空datadir和配置文件夹导致还是无法启动

===============================================================================================================

在Ubuntu升级后 (18.04 to 22.04),MySQL突然不好用了(MySQL Version 8.0.36)。

Systemctl status mysql 或者 service mysql status 始终状态都是显示 inactive,mysql -u[xxx] -p 也无法进入。 

直接去看 error.log 发现提示找不到数据文件夹 /var/lib/mysql,修改了/etc/mysql/mysql.cnf里面的datadir之后可以找到datadir了,但是报错找不到ibdata1这个文件,但是确实这个文件在文件夹当中是存在的,一想datadir一直都是使用的别的位置/mnt/mysql/ibdata1,我直接把/mnt/mysql/ibdata1拿过来覆盖发现还是不对,之后无论如何切换路径都修复不了了,始终都是这个错误,最后找不到好的办法了,被迫无奈只能重装,还好我几乎所有的表都是MYISAM的表,把所有的 .frm .MYI .MYD文件转移好,然后开始删除mysql

  删除MySQL:

  • sudo apt remove --purge mysql
  • sudo apt autoremove
  • sudo apt autoclean

  重装并启动MySQL:

  • sudo apt update
  • sudo apt install mysql
  • sudo systemctl start mysql.service

依然是inactive,然后兜兜转转半天才反应过来 /var/lib/mysql 没有清空,systemctl stop mysql.service 之后 然后直接rm -rf /var/lib/mysql 整个文件夹,然后直接再删除重装来一遍后终于可以成功启动,停掉服务,然后把之前备份好的.frm .MYI .MYD拿过来启动MySQL,终于成功了

===============================================================================================================

作为菜鸟的心得小结:

  1. 网上找到的中文教程都是互相搬运,很难找到好的方法,去stackoverflow因为英语水平有限没有看太多,简单看了几个也都无效,所以没办法只能选择重装,实在是无奈之举
  2. 我们的数据库作为一个非高并发用途,多读少写的库来说,MYISAM确实相比有很大的优势,尤其是在恢复这块真的很方便,.frm .MYI .MYD三个文件都在就能恢复
  3. 最好是有一个All Schema Slave从库,一旦出事儿找不到解决方案时真的会好很多
  4. 定时备份是一个好习惯,也应该是必须的