.frm和.ibd恢复数据

摘要:
昨晚,开发人员告诉我意外地截断了两个表的数据,并要求我恢复它们。结果,在阿里云上找到了备份内容和物理备份文件。frm和。找到了ibd。我心中有一万匹草泥马…Includedir/etc/percona服务器。conf.d/发现/etc/my。cnf中。d/和/etc/percona服务器。conf.d/目录已加载。/etc/my。cnf中。d/为空/etc/percona服务器。conf.d/有两个文件。最后,配置文件/etc/percona服务器。conf.d/mysqld。找到cnf。

昨日晚上开发告诉我不小心truncate两个表的数据,要求还原。结果在阿里云上找到了备份内容,结果是物理备份文件.frm、.ibd。心中一万个草泥马啊。。没办法,开始还原吧。

1、查看测试机Mysql配置文件位置

[root@localhost mysql]# which mysqld                     
/usr/sbin/mysqld
[root@localhost mysql]# /usr/sbin/mysqld --verbose --help|grep -A 1 '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/有两个文件。

.frm和.ibd恢复数据第1张

终于找到了配置文件/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 '1' 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;报如下错误

.frm和.ibd恢复数据第2张

则需要在创建表的时候指定表的行格式。即加上ROW_FORMAT=COMPACT

免责声明:文章转载自《.frm和.ibd恢复数据》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MPMoviePlayerController属性方法简介iOS和Android的app界面设计规范(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux下MySQL安装及配置

Linux下MySQL安装及配置 安装MySQL   Ubuntu系统中,直接使用apt install的方式去安装MySQL的服务端和客户端,MySQL的客户端必须安装,否则无法通过命令连接并操作MySQL。安装命令如下:   apt install -y mysql-server mysql-client   管理MySQL服务   启动、停止和重启服...

安装mariadb

 安装mariadb有两个源,一个是阿里云的yum源,可能版本较低,软件包很小,功能很少 二个是mariadb官方的yum源,配置方式 在/etc/yum.repos.d目录下,建立一个repo文件就是yum仓库 #创建一个mariadb.repo文件,写入以下内容 [mariadb] name = MariaDB baseurl = http://yum...

EasySharding.EFCore 如何设计使用一套代码完成的EFCore Migration 构建Saas系统多租户不同业务需求且满足租户自定义分库分表、数据迁移能力?

下面用一篇文章来完成这些事情 多租户系统的设计单纯的来说业务,一套Saas多租户的系统,面临很多业务复杂性,不同的租户存在不同的业务需求,大部分相同的表结构,那么如何使用EFCore来完成这样的设计呢?满足不同需求的数据库结构迁移 这里我准备设计一套中间件来完成大部分分库分表的工作,然后可以通过自定义的Migration 数据库文件来迁移构建不同的租户数据...

Windows下Mysql Cluster集群启动脚本与启动服务添加方法

3.2.8    集群启动脚本及启动服务注册 从上面的启动过程我们可以看出,Mysql集群启动命令较复杂,容易造成cmd窗口因误操作关闭而导致的数据库停止,在此我介绍一下如何将这些命令的操作变成windos的服务项,当windos启动时,便可以自动启动mysql集群。 首先,Mysql集群分为管理节点、数据节点、访问节点三种类型,每一种都可以注册为Win...

CDH5.16.1集群企业真正离线部署

⼀.准备⼯作 1.离线部署大纲 MySQL离线部署 CM离线部署 Parcel⽂件离线源部署 2.规划 linux版本:CentOS 7.2 节点 MySQL组件 Parcel⽂件离线源 CM服务进程 ⼤数据组件 hadoop001 MySQL Parcel Alert Publisher Event Server NN RM DN NM...

Mysql 批处理多条sql语句

package cn.itcast.demo; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; import org.junit.Test; import cn.it...