前言:

随着innodb的普及,innobackup也成为了主流备份方式。物理备份对于新建slave,全库恢复的需求都能从容应对。

但当面临单表数据误删,或者单表误drop的情况,如果使用物理全备进行恢复呢?

下文将进行详细分析。

恢复过程中需要用到的工具,percona data recover tool : https://launchpad.net/percona-innodb-recovery-tool

情况一:误删部分数据,需要用最近一次备份覆盖

来自同一台机器的ibd恢复覆盖,且备份后table没有被recreate过。

这种情况是最简单的,备份时的ibd文件(后称老ibd)中的space id和index id 与 新ibd的space id 和index id一致。

且和ibdata文件中的space id和index id一致。因此,物理文件可以直接覆盖做恢复。

以下是详细步骤

Step -1 : 物理备份

innobackupex --defaults-file=/usr/local/MysqL3321/my.cnf --socket=/xfs/MysqL3321/MysqL.sock --user=root --password=password /xfs/backup/

Step 0 : apply log

innobackupex --apply-log --defaults-file=/usr/local/MysqL3321/my.cnf /xfs/backup/2012-10-17_11-29-20/

Step 1 : 备份现在的ibd文件(可选)

cp -a testibd.ibd testibd.bak

Step 2 : 舍弃现在ibd文件

MysqL> alter table testibd discard tablespace

Step 3 : 复制备份ibd文件

shell> cp /xfs/backup/2012-10-17_11-29-20/test/testibd.ibd /xfs/MysqL3321/test/

shell> chown MysqL:MysqL /xfs/MysqL3321/test/testibd.ibd

Step 4 : 导入ibd文件

MysqL> alter table testibd import tablespace

情况二:误删 table,表结构已经被drop了

这种情况稍复杂,不过恢复过程还是比较容易操作的。由于table被drop后的space id会留空因此备份文件的space id不会被占用。

我们只需要重建表结构,然后把ibdata中该表的space id还原,物理文件可以直接覆盖做恢复了。

Step 1 : 重建表

MysqL> create table testibd (UserID int);

Step 2 : 关闭MysqL服务(必须)

shell> service MysqLd3321 stop

Step 3: 准备ibd文件 apply log

shell> innobackupex --apply-log --defaults-file=/usr/local/MysqL3321/my.cnf /xfs/backup/2012-10-17_11-29-20/

Step 4 : 备份现在的ibd文件(可选)

cp -a testibd.ibd testibd.bak

Step 5 : 复制备份ibd文件

shell> cp -a /xfs/backup/2012-10-17_11-29-20/test/testibd.ibd /xfs/MysqL3321/test/

shell> chown MysqL:MysqL /xfs/MysqL3321/test/testibd.ibd

Step 6 : 使用percona recovery tool 修改ibdata

shell> /root/install/percona-data-recovery-tool-for-innodb-0.5/ibdconnect -o /xfs/MysqL3321/ibdata1 -f /xfs/MysqL3321/test/testibd.ibd -d test -t testibd

Initializing table definitions...

Processing table: SYS_TABLES

- total fields: 10

- nullable fields: 6

- minimum header size: 5

- minimum rec size: 21

- maximum rec size: 555

Processing table: SYS_INDEXES

- total fields: 9

- nullable fields: 5

- minimum header size: 5

- minimum rec size: 29

- maximum rec size: 165

Setting SPACE=1 in SYS_TABLE for `test`.`testibd`

Check if space id 1 is already used

Page_id: 8,next page_id: 4294967295

Record position: 65

Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 8 50 3 2 0 0 0 0 0

Db/table: infimum

Space id: 1768842857 (0x696E6669)

Next record at offset: 8D

Record position: 8D

Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 11 17 24 32 36 40 48 52 52

Db/table: SYS_FOREIGN

Space id: 0 (0x0)

Next record at offset: D5

Record position: D5

Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 16 22 29 37 41 45 53 57 57

Db/table: SYS_FOREIGN_COLS

Space id: 0 (0x0)

Next record at offset: 122

Record position: 122

Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 12 18 25 33 37 41 49 53 53

Db/table: test/testibd

Space id: 2 (0x2)

Next record at offset: 74

