有时候我们从一个完整的数据库备份中不需要整库恢复,只需要恢复其中的一个或者几个表,如果使用Percona的XtraBackup备份在恢复的时候如何只恢复部分数据呢?

转载请尊重原创、保留相关链接本文来自多宝平台 :http://www.mbodb.com

下面用例子来演示

首先为了能恢复表需要做以下操作:
1、InnoDB_FAST_SHUTDOWN = 0     --此参数MySQL在关闭的时候,需要完成所有的full purge和merge insert buffer操作.
2、InnoDB_File_Per_Table = ON   --此参数修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间.

开始使用XtraBackup备份,这里用到--export参数.
[mysql@localhost mysql]$ innobackupex-1.5.1 --defaults-file=/etc/my.cnf --export /mysql/backup/

InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
and Percona LLC and/or its affiliates 2009-2013.  All Rights Reserved.

This software is published under
the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.

Get the latest version of Percona XtraBackup, documentation, and help resources:
http://www.percona.com/xb/p

140312 16:06:45  innobackupex-1.5.1: Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_file=/etc/my.cnf;mysql_read_default_group=xtrabackup' (using password: NO).
140312 16:06:45  innobackupex-1.5.1: Connected to MySQL server
140312 16:06:45  innobackupex-1.5.1: Executing a version check against the server...
140312 16:06:51  innobackupex-1.5.1: Done.
IMPORTANT: Please check that the backup run completes successfully.
......
......
......

备份完成之后应用日志使备份多宝保持一致性
[mysql@localhost backup]$ innobackupex-1.5.1 --defaults-file=/etc/my.cnf --apply-log --export /mysql/backup/2014-03-12_16-06-52/

InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
and Percona LLC and/or its affiliates 2009-2013.  All Rights Reserved.

This software is published under
the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.

Get the latest version of Percona XtraBackup, documentation, and help resources:
http://www.percona.com/xb/p

140312 16:11:47  innobackupex-1.5.1: Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_file=/etc/my.cnf;mysql_read_default_group=xtrabackup' (using password: NO).
140312 16:11:47  innobackupex-1.5.1: Connected to MySQL server
Connected successfully
140312 16:11:47  innobackupex-1.5.1: Connection to database server closed
IMPORTANT: Please check that the apply-log run completes successfully.
           At the end of a successful apply-log run innobackupex-1.5.1
           prints "completed OK!".
......
......
......

现在我们登录MySQL删除一些t表的数据
mysql> select * from t;
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
|  6 |
|  7 |
|  8 |
|  9 |
| 10 |
| 11 |
+----+
11 rows in set (0.06 sec)

mysql> delete from t where id between 7 and 10;
Query OK, 4 rows affected (0.18 sec)

mysql> select * from t;
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
|  6 |
| 11 |
+----+
7 rows in set (0.00 sec)

这时我们Discard表
mysql> ALTER TABLE t DISCARD TABLESPACE;
Query OK, 0 rows affected (0.12 sec)

从备份目录复制文件到数据库目录
[mysql@localhost test]$ cp -p -r t.cfg t.ibd ../../../data/test/

我们进入到MySQL之后Import表
mysql> ALTER TABLE t import TABLESPACE;
Query OK, 0 rows affected (0.07 sec)

查看表t
mysql> select * from t;
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
|  6 |
|  7 |
|  8 |
|  9 |
| 10 |
| 11 |
+----+
11 rows in set (0.00 sec)

注意:
在复制备份文件的时候一定要复制后缀cfg文件,否则在Import的时候就会报Warning.例如如下的信息:
+---------+------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Warning | 1810 | InnoDB: IO Read error: (2, No such file or directory) Error opening './test/t.cfg', will attempt to import without schema verification    |
+---------+------+-------------------------------------------------------------------------------------------------------------------------------------------+
cfg文件的用处主要是在MySQL5.6执行"Flush Table xxx Export;"之后使.ibd文件保持一致性,同时这个文件会生成一个.cfg文件,在做Import的时候会对导入过程进行校验,但是在MySQL5.6.8版本之后也不是必须要有.cfg文件.如果真没有,在导入的时候有可能就会报出上面的错误,所以为了安全还是复制它.

如果表有外键在Discard的时候执行如下命令:
set FOREIGN_KEY_CHECKS=0;

