mysql备份还原-xtrabackup2.2.3工具innobackupex脚本用法详解

1 简介
    innobackupex工具是使用perl脚本对c程序xtrabackup的一个封装。它是oracle分发的innodb热备工具innobackup perl脚本文件的补丁版本。它通过整合xtrabackup以及其他函数,例如文件拷贝和流具有更多的功能,增加了便利性。它支持innodb/xtradb表,数据库定义,mysiam表的基于时间点的备份。
2 先决条件
    2.1 连接和权限

    当准备一些场景及数据恢复的时候,Percona XtraBackup需要能够连接到数据库服务器并在创建备份的时候能对服务器及data目录执行相关操作。为了做到这些,当它执行的时候,相关权限及许可需求必须满足。
    权限(privileges)是指系统用户允许的对数据库服务器进行的操作,他们通过数据库服务器进行设置,并且仅适用于数据库服务器的用户。
    许可(permissions)是指允许用户在操作系统上执行哪些操作,比如对相关目录进行读,写,执行操作或者启动/停止一个系统服务。它们在系统级别设置,并且仅适用于系统用户。
    当使用xtrabackup或者innobackupex的时候,涉及两个角色:调用程序的用户(系统用户)和在数据库服务器执行操作的用户(数据库用户),这是用在不同地方的两个不同用户,即便他们有相同的用户名。
    2.2 连接到数据库服务:
    2.2.1 权限及许可需求:

    一旦连接到数据库,为了能执行备份,需要如下权限
    操作系统层:
    需要有对data目录有读,写及可执行权限。
    数据库层:
    RELOAD 和 LOCK TABLES:为了在开始拷贝文件前,执行FLUSH TABLES WITH
    READ LOCK操作。
    REPLICATION CLIENT:为了获得binlog日志位置。
    CREATE TABLESPACE:为了导入表,用户表级别的恢复。
    SUPER:为了在复制环境下能够start/stop slave复制线程。
    2.2.2 创建备份用户
    最小权限的用户:
[plain]  view plain copy
  1. mysql> CREATE USER 'backuser'@'%' IDENTIFIED BY 'backpassword';  
  2. mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backuser'@'%';  
  3. mysql> FLUSH PRIVILEGES;  
    所有权限的用户:
[sql]  view plain copy
  1. mysql> CREATE USER 'backuser'@'%' IDENTIFIED BY 'backpassword';  
  2. mysql> GRANT ALL PRIVILEGES ON *.* TO 'backuser'@'%';  
  3. mysql> FLUSH PRIVILEGES;  
    2.2.3 连接到数据库服务
    通过指定用户名(--user)及密码(--password)选项连接到数据库服务:
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --user=backuser --password=backpassword /tmp/backup  
  2. [root@localhost bin]# ./innobackupex --user=backuser --password=backpassword --stream=tar /tmp/backup  > /tmp/backup_`date +%F_%T`.tar  
  3. [root@localhost bin]# ./innobackupex --user=backuser --password=backpassword --stream=tar /tmp/backup | gzip > /tmp/backup_`date +%F_%T`.tar.gz  
  4. [root@localhost bin]# ./xtrabackup --user=backuser --password=backpassword --backup --target-dir=/tmp/backup  
    注:如果不指定--user,Percona XtraBackup会默认使用调用它的用户作为数据库用户名。
    其它连接选项:
    --port:使用TCP/IP连接到数据库时使用的端口。
    --socket:连接到本地数据库时使用的socket文件。
    --host:使用TCP/IP连接到数据库时使用的主机名或IP。
