不知道啥情况,内网测试服务器系统挂了,修也修不好了,只能重装了,之前在服务器上有安装过mysql服务,数据保存在/data/mysql目录下,现在重装了系统,然后重装了mysql服务,想要把之前的数据都迁移过来。

巧的是,我的数据都是InnoDB存储引擎的,不能直接把数据文件拷贝到新的数据目录使用,网上说MyISAM的话,可以直接拷贝来用,不知道是不是真的。

mysql 数据恢复到某个时间节点_服务器

 InnoDB存储引擎的文件有2种类型,frm:表结构,ibd:数据

mysql 数据恢复到某个时间节点_mysql_02

 MyISAM存储引擎的文件有3种类型,frm:表结构,MYD:数据,MYI:索引

这里说一下,如何查看当前数据库使用和支持的存储引擎哈,登录数据库,执行sql语句:

SHOW ENGINES;

mysql 数据恢复到某个时间节点_mysql 数据恢复到某个时间节点_03

 可以看到,默认引擎是InnoDB,当然也之前其他的引擎,例如MyISAM。

之前的frm和ibd文件不能直接使用,那怎么办呢,通过查阅资料,了解到一个方法,那就是用【mysql-utilities】工具恢复数据,操作步骤如下:

1、下载MySQL Utilities软件,地址:https://downloads.mysql.com/archives/utilities/  选window平台即可,因为本次是说windows下的使用

2、安装到电脑指定的目录,我的目录是

mysql 数据恢复到某个时间节点_mysql 数据恢复到某个时间节点_04

 3、把服务器上的数据文件打包传到windows电脑上

mysql 数据恢复到某个时间节点_mysql_05

4、在安装【mysql-utilities】的目录按住shift按钮,点击右键,弹出选项里面选这个

mysql 数据恢复到某个时间节点_mysql_06

mysql 数据恢复到某个时间节点_mysql_07

5、在窗口里面执行代码:

mysqlfrm I:\桌面\tea\j_admin.frm > I:\桌面\tea\sql\j_admin.sql --diagnostic

路径按照自己实际的来哈,执行成功,查看生成了一个sql文件,打开可以看到j_admin表的结构,至于备注中文乱码的问题,我也不知道怎么回事呀

mysql 数据恢复到某个时间节点_数据_08

mysql 数据恢复到某个时间节点_服务器_09

mysql 数据恢复到某个时间节点_服务器_10

 6、把create table的语句放到数据库里面去执行,成功之后,再执行一下下面的语句,这个的意思是:删除刚刚通过建表语句生成的.ibd文件

alter table `j_admin` discard tablespace;

7、把从服务器上备份下来的对应表的ibd文件,拷贝到新创建的数据看存放目录,然后执行如下语句,这个意思是:来导入表空间文件

alter table `j_admin` import tablespace;

8、查看新数据库,表和数据都正常了

windows的使用就说完了,下次再说linux下的方法哈。