Mysql没法启动状况下,如何恢复数据?

本文适用于,mysql没法启动,但数据文件未丢失的状况。mysql

Mysql因意外状况,致使没法启动,数据库未作备份的状况下,如何将数据迁移至其余数据库中。sql

原数据库地址:192.168.1.100(如下简称A服务器)数据库

新数据库地址:192.168.2.100(如下简称B服务器)服务器

数据恢复流程:spa

  1. 进入A服务器,输入命令 cat /etc/my.cnf (如文件不在当前位置,可以使用find / -name my.cnf  命令查询文件位置)

找到datadir 路径命令行

  • 经过cd /www/server/data 命令,进入数据文件夹。

当前文件夹里面就是mysql中全部库的数据文件存放位置。code

下面以bus文件夹中文件,演示具体如何恢复文件。server

  • 进入B服务器,建立与A服务器bus库,用户名,密码相同的库。建立成功后,经过上面方法,进入数据文件目录,也会出现一个bus文件夹。
  • 中止B服务器mysql服务,将A服务器中bus文件夹中,除db.opt文件外的其余文件打包,发送至B服务器数据目录的bus文件夹中。解压。
  • 经过命令行,将/www/server/data/bus文件夹的全部者和组,更改为mysql

更改全部者blog

Chown -R mysql /www/server/data/busrem

更改组

Chgrp -R mysql /www/server/data/bus

  • 更改为功后,启动B服务器数据库,进入数据库后,如提示error: 1146: Table doesn't exist,还需将A服务器,数据文件夹中ibdata1 文件,拷贝至B服务器相应位置,同时更改相应的全部者和组权限。

至此,数据文件恢复数据库工做完成,

注1:如未改动数据文件夹全部者和组,启动数据库后,进入bus库点击相应表名会出现 ERROR #1017 :Can't find file: '/xxx.frm' 错误或ERROR #1036 Table '表名' is read only

注2:如数据库较多,可能会发现,部分数据库文件中有.frm .MYD .MYI这三种文件,部分数据库中只有.frm文件,这是由于MySQL存储表的时候,使用的默认数据库存储引擎是InnoDB,而使用InnoDB存储引擎的时候,是不生成.MYD 和.MYI文件的。

相关文章
相关标签/搜索