前提

应该确定采用的是单表一个表空间,否则不支持单表的备份与恢复。

在配置文件里边的mysqld段加上

innodb_file_per_table = 1

环境说明:
主库:192.168.0.1
从库1:192.168.0.2
从库2:192.168.0.3
备份工具 : Percona xtrabackup version 2.4.8 based on MySQL server 5.7.13 Linux (x86_64) (revision id: 97330f7)

在主库上创建chenfeng库:

mysql> create database chenfeng;
Query OK, row affected (0.08 sec) mysql> use chenfeng
Database changed mysql> create table duansf(id int (),name varchar());
Query OK, rows affected (0.14 sec) mysql> insert into duansf values(,'duansf');
Query OK, row affected (0.01 sec) mysql> insert into duansf values(,'duansf');
Query OK, row affected (0.01 sec)

只备份chenfeng库的duansf表:

[root@localhost backup]# innobackupex --defaults-file=/etc/my.cnf --user=root --password=dsf0723 -S /tmp/mysql.sock --slave-info --safe-slave-backup --include=chenfeng.duansf /data/backup

innobackup部分参数解释:
--slave-info会将master的binary log文件名和偏移量保存到xtrabackup_slave_info文件中
--slave-info,备份从库, 加上 --slave-info 备份目录下会多生成一个 xtrabackup_slave_info 文件,
 这里会保存主日志文件以及偏移, 文件内容类似于: 
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=826270;

--safe-slave-backup会暂停slave的sql线程,待备份结束后再启动

--include=REGEXP
对xtrabackup参数--tables的封装,也支持ibbackup。备份包含的库表,例如:--include="test.*",意思是要备份test库中所有的表。
如果需要全备份,则省略这个参数;如果需要备份test库下的2个表:test1和test2,则写成:--include="test.test1|test.test2"。也可以使用通配符,如:--include="test.test*"。
本例中只备份chenfeng库下的duansf表,可以这么写--include=chenfeng.duansf

由于只备份了chenfeng库的duansf表,所以我们在生成的时间目录里2017-10-15_20-33-07只看到了chenfeng文件夹.
[root@localhost 2017-10-15_20-33-07]# ll /data/backup
总用量 12316
-rw-r-----. 1 root root      424 10月 15 20:33 backup-my.cnf
-rw-r-----. 1 root root      593 10月 15 20:33 ib_buffer_pool
-rw-r-----. 1 root root 12582912 10月 15 20:33 ibdata1
drwxr-x---. 2 root root       42 10月 15 20:33 chenfeng
-rw-r-----. 1 root root       21 10月 15 20:33 xtrabackup_binlog_info
-rw-r-----. 1 root root      117 10月 15 20:33 xtrabackup_checkpoints
-rw-r-----. 1 root root      573 10月 15 20:33 xtrabackup_info
-rw-r-----. 1 root root     2560 10月 15 20:33 xtrabackup_logfile
-rw-r-----. 1 root root       76 10月 15 20:33 xtrabackup_slave_info

[root@localhost 2017-10-15_20-33-07]# cd chenfeng
[root@localhost chenfeng]# ll
总用量 108
-rw-r-----. 1 root root  8586 10月 15 20:33 duansf.frm
-rw-r-----. 1 root root 98304 10月 15 20:33 duansf.ibd

把chenfeng目录打包放到/data/backup/bak目录下:
[root@localhost 2017-10-15_20-33-07]# tar czvf chenfeng.tar.gz chenfeng

[root@localhost 2017-10-15_20-33-07]# mv chenfeng.tar.gz /data/backup/bak/

解压缩做恢复用:

恢复数据的时候,要经过prepare(recovery)和restore两个步骤,
prepare导出表步骤:

[root@localhost backup]# innobackupex --defaults-file=/etc/my.cnf --user=root --password=dsf0723 -S /tmp/mysql.sock --apply-log --export /data/backup/--15_20--
:: innobackupex: Starting the apply-log operation

在从库2上删除duansf表:

mysql> use chenfeng
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A Database changed
mysql> show tables;
+-----------------+
| Tables_in_chenfeng |
+-----------------+
| duansf |
+-----------------+
row in set (0.00 sec) mysql> show tables;
+-----------------+
| Tables_in_chenfeng |
+-----------------+
| duansf |
+-----------------+
row in set (0.00 sec) mysql> delete from duansf;
Query OK, rows affected (0.06 sec) mysql> select * from duansf;
Empty set (0.00 sec)

从xtrabackup备份里恢复出duansf表数据:
删除表:
mysql> drop table duansf;
Query OK, 0 rows affected (0.06 sec)

重建表结构:
mysql> CREATE TABLE `duansf` (
    ->   `id` int(11) DEFAULT NULL,
    ->   `name` varchar(10) DEFAULT NULL
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.05 sec)

卸载表空间:
mysql> ALTER TABLE chenfeng.duansf DISCARD TABLESPACE;
Query OK, 0 rows affected (0.01 sec)

从备份里恢复:
[root@localhost chenfeng]# cp
/data/backup/2017-10-15_20-33-07/chenfeng/{duansf.ibd,duansf.cfg,duansf.frm}
/usr/local/mysql/data/chenfeng
[root@localhost chenfeng]# ll
总用量 116
-rw-r-----. 1 mysql mysql    65 10月 15 19:00 db.opt
-rw-r--r--. 1 root  root    426 10月 15 21:13 duansf.cfg
-rw-r-----. 1 mysql mysql  8586 10月 15 21:06 duansf.frm
-rw-r-----. 1 root  root  98304 10月 15 21:13 duansf.ibd

