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

原官方文档没有如何恢复的方法,恢复部分是我自己加的。

-----------------------------------------------------------这是一条分割线-----------------------------------------------------------

Percona XtraBackup的功能之一“部分备份(partial backups)”,即让用户可以备份指定的表或数据库。要注意的是:你希望备份的表必须是在独立的表空间中,即该表在创建以前,你的MySQL开启了innodb_file_per_table设置。

还一点要注意的是:不要将prepared backup备份的东西拷贝回去。部分备份使用的是导入表(importing the tables),而不是全库备份的--copy-back参数。尽管有时简单的拷贝备份文件可以成功,但是这种方法很容易导致数据库的不一致,因此不推荐大家这么做。

创建部分备份(Creating Partial Backups)

部分备份共有三种方式,分别是:1. 用正则表达式表示要备份的库名及表名(参数为--include);2. 将要备份的表名或库名都写在一个文本文件中(参数为--tables-file)以及 3. 将要备份表名或库名完整的写在命令行中(参数为:--databases)。(译者注:不管你备份哪个库或是哪张表,强烈推荐把mysql库也一起备份,恢复的时候要用。)

方式一:使用--include参数

这种方式通过正则表达式来匹配数据库名和表名,你需要写完整的数据库名及表名,如果数据库有用户名密码请使用--user和--password指定相关信息。,格式如下:databasename.tablename。下面是一个例子:

  1. $ innobackupex --include='^mydatabase[.]mytable' /path/to/backup --user=backup --password=backup

上面的方式会和其他使用innobackupex命令的备份方式一样,创建一个时间戳命名的文件夹,不同的是,最终只包括那些正则表达式匹配的表。

要注意的是,这个命令最后会传给xtrabackup --tables命令执行,并且会为每个数据库(包括不需要备份的数据库)创建一个对应的文件夹。

方式二:使用--tables-file参数

这种方式是将所有要备份的完整表名都写在一个文本文件中,每行一个完整表名,然后程序读取这个文本文件进行备份。完整表名即:databasename.tablename。如果数据库有用户名密码请使用--user和--password指定相关信息。下面是一个例子:

  1. $ echo "mydatabase.mytable" > /tmp/tables.txt
  2. $ innobackupex --tables-file=/tmp/tables.txt /path/to/backup --user=backup --password=backup

上面的方式会和其他使用innobackupex命令的备份方式一样,创建一个时间戳命名的文件夹,不同的是,最终只包括那些文件中指定的表名。

这个命令最后会传给xtrabackup --tables-file命令执行,而不是--tables,因此这个命令只会创建那些需要备份的数据库文件夹。

方式三:使用--databases参数

使用这种方式,用户既可以将所有要备份的数据库名和完整表名都写在一起,以空格分隔,也可以将数据库名、完整表名写在一个文件中,每行一个,如果数据库有用户名密码请使用--user和--password指定相关信息。下面是一个例子。

  1. $ innobackupex --databases="mydatabase.mytable mysql" /path/to/backup --user=backup --password=backup

上面的方式会和其他使用innobackupex命令的备份方式一样,创建一个时间戳命名的文件夹,最终结果将包括mydatabase数据库中的mytable表,以及整个完整的mysql数据库。

准备部分备份(Preparing Partial Backups)

执行preparing partial backups,与恢复独立的表(Restoring Individual Tables)很类似:使用--apply-log和--export参数,并包含上一步生成的时间戳文件夹,如下:

  1. $ innobackupex --apply-log --export /path/to/backup/2015-11-09_16-33-58

执行命令的时候,对于那些不需要备份的表,会出现表不存在的提示。不用担心,这是正常现象。下面是可能出现的错误提示:

  1. 111225  0:54:06  InnoDB: Error: table 'mydatabase/mytablenotincludedinpartialb'
  2. InnoDB: in InnoDB data dictionary has tablespace id 6,
  3. InnoDB: but tablespace with that id or name does not exist. It will be removed from data dictionary.

同时,你还会看到系统生成对要备份的表创建导出文件的提示,信息如下:

  1. xtrabackup: export option is specified.
  2. xtrabackup: export metadata of table 'employees/departments' to file `.//departments.exp` (2 indexes)
  3. xtrabackup:     name=PRIMARY, id.low=80, page=3
  4. xtrabackup:     name=dept_name, id.low=81, page=4

注意,你能够对已经执行过准备备份(already-prepared backup)的文件执行带有--export和--apply-log参数的命令,来生成.exp文件。

最终,记得观察下面的输出,已确定准备备份工作结束。

  1. 111225 00:54:18  innobackupex: completed OK!

恢复部分被备份(Restoring Partial Backups)

方法一:恢复数据操作可以参见恢复独立的表(Restoring Individual Tables)这一小节。(这种方法本人试验没成功,推荐使用方法二)

方法二:

1. 停止MySQL:service mysql stop

