不知道啥情况,内网测试服务器系统挂了,修也修不好了,只能重装了,之前在服务器上有安装过mysql服务,数据保存在/data/mysql目录下,现在重装了系统,然后重装了mysql服务,想要把之前的数据都迁移过来。
巧的是,我的数据都是InnoDB存储引擎的,不能直接把数据文件拷贝到新的数据目录使用,网上说MyISAM的话,可以直接拷贝来用,不知道是不是真的。
InnoDB存储引擎的文件有2种类型,frm:表结构,ibd:数据
MyISAM存储引擎的文件有3种类型,frm:表结构,MYD:数据,MYI:索引
这里说一下,如何查看当前数据库使用和支持的存储引擎哈,登录数据库,执行sql语句:
SHOW ENGINES;
可以看到,默认引擎是InnoDB,当然也之前其他的引擎,例如MyISAM。
之前的frm和ibd文件不能直接使用,那怎么办呢,通过查阅资料,了解到一个方法,那就是用【mysql-utilities】工具恢复数据,操作步骤如下:
1、下载MySQL Utilities软件,地址:https://downloads.mysql.com/archives/utilities/ 选window平台即可,因为本次是说windows下的使用
2、安装到电脑指定的目录,我的目录是
3、把服务器上的数据文件打包传到windows电脑上
4、在安装【mysql-utilities】的目录按住shift按钮,点击右键,弹出选项里面选这个
5、在窗口里面执行代码:
mysqlfrm I:\桌面\tea\j_admin.frm > I:\桌面\tea\sql\j_admin.sql --diagnostic
路径按照自己实际的来哈,执行成功,查看生成了一个sql文件,打开可以看到j_admin表的结构,至于备注中文乱码的问题,我也不知道怎么回事呀
6、把create table的语句放到数据库里面去执行,成功之后,再执行一下下面的语句,这个的意思是:删除刚刚通过建表语句生成的.ibd文件
alter table `j_admin` discard tablespace;
7、把从服务器上备份下来的对应表的ibd文件,拷贝到新创建的数据看存放目录,然后执行如下语句,这个意思是:来导入表空间文件
alter table `j_admin` import tablespace;
8、查看新数据库,表和数据都正常了
windows的使用就说完了,下次再说linux下的方法哈。
原文地址:http://www.cnblogs.com/firstlady/p/16852278.html