今天继续给大家介绍MySQL相关知识,本文主要内容是在MySQL日常使用过程中的一次排错经历。
一、错误现象
今天,在配置安装MySQL时,出现了MySQL无法启动的错误。我的系统是CentOS7,MySQL版本是5.7,采用的是YUM方式安装,系统之前刚刚还原镜像,无其余软件干扰和残留。
安装过程一切顺利,但是,在安装完成后,尝试启动过程中,发现启动失败,如下所示:

查看错误原因,发现如下内容:

报错原因是initialize specofied but the data directory has files in it!,即初始化失败,发现数据目录中有文件残留。
打开配置的MySQL数据目录,发现果然有一些文件残留,如下:

删除该目录下的所有文件,重新启动mysql,发现再次启动失败,且失败原因与上次相同。我再次进入该数据目录,发现之前删除的文件又出现了,我再次尝试删除,并查看该目录下的文件,发现如下场景:

可以看出,尽管我们删除了该目录下的所有文件,但是该目录下的文件又在不断形成,很显然,虽然我们的MySQL启动失败了,但是可能还存在一些进程,造成了这种现象,使用ps命令查看当前系统中存在的进程,果然,发现了两个残留的MySQL进程,如下所示:

经过细致观察,发现该mysql进程处在不断开启——关闭——开启的过程中,并且进程号一直在变动,我们直接正常关闭mysql,命令为:
systemctl stop mysqld
即可解决该进程的问题,之后,进程不再出现,并且数据目录内文件也不再增加。再次尝试重启MySQL数据库,发现竟然依旧失败,并且报错原因也是数据目录中有文件残留。
二、错误原因
根据报错信息在网上查找解决方式,发现所有的解决办法都是删除数据目录下残留的文件,但是我明明已经删除了数据目录下的所有文件,为什么还是启动失败呢?
经过细致的排查、实验,我最终把问题定位到了我的配置文件上。原来,在安装完成MySQL后,我在没有启动MySQL的情况下,直接修改配置文件,进行MySQL主从同步的相关配置,因此,向/etc/my.cnf配置文件中写入了如下内容:
server-id=2
log-bin=slave1
binlog-do-db=mha
binlog-ignore-db=mysql
log_save_updates=1
validate-password=off
在这些内容写入后,MySQL会尝试先建立这些二进制日志和中继日志,这样就导致了数据目录下存在文件,这样MySQL就启动不成功了。
三、错误解决
基于上述错误原因,我们就可以进行针对性的解决了,首先,删除数据目录下的所有文件,其次,删除/etc/my.cnf下的上述配置,最后就可以重新启动mysql了,如下所示:

在MySQL启动成功后,可以把之前的配置重新写回配置文件中,然后重新数据库,这样,我呢吧的数据库主从同步的配置也就生效了。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
本文讲述了作者在安装并配置MySQL时遇到的问题,初始化失败因数据目录残留文件。通过排查发现,误操作修改配置导致二进制日志创建,即使删除文件仍启动失败。最后,修正配置并删除残留文件,成功重启数据库并同步配置。
1067

被折叠的 条评论
为什么被折叠?