在Import表之后执行以下命令恢复外键检查
set FOREIGN_KEY_CHECKS=1;

参数--export的英文解释如下:

This option is passed directly to xtrabackup's --export option. It
        enables exporting individual tables for import into another server.

如何从一个XtraBackup完整备份中恢复一个InnoDB表相关推荐

  1. 从库备份中恢复一张表

    很多时候我们需要从mysqldump备份文件中恢复出一张表,通常的做法可能是先把sql 文件恢复到一个测试数据库,然后再使用mysqldump 导出一张表,再恢复到线上,这样,如果数据量不大这方法是可 ...

  2. oracle恢复某个表的数据库,如何从rman的全备份中恢复一张表?

    最初由 orientzkd 发布 [B]. 怎么用rman复制数据库,有详细的步骤么 [/B] 1,用rman做一个数据库的全备份 2,新创建一个辅助的instance,将instance start ...

  3. mysql 备份 没有自动删除文件_删掉spfile在没有自动备份控制文件下从以前的rman备份中恢复数据库...

    1.首先要有一个包含spfile备份的rman备份: run { allocate channel c1 device type disk; allocate channel c2 device ty ...

  4. 从rman 备份中恢复表

    先熟悉下 " 从rman 备份中恢复表" 的背景以及要求: 在 RMAN 中提供了表级别恢复( RECOVER TABLE ).在 Oracle 12c 中,在发生 drop 或 ...

  5. mysql 全库 备份 恢复_从MySQL全库备份中恢复某个库和某张表

    在Mysqldump官方工具中,如何只恢复某个库呢? 全库备份 [root@HE1 ~]# mysqldump -uroot -p --single-transaction -A --master-d ...

  6. ZeroMQ接口函数之 :zmq_msg_init_data - 从一个指定的存储空间中初始化一个ZMQ消息对象的数据...

    ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq_msg_init_data zmq_msg_init_data(3) ØMQ Manual - ØMQ/3.2.5 ...

  7. 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数。

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  8. Confluence 6 从其他备份中恢复数据

    一般来说,Confluence 数据库可以从 Administration Console 或者 Confluence Setup Wizard 中进行恢复. 如果你在恢复压缩的 XML 备份的时候遇 ...

  9. 如何在Linux中恢复一个删除了的文件

    你曾经是否遇到这样的事?当你发现的时候,你已经通过删除键,或者在命令行中使用 rm 命令,错误的删除了一个不该删除的文件. 在第一种情况下,你可以到垃圾箱,搜索那个文件,然后把它复原到原始位置.但是第 ...

最新文章

  1. php如何word转html格式文件,PHP将上传word文件,转化为Html格式,(多种转换方式)
  2. 由Linux内核bug引起SSH登录缓慢问题的排查与解决
  3. 提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
  4. 软件开发人员该如何深入理解自己的代码
  5. 网工路由基础(8)路由重分布
  6. 奇妙的安全旅行之MD算法
  7. 【Java】java.util.Objects 工具类方法研究
  8. EqualLogic PS5000试用手记
  9. CodeWithMosh--mysql 学习笔记(4) -- 相关数据类型
  10. B/S VS C/S
  11. 聚合四方支付系统架构及所需配置
  12. 关键字查询地理经纬度及省份-市
  13. 08_基于IP的伪装
  14. win7音量图标点了没反应的修复方法
  15. C专家编程 读书笔记
  16. 掌机发展简史及未来趋势分析
  17. SQL Server2019重新下载失败
  18. 华为手机设置屏幕常亮
  19. 乐优商城day13(商品详情页,rabbitMQ安装)
  20. Substrate 技术及生态6月大事记 | Polkadot Decoded 圆满落幕,黑客松获胜项目为生态注入新生力量

热门文章

  1. ]获取android应用的MD5签名
  2. 弘兵金融学院 站在山顶 看不见山
  3. Ubuntu18及22安装NVIDIA驱动、CUDA、CUDNN、Pytorch
  4. 这个时代,“寒门再难处贵子”【转载】
  5. vue3.0导出excel带格式
  6. Unity Shader 之 简单 护盾Shield 效果的实现
  7. 中望3D 2021 自动缩放基准面大小
  8. 2D Pose人体关键点实时检测(Python/Android /C++ Demo)
  9. 尤大都推荐的组件库是如何开发出来的?
  10. 深度学习图像标签标注软件labelme超详细教程