Space id 1 is not used in any of the records in SYS_TABLES

Page_id: 8,next page_id: 4294967295

Record position: 65

Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 8 50 3 2 0 0 0 0 0

Db/table: infimum

Space id: 1768842857 (0x696E6669)

Next record at offset: 8D

Record position: 8D

Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 11 17 24 32 36 40 48 52 52

Db/table: SYS_FOREIGN

Space id: 0 (0x0)

Next record at offset: D5

Record position: D5

Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 16 22 29 37 41 45 53 57 57

Db/table: SYS_FOREIGN_COLS

Space id: 0 (0x0)

Next record at offset: 122

Record position: 122

Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 12 18 25 33 37 41 49 53 53

Db/table: test/testibd

Space id: 2 (0x2)

Updating test/testibd (table_id 17) with id 0x01000000

SYS_TABLES is updated successfully

Initializing table definitions...

Processing table: SYS_TABLES

- total fields: 10

- nullable fields: 6

- minimum header size: 5

- minimum rec size: 21

- maximum rec size: 555

Processing table: SYS_INDEXES

- total fields: 9

- nullable fields: 5

- minimum header size: 5

- minimum rec size: 29

- maximum rec size: 165

Setting SPACE=1 in SYS_INDEXES for TABLE_ID = 17

Page_id: 11,next page_id: 4294967295

Record position: 65

Checking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 50 7 2 0 0 0 0

TABLE_ID: 3798561113125514496

SPACE: 1768842857

Next record at offset: 8C

Record position: 8C

Checking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 35 39 43 47

TABLE_ID: 11

SPACE: 0

Next record at offset: CE

Record position: CE

Checking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 36 40 44 48

TABLE_ID: 11

SPACE: 0

Next record at offset: 111

Record position: 111

Checking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 36 40 44 48

TABLE_ID: 11

SPACE: 0

Next record at offset: 154

Record position: 154

Checking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 35 39 43 47

TABLE_ID: 12

SPACE: 0

Next record at offset: 22C

Record position: 22C

Checking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 44 48 52 56

TABLE_ID: 17

SPACE: 2

Updating SPACE(0x00000001,0x01000000) for TABLE_ID: 17

sizeof(s)=4

Next record at offset: 74

SYS_INDEXES is updated successfully

Step 7 : 使用percona recovery tool 重新checksum ibdata

重复执行以下命令,直到程序没有输出为止。

shell> /root/install/percona-data-recovery-tool-for-innodb-0.5/innochecksum -f /xfs/MysqL3321/ibdata1

page 8 invalid (fails old style checksum)

page 8: old style: calculated = 0xF4AD74CB; recorded = 0xEECB309D

fixing old checksum of page 8

page 8 invalid (fails new style checksum)

page 8: new style: calculated = 0x6F0C29B4; recorded = 0x3D02308C

fixing new checksum of page 8

page 11 invalid (fails old style checksum)

page 11: old style: calculated = 0x3908087C; recorded = 0xF9E8D30C

fixing old checksum of page 11

page 11 invalid (fails new style checksum)

page 11: new style: calculated = 0xB26CFD77; recorded = 0xDB25D39D

fixing new checksum of page 11

Step 8 : 启动MysqL服务

shell> service MysqLd3321 start

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