2. 将/var/lib/mysql下面的所有文件全部删除:rm /var/lib/mysql/* -rf(如果前面没有备份mysql数据库, 那么在删除数据文件后要重建mysql系统表,重建命令是sudo mysql_install_db --user=mysql,但重建会导致原有用户信息全部丢失)

3. 将第二步准备过的文件拷贝到/var/lib/mysql下:cp /usr/local/backup/2015-11-09_16-33-58/* /var/lib/mysql -rf

4. 给文件赋权:chown -R mysql:mysql /var/lib/mysql/

5. 启动MySQL:service mysql start

Percona XtraBackup的部分备份与恢复/单库备份/单表备份/指定库备份/指定表备份的更多相关文章

  1. Percona XtraBackup介绍

    Percona XtraBackup开源的.免费的mysql热备软件,可以执行无阻塞备份InnoDB和XtraDB数据库. Percona XtraBackup有以下优点: ·备份快速.可靠 ·备份期 ...

  2. 如何用Percona XtraBackup进行MySQL从库的单表备份和恢复【转】

    前提 应该确定采用的是单表一个表空间,否则不支持单表的备份与恢复. 在配置文件里边的mysqld段加上 innodb_file_per_table = 1 环境说明: 主库:192.168.0.1 从 ...

  3. Percona Xtrabackup备份mysql全库及指定数据库(完整备份与增量备份)

    原文地址:http://www.tuicool.com/articles/RZRnq2 Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对In ...

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

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

  5. 通过Percona Xtrabackup实现数据的备份与恢复

    Xtrabackup简介 Percona XtraBackup是一个开源.免费的MySQL热备份软件,能够为InnoDB和XtraDB数据库执行非阻塞备份,特点如下: 1.快速.可靠的完成备份 2.备 ...

  6. 【理论篇】Percona XtraBackup 恢复单表

    小明在某次操作中,误操作导致误删除了某个表,需要立即进行数据恢复. 如果是数据量较小的实例,并且有备份,即便是全备,做一次全量恢复,然后单表导出导入,虽然麻烦一点,却也花不了多少时间:如果是数据量大的 ...

  7. Percona XtraBackup 实现全备&增量备份与恢复【转】

    percona-xtrabackup主要是有两个工具,其中一个是xtrabackup,一个是innobackupex,后者是前者封装后的一个脚本.在针对MySQL的物理备份工具中,大概是最流行也是最强 ...

  8. 小型网站MYSQL问题二:Percona Xtrabackup实现数据库备份和恢复

    1.安装软件仓库(不要问我为什么不用源码安装,好吧,其实我懒.) 1 2 3 4 5 6 7 8 wget https://www.percona.com/downloads/percona-rele ...

  9. Percona Xtrabackup 备份MySQL 实例(转)

    老规矩,开场白,刚开始用mysqldump,备份100G+的数据库,再加上服务器繁忙,备份速度像蜗牛似的,于是寻找更高效的备份方法.网上都说用xtrabackup比较适合备份大的数据库,而且备份效率也 ...

随机推荐

  1. 爬虫新手学习2-爬虫进阶(urllib和urllib2 的区别、url转码、爬虫GET提交实例、批量爬取贴吧数据、fidder软件安装、有道翻译POST实例、豆瓣ajax数据获取)

    1.urllib和urllib2区别实例 urllib和urllib2都是接受URL请求相关模块,但是提供了不同的功能,两个最显著的不同如下: urllib可以接受URL,不能创建设置headers的 ...

  2. DB主从一致性架构优化4种方法

    需求缘起 大部分互联网的业务都是"读多写少"的场景,数据库层面,读性能往往成为瓶颈.如下图:业界通常采用"一主多从,读写分离,冗余多个读库"的数据库架构来提升数 ...

  3. redis的hash类型

    1.简单描述 hash是一个string类型的field和value的映射表.添加和删除操作都是O(1)(平均)的复杂度.hash类型特别适合用于存储对象.在field的数量在限制的范围内以及valu ...

  4. Material使用02 图标MdIconModule、矢量图作为图标使用及改进

    1 MdIconModule模块的使用 1.1 在需要用到的模块中引入Material图标模块 import { BrowserModule } from '@angular/platform-bro ...

  5. mysql优化专题」90%程序员都会忽略的增删改优化(2)

    补充知识点:操作数据语句优化的认识 通常情况下,当访问某张表的时候,读取者首先必须获取该表的锁,如果有写入操作到达,那么写入者一直等待读取者完成操作(查询开始之后就不能中断,因此允许读取者完成操作). ...

  6. web前端开发 --好多视频大集合--文化的传播者-杜恩德

    提醒: 如果需要的话,尽快保存,说不定哪天分享就消失了呢. 1.妙味WEB前端开发全套视频教程 链接: http://pan.baidu.com/s/1bf1Ow2 密码: 2yyu 2.极客学院前端 ...

  7. 实现一个 myshell

    重点 1.动手前首先要想清楚为什么实现一个 shell 要用到 fork (创建子进程),为什么不能把活全由 shell 干了呢?原因其实很简单,进程是运行的程序,一个进程就只能有一个程序(这个知识点 ...

  8. Base64转换二进制文件对象 Blob/Base64转换 File 对象

    function convertBase64UrlToBlob(urlData) { var arr = dataurl.split(','),//去掉url的头,并转换为byte type = ar ...

  9. Linux下添加源的几种方法

    sudo add-apt-repository  xxxxxxx sudo gedit /etc/apt/sources.list然后把源粘贴进去,保存,最后shell输入sudo apt-get u ...

  10. JDBC 程序实例小练习

    JDBC 程序实例问题 编程实现如下功能:在数据库中建立一个表,表名为student,其结构为学号.姓名.性别.年龄.英语.JavaSE程序设计.初级日语.总分,在表中输入多条记录. 学生的总分信息, ...