昨日晚上开发告诉我不小心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恢复数据的更多相关文章

  1. 利用.frm、.ibd恢复数据

    我们知道启用innodb_file_per_table选项后,单个表(InnoDB引擎)的数据和索引放入单独的文件中(.ibd),建表语句保存在.frm文件中本文假设192.168.85.132,33 ...

  2. Centos7下Mysql通过.frm和.ibd恢复数据

    通过.frm和.ibd文件恢复表结构和数据 这里以hue数据库中的desktop_document2表为例 分成两步骤,先去表结构,再取数据,最好在一个用完就可以删除的数据库中进行 取表结构篇: 1. ...

  3. frm和ibd恢复sql文件的操作

    情况:有mysql中data文件(仅仅一个数据库) 操作:frm和ibd恢复sql文件的操作 1.创建相同名字的库xxx 2.把ibdata1替换成原来的 3.把数据库xxx内内容全部替换为原来的 完 ...

  4. Mysql ibdata 丢失或损坏如何通过frm&ibd 恢复数据

    mysql存储在磁盘中,各种天灾人祸都会导致数据丢失.大公司的时候我们常常需要做好数据冷热备,对于小公司来说要做好所有数据备份需要支出大量的成本,很多公司也是不现实的.万一还没有做好备份,数据被误删除 ...

  5. Mysql 通过frm&ibd 恢复数据

    mysql存储在磁盘中,各种天灾人祸都会导致数据丢失.大公司的时候我们常常需要做好数据冷热备,对于小公司来说要做好所有数据备份需要支出大量的成本,很多公司也是不现实的.万一还没有做好备份,数据被误删除 ...

  6. 通过.frm和.ibd恢复mysql数据

    .frm文件:保存了每个表的元数据,包括表结构的定义等: .ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per_table = 1)产生的存放该表的数据和索 ...

  7. windows mysql5.7 InnoDB 通过frm与ibd对数据进行恢复

    参考:https://www.jianshu.com/p/50a2e13cd5cf 安装MySQL Utilities 下载地址:https://dev.mysql.com/downloads/uti ...

  8. mysql InnoDB通过.frm和.ibd恢复表和数据

    ibdata1是一个用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据.撤销记录.修改buffer和双写buffer.如果file-per-table选项打开的话,该文件则不一 ...

  9. MySQL 5.6.26 通过frm & ibd 恢复数据过程

    在A服务器上创建数据库yoonroot(yoon)> show create table yoon\G*************************** 1. row *********** ...

随机推荐

  1. Oracle数据库的三种验证机制

    关于超级管理员登陆不需要密码因为: 数据库的三种验证机制: 操作系统验证(具有sysdba和sysopera的用户) 密码文件验证(具有sysdba和sysopera的用户) 数据库验证(普通用户) ...

  2. (转)java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)

    java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源 1. java向MySQL插入当前时间的四种方式 第一种:将java.util.Date ...

  3. c/c++写的比较好的读写配置文件的函数或者类

    共用版  .h文件 //---------------------------------------------------------------------------- // 程序名称:    ...

  4. 如何实现1080P延迟低于500ms的实时超清直播传输技术

    再来当一次技术搬运工,内容来自高可用框架,学霸君工程师袁荣喜的如何实现1080P延迟低于500ms的实时超清直播传输技术. 导语:视频直播是很多技术团队及架构师关注的问题,在实时性方面,大部分直播是准 ...

  5. px-rem自适应转换(进阶@rem:40rem; )

    接力之前的文章 https://www.cnblogs.com/leshao/p/5674710.html 这篇文章讲解的是px -rem 单位换算 除100的  写法 比如实际测量PSD宽度是500 ...

  6. Oracle中spool命令实现的两种方法比较

    ---恢复内容开始--- 要输出符合要求格式的数据文件只需在select时用字符连接来规范格式.比如有如下表 SQL>; select id,username,password from myu ...

  7. windows拾遗

    Files has invalid value "<<<<<<< .mine". Illegal characters in path.在 ...

  8. Poj 1077 eight(BFS+全序列Hash解八数码问题)

    一.题意 经典的八数码问题,有人说不做此题人生不完整,哈哈.给出一个含数字1~8和字母x的3 * 3矩阵,如: 1  2  X            3 4  6            7  5  8 ...

  9. j++与++j

    (j++)+(++j)+(++j) 核心部分汇编代码 执行顺序j原始值为5,存放在栈的ebp-4中;q无初始值,存放在栈的ebp-8中先执行一次j自增赋值++j ;j=6执行第一个加法运算;值存放在C ...

  10. 奇异值分解(SVD)详解

    2012-04-10 17:38 45524人阅读 评论(18) 收藏 举报  分类: 数学之美 版权声明:本文为博主原创文章,未经博主允许不得转载. SVD分解 SVD分解是LSA的数学基础,本文是 ...