|
前天,本地wampserver启动不了(黄标),目测是因为这几天进行过太多的数据库操作导致的。结果,一时脑抽,选择了重新安装wampserver。安装很顺利,启动也很正常(绿标),晴天霹雳的是数据库用不了了。哇咔咔,真是脑残的可以!!
搜索了好多资料,也做过好多尝试,终于恢复数据成功。下面记录下数据恢复过程。
网上的资料很多都是误导,其实就两步:
1. 从.frm恢复表结构;
2. 从.ibd恢复数据,这一步难点主要是解决tablespace id问题。
背景:
由于另外一台电脑上有表结构(数据不同),所以就不需要从.frm恢复表结构了。假设数据库名是data,表名是url_list。注:表名和数据库名都要和原来的一致。为了避免干扰到wampserver的mysql环境,本文选择另外建立一个mysql环境(wampserver要退出先)。
mysql版本为5.6.17,解压地址E:\Program Files\mysql-5.6.17-winx64
mysql的下载地址:http://downloads.mysql.com/archives/get/file/mysql-5.6.17-winx64.zip
1. 首先独立安装一个mysql server。
a. 添加环境变量
操作如下:
(1)右键单击我的电脑->属性->高级系统设置(高级)->环境变量
点击系统变量下的新建按钮
输入变量名:MYSQL_HOME
输入变量值:E:\Program Files\mysql-5.6.17-winx64
E:\Program Files\mysql-5.6.17-winx64即为mysql的自定义解压目录。
(2)选择系统变量中的Path
点击编辑按钮
在变量值中添加变量值:%MYSQL_HOME%\bin
注意是在原有变量值后面加上这个变量,用;隔开,不能删除原来的变量值
b.配置my.ini文件,路径为E:\Program Files\mysql-5.6.17-winx64
配置如下:
#########################################################
[client]
port=3306
default-character-set=utf8
[mysqld]
port=3306
character_set_server=utf8
basedir=E:\\Program Files\\mysql-5.6.17-winx64
#解压目录
datadir=E:\\Program Files\\mysql-5.6.17-winx64\\data
#解压目录下data目录
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
explicit_defaults_for_timestamp=true
[WinMySQLAdmin]
E:\\Program Files\\mysql-5.6.17-winx64\\bin\mysqld.exe
#########################################################
注:my.ini文件放在MySQL解压后的根目录下
c.将mysql注册为windows系统服务
(1)从命令提示符(管理员)进入到MySQL解压目录下的 bin 目录下:
(2)输入服务安装命令:
mysqld --install
安装成功后会提示服务安装成功。
注:
命令行要以管理员的权限进入,否则出现:Install/Remove of the Service Denied!
移除服务命令为:mysqld remove
d.启动MySQL服务
net start mysql
启动成功后会提示成功
(3)创建表
CREATE TABLE `url_list` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`url` VARCHAR(250) NOT NULL COLLATE 'utf8_bin',
`type` VARCHAR(20) NOT NULL COLLATE 'utf8_bin',
`done` INT(11) NULL DEFAULT '0',
PRIMARY KEY (`url`),
INDEX `id` (`id`)
)
COLLATE='utf8_bin'
ENGINE=InnoDB
AUTO_INCREMENT=226789
;
(4)丢弃新创建的表的tablespace
alter table url_list discard tablespace; show warnings;
可以看到E:\Program Files\mysql-5.6.17-winx64\data\data文件夹下只剩下url_list.frm文件了,url_list.ibd被删了
(5)恢复数据
将原始的url_list.ibd拷贝到E:\Program Files\mysql-5.6.17-winx64\data\data文件夹下
然后导入tablespace
alter table url_list import tablespace; show warnings;
不出意外,一般会报warning,可以不用理会。数据已经恢复成功!
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-23 13:21
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社