.frm和.ibd恢复数据
昨日晚上开发告诉我不小心truncate两个表的数据,要求还原。结果在阿里云上找到了备份内容,结果是物理备份文件.frm、.ibd。心中一万个草泥马啊。。没办法,开始还原吧。
1、查看测试机Mysql配置文件位置
[root@localhost mysql]# which mysqld
/usr/sbin/mysqld
[root@localhost mysql]# /usr/sbin/mysqld --verbose --help|grep -A 'Default options'
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
可以看到Mysql首先调用的是/etc/my.cnf。查看该文件
[root@localhost mysql]# cat /etc/my.cnf
#
# The Percona Server 5.7 configuration file.
#
#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
# Please make any edits and changes to the appropriate sectional files
# included below.
#
!includedir /etc/my.cnf.d/
!includedir /etc/percona-server.conf.d/
发现加载的是/etc/my.cnf.d/和/etc/percona-server.conf.d/目录,/etc/my.cnf.d/为空,/etc/percona-server.conf.d/有两个文件。

终于找到了配置文件/etc/percona-server.conf.d/mysqld.cnf。
2、进入测试机mysql,创建一个表(表名需要与恢复的表名一致,表结构一致)
CREATE TABLE `goms_hangar` (
`hangar_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`airport_iata` char(3) NOT NULL DEFAULT 'KMG' COMMENT '所属机场',
`hangar_category` varchar(16) NOT NULL DEFAULT '' COMMENT '所属机库分类',
`hangar_num` varchar(16) NOT NULL DEFAULT '' COMMENT '机库具体编号',
`arr_fid` char(32) NOT NULL DEFAULT '' COMMENT '进港航班',
`aircraft_num` varchar(16) NOT NULL DEFAULT '' COMMENT '飞机编号',
`from_parking_num` varchar(8) NOT NULL DEFAULT '' COMMENT '原机位',
`in_time` int(11) unsigned NOT NULL COMMENT '进库时间',
`go_parking_num` varchar(8) NOT NULL DEFAULT '' COMMENT '出库机位',
`out_time` int(11) unsigned NOT NULL COMMENT '出库时间',
`uid` int(11) unsigned NOT NULL COMMENT '操作人',
`is_exists` tinyint(1) unsigned NOT NULL DEFAULT '' COMMENT '是否还存在',
`update_time` int(11) unsigned NOT NULL,
`create_time` int(11) NOT NULL COMMENT '数据创建时间',
PRIMARY KEY (`hangar_id`),
KEY `IDEX_H_CATEGORY` (`hangar_category`),
KEY `IDX_H_NUM` (`hangar_num`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3、
alter table goms_hangar discard tablespace;
4、将备份的.ibd拷贝到datadir目录下,记得更改权限
[root@localhost hello]# cp ~/source/goms_hangar.ibd .
[root@localhost hello]# chown -R mysql:mysql .
5、在Mysql数据库中输入
mysql> alter table goms_hangar import tablespace;
完成恢复。
6、查看效果
mysql> select count(*) from goms_hangar;
+----------+
| count(*) |
+----------+
| 341 |
+----------+
1 row in set (0.09 sec)
附:alter table table_name discard tablespace;与alter table goms_hangar import tablespace;
ALTER TABLE tbl_name DISCARD TABLESPACE;会将当前.ibd文件删除掉
ALTER TABLE tbl_name IMPORT TABLESPACE;会将文件内容导入到表空间中
注:如果在ALTER TABLE tbl_name IMPORT TABLESPACE;报如下错误

则需要在创建表的时候指定表的行格式。即加上ROW_FORMAT=COMPACT
.frm和.ibd恢复数据的更多相关文章
- 利用.frm、.ibd恢复数据
我们知道启用innodb_file_per_table选项后,单个表(InnoDB引擎)的数据和索引放入单独的文件中(.ibd),建表语句保存在.frm文件中本文假设192.168.85.132,33 ...
- Centos7下Mysql通过.frm和.ibd恢复数据
通过.frm和.ibd文件恢复表结构和数据 这里以hue数据库中的desktop_document2表为例 分成两步骤,先去表结构,再取数据,最好在一个用完就可以删除的数据库中进行 取表结构篇: 1. ...
- frm和ibd恢复sql文件的操作
情况:有mysql中data文件(仅仅一个数据库) 操作:frm和ibd恢复sql文件的操作 1.创建相同名字的库xxx 2.把ibdata1替换成原来的 3.把数据库xxx内内容全部替换为原来的 完 ...
- Mysql ibdata 丢失或损坏如何通过frm&ibd 恢复数据
mysql存储在磁盘中,各种天灾人祸都会导致数据丢失.大公司的时候我们常常需要做好数据冷热备,对于小公司来说要做好所有数据备份需要支出大量的成本,很多公司也是不现实的.万一还没有做好备份,数据被误删除 ...
- Mysql 通过frm&ibd 恢复数据
mysql存储在磁盘中,各种天灾人祸都会导致数据丢失.大公司的时候我们常常需要做好数据冷热备,对于小公司来说要做好所有数据备份需要支出大量的成本,很多公司也是不现实的.万一还没有做好备份,数据被误删除 ...
- 通过.frm和.ibd恢复mysql数据
.frm文件:保存了每个表的元数据,包括表结构的定义等: .ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per_table = 1)产生的存放该表的数据和索 ...
- windows mysql5.7 InnoDB 通过frm与ibd对数据进行恢复
参考:https://www.jianshu.com/p/50a2e13cd5cf 安装MySQL Utilities 下载地址:https://dev.mysql.com/downloads/uti ...
- mysql InnoDB通过.frm和.ibd恢复表和数据
ibdata1是一个用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据.撤销记录.修改buffer和双写buffer.如果file-per-table选项打开的话,该文件则不一 ...
- MySQL 5.6.26 通过frm & ibd 恢复数据过程
在A服务器上创建数据库yoonroot(yoon)> show create table yoon\G*************************** 1. row *********** ...
随机推荐
- web项目中添加logger日志
在项目中添加log4j.xml文件 log4j.xml文件 <?xml version="1.0" encoding="UTF-8" ?><! ...
- 关于输出用%lf和%f的问题
关于输入,float用%f,double用%lf 而输出时,无论是float还是double,都用%f 原文请见:http://poj.org/showmessage?message_id=12692 ...
- django中使用多个数据库,跨库查询
一.settings配置多个数据库 DATABASES = { 'default': { # 'ENGINE': 'django.db.backends.mysql', 'ENGINE': 'comm ...
- Appium-appium日志分析
查看日志是很重要的一部分,我们在编辑器上测试代码时可以直接进行调试,但持续集成时程序自动运行,如果出现bug,只能通过日志来定位代码位置.appium日志主要分为三部分. 1. 准备阶段,包含了app ...
- java String final + equal == 区别
java String 是不可改变的类型. String a = "hello2"; String d = "hello"; final String b = ...
- python中的排序函数
1.sort() list类型有一个自带的排序函数sort() list.sort(cmp=None, key=None, reverse=False) 参数说明: (1) cmp参数 cmp接受一 ...
- Struts2 - 表单的重复提交问题
用户重复提交表单在某些场合将会造成非常严重的后果.例如,在使用信用卡进行在线支付的时候,如果服务器的响应速度太慢,用户有可能会多次点击提交按钮,而这可能导致那张信用卡上的金额被消费了多次.因此,重复提 ...
- freeMarker(十五)——XML处理指南之声明的XML处理
学习笔记,选自freeMarker中文文档,译自 Email: ddekany at users.sourceforge.net 1.基本内容 因为XML处理的方法非常必要--这在前面章节中已经展示- ...
- Aravis 库编译方法
Aravis 库编译方法 March 21, 2015 9:40 PM 首先下载 aravis 库的源代码:aravis 库下载地址 这里我们使用的是 aravis_0_2_0,比较老的一个版本. 首 ...
- jqgrid--api,官网demo,编辑
api参考: http://blog.csdn.net/hurryjiang/article/details/7551477 官网demo: http://www.trirand.com/blog/j ...