今天开发的业务需求的时候遇到一个问题,开发数据库链接不上,进入虚拟机通过
df -h
命令查看到是磁盘满了,通过大文件命令
find / -type f -size +200M
查看,原来是大量的.bin日志文件占用了磁盘的存储空间,然后通过命令
sudo rm -f mysql-bin.000*
删除了今天以前的.bin日志文件。(提示,一定要保留最后一个,不然后面会报错)
然后通过登录命令
mysql -uroot -p
进入MySQL却一直报错,提示ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
网上查找资料是众说纷纭,有的说是删除/var/lib/mysql目录下的mysql.sock文件,有的说是my.cnf配置文件中的socket指向不对,然后都试了,都是MySQL的服务启动失败。
然后再去看MySQL的日志,日志一般都放在/var/log的这个目录下,通过命令
tail -1000f mysqld.log
查看最近的日志,日志提示
报错信息是提示找不到/var/lib/mysql/mysql-bin.000234'这个日志文件
首先来说一下这个/var/lib/mysql/mysql-bin.000234日志文件是干嘛的
mysql-bin.000234这个文件是数据库的操作日志,我们的写库操作都会记录在这个日志中,例如UPDATE一个表,或者DELETE一些数据,即使该语句没有匹配的数据,这个命令也会存储到日志文件中,还包括每个语句执行的时间,也会记录进去的。
再来说一下这些日志文件是用来做什么的呢,
1:数据恢复
如果你的数据库出问题了,而你之前有过备份,那么可以看日志文件,找出是哪个命令导致你的数据库出问题了,想办法挽回损失。
2:主从服务器之间同步数据
主服务器上所有的操作都在记录日志中,从服务器可以根据该日志来进行,以确保两个同步。
既然日志提示说找不到这个日志文件,那么我们就去配置文件中
sudo vi my.cnf
把日志打印配置给注释了,看下服务能不能起来
:
输入启动命令
sudo service mysqld restart
好家伙,启动成功
但是一想,那个日志必须还得打着呀,万一哪一天不小心删库了还能拯救一下,emmmmmm
后来再接着把配置文件中的注释打开,再次重启,发现又起不来了,然后再次打开日志文件的存放地址/var/lib/mysql/,发现还有这么一个和日志文件相似的文件——mysql-bin.index文件,打开来一看,发现一大堆日志文件
都是自己删除了的,在网上查找资料,网上说是由于我们删除了binlog日志,在mysql-bin.index文件中会加载这些日志文件从而造成重启报错,通过查看mysql-bin.index文件,将已被删除的日志文件进行注释处理,然后再次重启就可以了。我这里是将自己已经删除的日志文件全删了,然后保存,再次重启就成功了。
收工,下班!
————————————————
版权声明:本文为CSDN博主「小刘要努力(ง •̀_•́)ง」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44684272/article/details/124794997