mysql ibd文件还原_MySQL单表ibd文件恢复方法详解相关推荐

  1. mysql order by 语句_Mysql优化order by语句的方法详解

    本篇文章我们将了解ORDER BY语句的优化,在此之前,你需要对索引有基本的了解,不了解的老少爷们可以先看一下我之前写过的索引相关文章.现在让我们开始吧. MySQL中的两种排序方式 1.通过有序索引 ...

  2. mysql 账户管理_Mysql账户管理原理与实现方法详解

    本文实例讲述了Mysql账户管理原理与实现方法.分享给大家供大家参考,具体如下: 账户管理 在生产环境下操作数据库时,绝对不可以使用root账户连接,而是创建特定的账户,授予这个账户特定的操作权限,然 ...

  3. python修改文件内容_Python批量修改文本文件内容的方法详解

    这篇文章主要介绍了Python批量修改文本文件内容的方法的相关资料,需要的朋友可以参考下 Python批量替换文件内容,支持嵌套文件夹 import os path="./" fo ...

  4. 空间mysql数据还原_mysql通过表空间来恢复或者传递数据

    mysql的备份工具通常有 mysqldump ,mysqlpump(5.7后新特性)等备份工具,这里我们可以尝试使用表空间进行传递 方式是:拷贝数据文件+拷贝表空间   对应innodb引擎就是 i ...

  5. mysql 关键字模糊查询_MySQL单表多关键字模糊查询的实现方法

    在最近的一个项目需要实现在MySQL单表多关键字模糊查询,但这数个关键字并不一定都存在于某个字段.例如现有table表,其中有title,tag,description三个字段,分别记录一条资料的标题 ...

  6. mysql 存储引擎作用_MySQL常用存储引擎功能与用法详解

    MySQL存储引擎主要有两大类: 1. 事务安全表:InnoDB.BDB. 2. 非事务安全表:MyISAM.MEMORY.MERGE.EXAMPLE.NDB Cluster.ARCHIVE.CSV. ...

  7. mysql grant命令详解_MySQL授权命令grant的使用方法详解

    本文实例,运行于 MySQL 5.0 及以上版本. MySQL 赋予用户权限命令的简单格式可概括为: grant权限 on数据库对象 to用户 一.grant 普通数据用户,查询.插入.更新.删除 数 ...

  8. mongodb mysql 事务_MongoDB数据库两阶段提交实现事务的方法详解 _ 蚂蚁视界

    本文实例讲述了MongoDB数据库两阶段提交实现事务的办法.分享给年夜家供年夜家参考,详细如下: MongoDB数据库中操作单个文档老是原子性的,然而,涉及多个文档的操作,通常被作为一个"事 ...

  9. mysql异机还原_MySQL innobackupex全量备份恢复

    转自 http://blog.itpub.net/27099995/viewspace-1295099/ 先简单介绍一下这个工具:innobackupex innobackupex比xtarbacku ...

最新文章

  1. Enum.GetHashCode()的问题
  2. UVA 1151 Buy or Build MST(最小生成树)
  3. 启明云端分享| 乐鑫刚发布的 ESP32-C2与今年五月份量产的ESP32-C3有哪些不同呢?作为两颗升级替代ESP8286的芯片,我们在应用时怎么去选择呢
  4. ElasticSearch搜索引擎: 内存分析与设置
  5. [小程序]小程序框架的简单页面布局
  6. R语言入门2---R语言基础绘图
  7. 使用PowerShell配置Microsoft Teams
  8. python制作查询网页_peewee数据查询之分页返回——python学习笔记
  9. CodeIgniter中运用composer安装依赖包
  10. flink入门_Flink入门:读取Kafka实时数据流,实现WordCount
  11. 中红外传感器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  12. 新鲜出炉,Python 告诉你程序员最关注的技术竟然是……
  13. Unity(TransForm)
  14. html position属性作用,position(五种属性,以及每个属性的特点)
  15. Vue实现pdf、docx、jpg在线预览功能
  16. gd32f303 设计中断优先级_RTOS内核的设计与实现
  17. 虚拟机WIN7系统 如何设置网络
  18. android studio 导出 aar,Android Studio 导出 .aar包的操作流程
  19. 一文读懂什么是智能制造,企业又该如何实施智能制造?
  20. 计算机毕业设计springboot交通事故档案管理平台ryug8源码+系统+程序+lw文档+部署

热门文章

  1. 西安航空学院计算机专业排名,西安航空学院排名2021排行第580名
  2. sun服务器删除多余文件,Sun V440服务器下如何创建、删除及恢复硬RAID 1的方法.doc...
  3. Arcpy 添加图层到地图文档
  4. c语言数组转置什么意思,什么是数组转置
  5. 考研南开大学计算机复试题,2018年南开大学计算机考研初试、复试经验帖
  6. 《一位师姐的真情回忆》
  7. Word基础(二十七)表格之重复标题
  8. SHAREit X Databend | 跨多云 Data Mesh 大数据平台: Why, What and How
  9. bash反弹shell编码
  10. 顺序二叉树---实现数组的二叉树前序遍历输出