美文网首页
一次mysql异常

一次mysql异常

作者: miwa2 | 来源:发表于2018-05-10 14:43 被阅读0次

许久不用mysql,今天打开的时候出了异常。

异常原因

        由于之前在自己的电脑上装mysql的时候,经历了一些波折,因此对mysql有害怕的心理,面对异常根本静不下心来查找原因。因此,上淘宝求助,卖家远程控制操作,msyql得以成功启动。

卖家告诉我他改动的地方:

1.

之前我的my.ini配置文件写在bin目录下,这样不可以。事实上之前这样的用法可行。此条原因排除。

2.

他说:mysql初始化不完整,可能是防火墙原因,可能是系统文件丢失,可能是mysql配置文件不完整。

我对mysql的初始化不太了解,因此他说的我也没有什么切身体会。

卖家帮我备份数据库的时候,data文件夹下除了我写的项目数据,剩下的文件都永久删除了。之后我打开mysql,虽然可以正常启动,但是打不开我的数据了。

网上查找资料之后找到原因:

以表”Table”为例:如类型是MyISAM, 数据文件则以”Table.frm””Table.MYD””Table.MYI””三个文件存储于”/data/$databasename/”目录中.如类型是InnoDB, 数据文件则存储在”$innodb_data_home_dir/″中的ibdata1文件中(一般情况),结构文件存在于table_name.frm中.

MySQL的数据库文件直接复制便可以使用,但是那是指“MyISAM”类型的表。

而使用MySQL-Front直接创建表,默认是“InnoDB”类型,这种类型的一个表在磁盘上只对应一个“*.frm”文件,不像MyISAM那样还“*.MYD,*.MYI”文件。

MyISAM类型的表直接拷到另一个数据库就可以直接使用,但是InnoDB类型的表却不行。解决方法就是:

同时拷贝innodb数据库表“*.frm”文件和innodb数据“ibdata1”文件到合适的位置。启动MySQL的Windows服务

由于MySQL这样数据混杂的形式, 往往很容易让使用者在备份时忘记了备份InnoDB, 从而导致了上述错误.

意思就是说在数据库引擎类型为InnoDB时,拷贝数据文件的同时还需要拷贝ibdata1,于是把ibdata1也拷贝过去覆盖,发现还是有点问题,于是停止mysql服务,将目录下的ib_logfile*文件全部删除掉,重新启动mysql服务,well done,可以了

高兴啊,于是稍微总结了,希望以后遇到相同的问题,能够快速解决。

1,在进行mysql数据库备份的或迁移的时候,尽量备份完成所需要的数据;

2,如果直接拷贝原有数据库文件"*.frm"、"*.MYD"、"*.MYI"等文件时候,如果原数据库引擎是InnoDB,切记还需拷贝ibdata1文件

3,备份数据库的时候,最好是用相关的工具进行备份或是导出sql文件,以免浪费时间在数据库恢复上

4,msyql版本或是备份工具的版本不同,也可能引起数据恢复有问题。

备份自己的数据库数据时,应该根据数据库文件的类型,备份相应的配置文件

现在的问题是,我的数据配置文件被卖家永久删除了。因此,我只有重新执行之前的所有建表,数据插入的sql语句,恢复数据。

总结:

在我没有使用mysql的这段时间里,电脑的一些无意识的变化导致了mysql的异常。

我对mysql的安装,初始化,异常经验不足,有抵触心理。

以上。

相关文章

网友评论

      本文标题:一次mysql异常

      本文链接:https://www.haomeiwen.com/subject/bpbzrftx.html