3 全量备份还原
    3.1 使用innobackupex创建全备

    innobackupex使用xtrabackup并结合xbstream 与 xbcrypt工具,提供了备份整个mysql数据库实例的功能。
    创建一个全备,需要通过指定合适的选项调用innobackupex脚本连接到数据库,以及一个参数:全备存储的目录。
    实例如下:
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --user=backuser --password=backpassword /tmp/backup/  
   查看最后一行输出的确认信息

    备份文件将会存储在指定路径的以时间戳命名的文件夹下,如:/tmp/backup/2014-12-19_22-56-45/
    内部机制:
    innobackupex调用xtrabackup备份innodb表的所有数据,对于MyISAM, MERGE, CSV 以及 ARCHIVE 表,拷贝所有的表定义(.frm文件),数据,文件以及触发器和数据库定义信息。存储在指定路径的以时间戳命名的文件夹下。
    需要考虑的其它选项
    --defaults-file:通过该选项可以指定相应的mysql配置文件信息(需要放在紧跟innobackupex后第一个位置)
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --defaults-file=/etc/my-other.cnf --user=backuser --password=backpassword /tmp/backup  
    --no-timestamp:将备份文件直接存储在指定目录下,不在该目录下创建以时间戳命名的文件夹。
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --user=backuser --password=backpassword /tmp/backup --no-timestamp   
    3.2 使用innobackupex准备全备
    创建一个备份后,数据并没有准备好直接还原。需要回滚未提交的事务,重放在日志中的事务。这个挂起的操作可以保持数据的一致性,也是准备阶段的目的。一旦这个阶段完成,数据将准备被使用。
    命令如下:
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --apply-log /tmp/backup/2014-12-20_00-46-25/  
    查看最后一行输出的确认信息,成功则会输出

    这些完成后就为还原数据做好了准备。
    内部机制
    通过读取备份文件夹中的备份文件,innobackupex重放已提交的事务,回滚未提交的事务,一旦这些完成,所有存在innodb表空间的信息以及日志文件将会被重建。
    注:改prepare步骤不适用于增量备份。
    需要考虑的其它选项
    --use-memory:默认值为100M,可根据服务器内存的配置,增大该参数可加快prepare的速度,例如:
[plain]  view plain copy
  1. [root@localhost bin]#  ./innobackupex --apply-log --use-memory=2G /tmp/backup/2014-12-20_00-46-25/  
    3.3 使用innobackupex还原全量备份
    innobackupex通过选项--copy-back对备份文件还原到指定mysql数据库的data目录。例如:
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --user=backuser --password=backpassword --copy-back /tmp/backup/2014-12-20_00-46-25/  
    通过配置文件my.cnf,拷贝所有数据相关文件到mysql数据库data目录下,查看最后一行输出的确认信息,成功则会输出

    注意:需要还原数据的mysql数据库在还原数据前应该是关闭状态,且data目录为空,因为innobackupex --copy-back不会覆盖已存在的文件。
    还原成功后,启动mysql数据库之前还应该更改还原文件的属性。
[plain]  view plain copy
  1. [root@localhost bin]# chown -R mysql:mysql /usr/local/mysql/data/  
4 增量备份还原
    增量备份只备份从上次备份后变化的内容,这样做可以节省存储空间及备份持续时间。
    增量备份依赖于innodb页上的LSN(log sequence number),每次对数据库的修改都会导致LSN自增。
    一个增量备份会复制指定LSN后的所有页。
    创建后续的一系列增量备份前,需要有一个全量备份的基础备份,否则的话创建增量备份是没有意义的。 
    4.1 创建一个全备
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --user=backuser --password=backpassword /tmp/backup  
    查看备份文件夹下xtrabackup_checkpoints文件,该文件记录了备份类型,最后的LSN,及是否压缩等信息
[plain]  view plain copy
  1. [root@localhost bin]# cat /tmp/backup/2014-12-23_02-17-11/xtrabackup_checkpoints   

        全量备份详细介绍参考上面第3小节<全量备份还原>。
    4.2 创建一个增备
    创建一个增备需要使用--incremental参数,并通过--incremental-basedir指定上次备份(全备或增备)的目录,以及增备需要保存的目录(可与全备保存的目录相同或不同)。