root@localhost data]# chown -R mysql:mysql /usr/local/mysql/data/chenfeng

装载表空间:
mysql> ALTER TABLE chenfeng.duansf import TABLESPACE;
Query OK, 0 rows affected, 1 warning (0.20 sec)

查看duansf表数据:
mysql> select * from duansf;
+------+--------+
| id   | name   |
+------+--------+
|    1 | duansf |
|    2 | duansf |
+------+--------+
2 rows in set (0.00 sec)

数据已恢复.

转自

http://blog.itpub.net/15498/viewspace-2146003/

如何用Percona XtraBackup进行MySQL从库的单表备份和恢复【转】的更多相关文章

  1. 使用Percona Xtrabackup创建MySQL slave库

    一.使用Percona Xtrabackup创建MySQL slave库 MySQL Server 版本: Server version: 5.7.10-log MySQL Community Ser ...

  2. xtrabackup原理,整库,单表,部分备份恢复

    物理备份xtrabackup原理 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle).Pe ...

  3. Percona XtraBackup的部分备份与恢复/单库备份/单表备份/指定库备份/指定表备份

    本文是翻译的Percona XtraBackup 2.2版的官方文档,原文地址在此:https://www.percona.com/doc/percona-xtrabackup/2.2/innobac ...

  4. Percona XtraBackup 关于 MySQL备份还原的详细测试

    一. Percona XtraBackup 的优点. (1)无需停止数据库进行InnoDB热备: (2)增量备份MySQL: (3)流压缩传输到其它服务器: (4)在线移动表: (5)能够比较容易地创 ...

  5. 使用 Xtrabackup 部署 MySQL 从库

    数据库备份和恢复是数据库管理工作中非常重要的一个部分. 笔者常用的两个备份工具是mysqldump (逻辑备份)和 Xtrabackup (物理备份). 对于前者一般是用在凌晨的业务低峰期的定时任务中 ...

  6. (转载)用C#实现MySQL建库及建表

    最近做一个项目,为了方便用户使用,希望可以在系统初始化的时候,自动实现MySQL数据库的建库和建表操作.在网上查了很多资料都没有找到合适的,偶尔在一个国外网站上看到了相关的内容,特把实现方法整理如下: ...

  7. MySQl的库操作、表操作和数据操作

    一.库操作 1.1库的增删改查 (1)系统数据库: performance_schema:用来收集数据库服务器的性能参数,记录处理查询时发生的各种事件.锁等现象 mysql:授权库,主要存储系统用户的 ...

  8. mysql查询操作之单表查询、多表查询、子查询

    一.单表查询 单表查询的完整语法: .完整语法(语法级别关键字的排列顺序如下) select distinct 字段1,字段2,字段3,... from 库名.表名 where 约束条件 group ...

  9. mysql四-1:单表查询

    一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二.关键 ...

随机推荐

  1. PGM学习之五 贝叶斯网络

    本文的主题是“贝叶斯网络”(Bayesian Network) 贝叶斯网络是一个典型的图模型,它对感兴趣变量(variables of interest)及变量之间的关系(relationships) ...

  2. IbatisNet连接oracle 报错

    提示什么 connect oracle   1.5.0.xxxx 将你本机的oracle 客户端版本重装换成32位即可

  3. BZOJ5389 比例查询 【离线】

    题目链接 BZOJ5389 题解 太\(sb\)了,这种题都想不出来 发现复杂度允许\(n\sqrt{n}\),我们可以对于每个位置\(\sqrt{n}\)枚举约数,然后维护比例的最晚出现的位置,维护 ...

  4. 【hdu4285】 circuits

    http://acm.hdu.edu.cn/showproblem.php?pid=4285 (题目链接) 题意 求不不能嵌套的回路个数为K的路径方案数. Solution 插头dp,时限卡得太紧了, ...

  5. Bypass AV meterpreter免杀技巧

    0x01 meterpreter简介 MetasploitFramework是一个缓冲区溢出测试使用的辅助工具,也可以说是一个漏洞利用和测试平台,它集成了各种平台上常见的溢出漏洞和流行的shellco ...

  6. phpredis -- Redis Arrays用法

    Redis Arrays 来自地址:https://github.com/phpredis/phpredis/blob/master/arrays.markdown#readme 扩展原文件array ...

  7. 遇到问题---java---@value注解为null

    Spring 3支持@value注解的方式获取properties文件中的配置值,大简化了读取配置文件的代码. 在xml文件中配置properties文件 例如 cas.authn.mongo.col ...

  8. SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 E. 疯狂计数

    1.改高精度 :float/double的精度为x位,小数部分最多x+x位(乘法和加法),整数部分<1000000*1000000/2=5 * 10^11 2.分成整数部分和小数部分分别存储,貌 ...

  9. PostgreSQL 修改字段类型从int到bigint

    由于现在pg的版本,修改int到bigint仍然需要rewrite表,会导致表阻塞,无法使用.但可以考虑其他方式来做.此问题是排查现网pg使用序列的情况时遇到的. 由于int的最大值只有21亿左右,而 ...

  10. linux命令总结之ip命令

    Linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者.使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务.ifconfig是net-tools中已被废弃使用的一个命 ...