[plain]  view plain copy
  1. [root@localhost bin]# innobackupex --incremental /tmp/backup --incremental-basedir=/tmp/backup/2014-12-23_02-17-11/  
    查看备份,可见生成了增备文件夹2014-12-23_02-40-22
[plain]  view plain copy
  1. [root@localhost bin]# ll /tmp/backup/  
  2. total 8  
  3. drwxr-xr-x. 6 root root 4096 Dec 23 02:17 2014-12-23_02-17-11  
  4. drwxr-xr-x. 6 root root 4096 Dec 23 02:40 2014-12-23_02-40-22  
    查看增备文件夹下xtrabackup-checkpoints文件。
[plain]  view plain copy
  1. [root@localhost bin]# cat /tmp/backup/2014-12-23_02-40-22/xtrabackup_checkpoints  

    4.3 再创建一个增备
在第一次设置增量备份时,--incremental-basedir是最近一次的全量备份目录,之后的增量备份就需要设置成前一次增量备份目录。
[plain]  view plain copy
  1. [root@localhost bin]# innobackupex --incremental /tmp/backup --incremental-basedir=/tmp/backup/2014-12-23_02-40-22/  
    查看备份,可见生成了增备文件夹2014-12-23_02-51-30
[plain]  view plain copy
  1. [root@localhost bin]# ll /tmp/backup/  

    查看增备文件夹下xtrabackup-checkpoints文件。
[plain]  view plain copy
  1. [root@localhost bin]# cat /tmp/backup/2014-12-23_02-51-30/xtrabackup_checkpoints   

    4.4 增量备份的另一种方法:通过LSN创建增备
    使用参数--incremental-lsn代替参数--incremental-basedir,例如
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --incremental /tmp/backup --incremental-lsn=1821776  
    这种方法非常有用,比如:上一次的增备并不一定总是可用。
    注意:这个过程仅适用于基于xtradb及innodb引擎的表。对于其它存储引擎的表,比如myisam,每次增备都会拷贝全量的数据。
    4.5 准备增量备份
    准备增量备份与准备全备有一些区别:
    a.只有已经提交的且需要重放的事务才写进备份,这个过程将会合并基础的全备文件与增备文件。
    b.未提交的事务需要回滚,以便获得能够直接使用的备份。
    如果我们在基础备份上已经执行了重放已提交的事务,回滚未提交的事务,那么我们将不能再对该基础文件添加增备;如果我们在增备上做这些操作,我们将不能使用该增备以及剩余的增备。
    比较直接的正确做法是使用--redo-only选项应用基础备份,只做已提交的事务,不回滚未提交的事务。
    语法如下:
[plain]  view plain copy
  1. innobackupex --apply-log --redo-only BASE-DIR  
    具体实例如下:
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --apply-log --redo-only /tmp/backup/2014-12-23_02-17-11  
    成功后我们会得到类似如下输出:
[plain]  view plain copy
  1. xtrabackup: starting shutdown with innodb_fast_shutdown = 1  
  2. InnoDB: Starting shutdown...  
  3. InnoDB: Shutdown completed; log sequence number 1817140  
  4. 141223 22:14:03  innobackupex: completed OK!  
    应用第一个增备到基础备份
    基本语法:
[plain]  view plain copy
  1. innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1  

    具体实例:

[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --apply-log --redo-only /tmp/backup/2014-12-23_02-17-11 --incremental-dir=/tmp/backup/2014-12-23_02-40-22  

   成功后我们会得到类似如下输出:
[plain]  view plain copy
  1. InnoDB: Shutdown completed; log sequence number 1819077  
  2. .....................................  
  3. 141223 22:30:07  innobackupex: completed OK!  
    注意:注意LSN的变化。
    重复上面步骤,顺序应用其余增备到基础备份
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --apply-log --redo-only /tmp/backup/2014-12-23_02-17-11 --incremental-dir=/tmp/backup/2014-12-23_02-51-30  
  2. [root@localhost bin]# ./innobackupex --apply-log  /tmp/backup/2014-12-23_02-17-11 --incremental-dir=/tmp/backup/2014-12-23_03-04-16  
    注:准备最后一个增量备份没有必要使用--redo-only,加上也没事,数据依然连续,数据在服务器启动阶段会执行回滚操作。
    准备增量备份的时候,需要按照时间顺序从前往后整合到全备,如果顺序搞反会导致备份不可用。如果不确定顺序,可通过查看xtrabackup_checkpoints来确定。
    一旦所有的增备都整合到了基础备份,我们就可以回滚所有未提交的事务
    语法如下:
[plain]  view plain copy
  1. innobackupex --apply-log BASE-DIR  
    实例如下:
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --apply-log  /tmp/backup/2014-12-23_02-17-11   
    prepere完以后,备份文件就准备好可以快速还原了。prepare准备过程是可选的,如果我们忽略这一步,数据库开始的时候也会执行回滚未提交的事务,类似数据库宕机发生后的重启。会延迟数据库服务的启动,如果想要在启动时吧避免延迟,最要提前在进行prepare准备操作。
    4.6 还原增量备份
    还原增量备份和还原全备一样,详细过程可参考3.3节。
    基本语法:
[plain]  view plain copy
  1. innobackupex --copy-back BASE-DIR  
    具体实例:
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --copy-back  /tmp/backup/2014-12-23_02-17-11   
    注意:还原前数据库实例为停止状态,且data目录为空。
    4.7 使用xbstream 及 tar创建流式增量备份,备份到远端服务器。
    4.7.1 前提条件:
    a.远程机器要安装xbstream
    b.远程机器的目录要存在,同时保证是空目录。远程机器目录非空,备份时报以下错误"xtrabackup: Error writing file 'UNOPENED' (Errcode: 32 - Broken pipe)"
    c.ssh要能连接:使用ssh秘钥免密码输入
    附:在本机设置免密码登录到远程机器
    生成秘钥(公钥和私钥)
[plain]  view plain copy
  1. [root@localhost bin]# ssh-keygen -t rsa -P ''  
  2. Generating public/private rsa key pair.  
  3. Enter file in which to save the key (/root/.ssh/id_rsa):   
  4. Your identification has been saved in /root/.ssh/id_rsa.  
  5. Your public key has been saved in /root/.ssh/id_rsa.pub.  
  6. The key fingerprint is:  
  7. 23:a5:a8:32:d7:b4:75:4b:2a:8d:ba:44:00:fe:8d:f0 root@localhost.localdomain  
  8. The key's randomart image is:  
  9. +--[ RSA 2048]----+  
  10. |.                |  
  11. |o                |  
  12. |.o      .        |  
  13. | .+ o. o         |  
  14. |  .Eo.+ S        |  
  15. | . + = = o       |  
  16. |o + = o .        |  
  17. | = . .           |  
  18. |  o.             |  
  19. +-----------------+  
    查看生成的秘钥。
[plain]  view plain copy
  1. [root@localhost bin]# ll /root/.ssh/  
  2. total 12  
  3. -rw-------. 1 root root 1671 Dec 24 03:32 id_rsa  
  4. -rw-r--r--. 1 root root  408 Dec 24 03:32 id_rsa.pub  
  5. -rw-r--r--. 1 root root  394 Dec 24 00:58 known_hosts  
    将公钥传输应用到远程机器
[plain]  view plain copy
  1. [root@localhost bin]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.186.23.36  
  2. root@10.186.23.36's password:   
    配置成功!
    4.7.2 创建一个基础全备:
[plain]  view plain copy
  1. [root@localhost bin]#  ./innobackupex --user=backuser --password=backpassword /tmp/backup  
    4.7.3 创建一个本地增备:
    基本语法:
[plain]  view plain copy
  1. innobackupex --incremental --incremental-lsn=LSN-number --stream=xbstream --user=backuser --password=backpassword ./ > incremental.xbstream  
    具体实例:
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --incremental --incremental-lsn=1829189 --stream=xbstream --user=backuser --password=backpassword ./ > incremental.xbstream  
    解包方法:
[plain]  view plain copy
  1. [root@localhost bin]# ./xbstream -x < incremental.xbstream  
    综合步骤(包含上面2个步骤):
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --incremental --incremental-lsn=1829189 --stream=xbstream --tmpdir=/tmp/backup/tmp --user=backuser --password=backpassword ./ | ssh root@10.186.23.36 "cat - | xbstream -x -C /tmp/backup/"  
    查看远程备份目录
[plain]  view plain copy
  1. [root@HA1 backup]# ll  

5 部分备份还原
    Percona XtraBackup支持部分备份,如只备份指定的表或库。需要备份的表必须有独立的表空间,需要设置mysql选项innodb_file_per_table为1。
    注意:部分备份的还原使用导入表的方式,而非使用copy-back。
    5.1 创建部分备份:
    有三种方式用于指定备份全部数据的哪一部分:
    --include:设置正则表达式的格式,匹配的就备份
    --table-file:通过枚举,在文件中指定要备份的表
    --database:指定数据库列表
    使用include方式
    使用正则表达式需要完全匹配包含数据库名的表名,格式如databasename.tablename。
    格式如下:
[plain]  view plain copy
  1. innobackupex --include=’^mydatabase[.]mytable’ /tmp/backup  
    实例如下:
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --include='^test.partial' /tmp/backup  
    执行完该命令后将会在指定文件夹创建一个以时间戳命名的文件夹,里面包含innobackupex创建的一些文件,以及正则表达式所指定的数据表。
    注意:该选项是通过调用xtrabackup --tables命令,匹配每个数据库的每一张表,在备份文件加下,每个数据库文件夹都会被创建,尽管有些是空的。
    使用table-file方式
    使用text文本文件的方式记录下要备份的对应的数据库的数据表,格式为databasename.tablename,每行一个。
    例如:
[plain]  view plain copy
  1. [root@localhost bin]# echo "test.table1" > /tmp/tables.txt  
  2. [root@localhost bin]# echo "test.table2" >> /tmp/tables.txt  
  3. [root@localhost bin]# ./innobackupex --tables-file=/tmp/tables.txt /tmp/backup  
    执行完该命令后将会在指定文件夹创建一个以时间戳命名的文件夹,里面包含innobackupex创建的一些文件,以及文本文件所指定的数据表。
    注意:该选项是通过调用xtrabackup --tables-file命令,不同于--tables选项,仅创建包含数据表的数据库。
    使用database方式
    备份指定的数据库的数据表,格式为--databases="databasename1[.table_name1] databasename2[.table_name2] . . .".
    例如:
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --databases="test.table2 testdb" /tmp/backup  
    执行完该命令后将会在指定文件夹创建一个以时间戳命名的文件夹,里面包含innobackupex创建的一些文件,以及test库下的table2表和整个testdb数据库。
    5.2 准备部分备份
    准备部分还原的过程同还原单个表类似:应用日志,以及使用--export日志。
    例如:
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --apply-log --export /tmp/backup/2014-12-30_00-33-57  
    我们应该会看到为每个备份表创建.exp文件的一些信息

        查看最后一行输出的确认信息,成功则会输出
[plain]  view plain copy
  1. InnoDB: Shutdown completed; log sequence number 1891862  
  2. 141230 00:47:26  innobackupex: completed OK!  
    5.3 还原部分备份
    将prepare后的备份文件夹中test文件夹拷贝到mysql数据库目录,并将文件件所有者更改为mysql用户即可
6 紧凑备份
    对innodb表进行备份的时候我们可以忽略辅助索引页,这将使备份更加紧凑以及占用更少的磁盘空间。缺点就是在对备份文件进行prepare操作时,如果需要重建辅助索引,将会消耗更长的时间。备份文件大小的不同取决于索引页。
    注:紧凑备份不支持系统共享表空间,所以备份前要确认innodb-file-per-table为ON。
    6.1 创建紧凑备份
    例如:
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --compact /tmp/backup  
    6.2 准备(Prepar)紧凑备份
    准备紧凑备份需要重建索引,所以--rebuild-indexes选项需要配合--apply-logs选项一起使用。
    例如:
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --apply-log --rebuild-indexes /tmp/backup/2014-12-30_01-34-41/  
    对于增量备份的应用可以先不重建索引,在应用最后一个差异备份的时候使用—rebuild-index来创建索引,每次都应用都重建索引太花时间。
    可使用--rebuild-threads参数并行重建辅助索引,以加快速度。每个线程在同一时刻只对一个.ibd文件所对应的索引重建。
    6.3 还原紧凑备份
    通过--copy-back参数,将备份还原至data文件夹。
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --copy-back /tmp/backup/2014-12-30_01-34-41  
    注意:需要还原数据的mysql数据库在还原数据前应该是关闭状态,且data目录为空,因为innobackupex --copy-back不会覆盖已存在的文件。
    还原成功后,启动mysql数据库之前还应该更改还原文件的属性。
[plain]  view plain copy
  1. [root@localhost bin]# chown -R mysql:mysql /usr/local/mysql/data/    
7 加密备份
    Percona XtraBackup支持加密备份,该特性在Percona XtraBackup 2.1版本引入。加密通过libgcrypt库完成。
    注:加密相关选项在my.cnf指定的话会被innobackupex忽略。
    7.1 创建加密备份
    7.1.1 相关参数介绍
    创建加密备份需要指定如下参数:
    --encryption=algorithm(算法):当前支持的算法,如AES128, AES192 和 AES256。
    --encrypt-key=加密秘钥:需要使用的适当长度的加密秘钥。不太推荐使用该选项,因为它通过机器的命令行访问是不受控制的,秘钥可以作为进程信息的一部分被看到。
    --encrypt-key-file=秘钥文件:适当长度的原始秘钥可以被读取的文件,该文件是包含正确秘钥的简单的二进制或文本文件。
    注:选项--encrypt-key与--encrypt-key-file相互排斥,二者只能选其一。
    7.1.2 生成秘钥
    加密秘钥可通过如下方式生成:
[plain]  view plain copy
  1. [root@localhost bin]# openssl enc -aes-256-cbc -pass pass:Password -P -md sha1  

    这种情况下我们可以使用iv作为秘钥。
    7.1.3 创建备份
    通过--encrypt-key
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --encrypt=AES256 --encrypt-key="B8EEACE100AADB5F3A0D94F3112AAFA5" /tmp/backup  
    通过--encrypt-key-file
[plain]  view plain copy
  1. [root@localhost bin]# echo -n "B8EEACE100AADB5F3A0D94F3112AAFA5" > /tmp/keyfile.txt   
  2. [root@localhost bin]# ./innobackupex --encrypt=AES256 --encrypt-key-file=/tmp/keyfile.txt /tmp/backup  
    7.1.4 优化加密过程
    --encrypt-threads:使用多线程进行并行加密。
    --encrypt-chunk-size:为每个加密线程指定缓存,默认为64K。
    例如:
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --encrypt=AES256 --encrypt-key="B8EEACE100AADB5F3A0D94F3112AAFA5" --encrypt-threads=16 --encrypt-chunk-size=256K /tmp/backup  
    7.1.5 解密备份
    备份通过xbcrypt二进制文件进行解密。
    Percona XtraBackup 2.1.4引入新的参数--decrypt用于解密备份文件。
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --decrypt=AES256 --encrypt-key="B8EEACE100AADB5F3A0D94F3112AAFA5" /tmp/backup/2014-12-30_03-51-42/  
    使用innobackupex --decrypt将会删除原有加密文件,将解密后的文件保存在相同的备份目录。--parallel选项可同--decrypt选项一起使用。
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --decrypt=AES256 --encrypt-key="B8EEACE100AADB5F3A0D94F3112AAFA5" --parallel=16  /tmp/backup/2014-12-30_03-51-42/  
    7.2 准备加密备份
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --apply-log /tmp/backup/2014-12-30_03-51-42/  
    7.3 还原加密备份
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --copy-back /tmp/backup/2014-12-30_03-51-42/  
8 复制环境下进行备份
    我们可以从开启主从复制的从机对数据进行备份。
    主要有如下两个参数
    --slave-info: 加入该参数会打印master主机的二进制文件名称和位置,并以change master的方式将信息写入--safe-slave-backup文件。
    --safe-slave-backup: 为了保证复制状态的一致性,该选项会停止从机的SQL线程,并等待直到Slave_open_temp_tables(通过show status查看)为0,以确保没有临时表开启,才开始进行备份。如果在--safe-slave-backup-timeout(默认300秒)所指定的时间内,临时表还没有被完全关闭,备份将不会被开启,从机的SQL线程也会重新启动。
9 加速备份进程
    9.1 使用--parallel 与 –compress-threads进行加速:

    当进行本地备份或使用xbstream进行流式备份时,使用----parallel 可同时拷贝多个文件,该参数指定了xtrabackup拷贝数据文件的线程数。
    利用该选项特性,需要开启独立表空间(innodb_file_per_table =1)或使用共享表空间的或通过innodb_data_file_path参数将ibdata文件存储为多份不同文件。因为该特性的实现在文件级别。
    示例如下:
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --parallel=16 /tmp/backup  
    流式备份时使用xbstream可以通过--compress-threads选项加速压缩进程,该选项指定了xtrabackup进行并行压缩时使用的线程数。默认线程数为1。
    本地流式压缩备份示例如下:
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --stream=xbstream --compress --compress-threads=16 ./ > backup.xbstream  
    注:对于压缩备份,重放备份前需要解压缩。
    9.2 使用--rsync进行加速:
    该参数是为了加速备份进程以及减少FLUSH TABLES WITH READ LOCK锁表的时间。指定该参数,innobackupex会调用rsync使用一个cp命令拷贝所有文件,而非每个文件调用一个cp命令,这样对于有大量数据库或表的服务器比较快。innobackupex会调用rsync两次,一次是在执行FLUSH TABLES WITH READ LOCK之前,一次在之后。
    例如:
[plain]  view plain copy
  1. [root@localhost bin]# ./innobackupex --parallel=16 --rsync /tmp/backup  
    注:该选项不能和--remote-host 或--stream一起使用。
10 抑制备份进程
    尽管innobackupex不阻塞我们对数据库的操作,一些备份操作还是会增加服务器的负担。对于IO能力较低的系统,该参数比较有用,可通过配置【--throttle】参数减少innobackupex读或写innodb数据文件的频率。
    --throttle参数直接通过xtrabackup二进制文件,仅作用于 innodb存储引擎的日志及文件。
    对操作系统检查当前IO操作可通过iostat命令进行查看。
     注:该参数仅作用于备份过程,对于--apply-log及--copy-back过程不适用。
11 恢复单个表


12 时间点恢复


13 改进的 FLUSH TABLES WITH READ LOCK操作


14 存储备份服务器上的历史文件



.
.
.
6 *************************未完待续*************************
****************************************************************************************
    原文地址: http://blog.csdn.net/jesseyoung/article/details/42046111
    博客主页: http://blog.csdn.net/jesseyoung
****************************************************************************************
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值