MySQL-数据备份-Xtrabackup

使用的是Percona出品的XtraBackup。官方推荐是唯一免费开源支持增量备份的工具,并且不会lock数据库。
官方API地址:
http://www.percona.com/doc/percona-xtrabackup/2.1/
注意事项:
下载版本选择,对于MySQL5.6需要选择2.1版本,更高或更低的版本都存在不兼容;
需要将xtrabackup/bin目录加入到path中;
最后一部恢复时,应先将数据库停止,将my.cnf 中的datadir指向到一个新的空目录,或者将原datadir指向的目录清空。即恢复的数据是存放在所指定的datadir下;
若多次增量备份则按照步骤依次合并,最终恢复的是全备份文件;
如下,全备份的目录为 full/2014-11-27_17-11-32
        第一次增量备份目录 increment/2014-11-27_17-12-57
        第二次增量备份目录 increment/2014-11-27_17-13-32
在执行合并数据时,最好将全量备份数据copy一份,再此备份数据上做合并,防止合并时出现异常,导致全量备份数据被破坏不能再被使用。


1.全量备份
Innobackupex
--defaults-file=$mysql/my.cnf
--include="db.*"
--user=proxy1
 --password=112233 
$xtrabackup/backer/full

2增量备份
innobackupex
--defaults-file=$mysql/my.cnf
--include="db.*"
--user=proxy1
--password=112233
--incremental
$xtrabackup/backer/increment --incremental-basedir=$xtrabackup/backer/full/2014-11-27_17-11-32

第二次增量备份:
innobackupex
--defaults-file=$mysql/my.cnf
--include="db.*"
--user=proxy1
--password=112233
--incremental
$xtrabackup/backer/increment --incremental-basedir=$xtrabackup/backer/increment/2014-11-27_17-12-57


3.恢复:
准备全量备数据
innobackupex
--apply-log
--redo-only
$xtrabackup/backer/full/2014-11-27_17-11-32

将第一次增量数据合并到全备数据中
innobackupex
--apply-log
--redo-only
--incremental
$xtrabackup/backer/full/2014-11-27_17-11-32 --incremental-dir=$xtrabackup/backer/increment/2014-11-27_17-12-57


将第二次增量数据合并到全备数据中
innobackupex
--apply-log
--redo-only
$xtrabackup/backer/full/2014-11-27_17-11-32 --incremental-dir=$xtrabackup/backer/increment/2014-11-27_17-13-32
恢复  (这里的my.cnf 文件中指定的datadir目录必须为空,命令才能成功执行
innobackupex
--defaults-file=$xtrabackup/my.cnf
--copy-back $xtrabackup/backer/full/2014-11-27_17-11-32

//备份为压缩数据
innobackupex
--defaults-file=$mysql/my.cnf
--include="db.*"
--user=proxy1
--password=112233 
--stream=tar ./> full.tar
对于压缩备份数据在增量备份或恢复是都需要先将其解压缩。
–stream=tar 将使用到tar4ibd进行压缩。注意:在解压时候必须加上-i参数进行解压


PS:参数分解
–defaults-file=[MY.CNF] 该选项传递给xtrabackup子进程,从指定文件读取缺省选项
–apply-log 从备份恢复。
–redo-only 该选项强制跳过rollback阶段,只进行redo。这是有必要使用的,如果备份后,要使用增量改变的。
–copy-back 从备份目录拷贝数据和索引文件到datadir目录
–remote-host=HOSTNAME 备份到远程主机上,使用ssh
–stream=[tar|cpio(not implemented)] 指定备份标准输出格式
–tmpdir=DIRECTORY 默认与tmpdir相同。使用—remote-host或—stream参数后,传输日志文件将存放在临时目录下
–use-memory=MB 选项传递给xtrabackup子进程。恢复使用内存大小
–parallel=NUMBER-OF-THREADS 选项传递给xtrabackup子进程,指定数据传输线程总数。默认为1
–throttle=IOS 选项传递给xtrabackup子进程,限制IO线程数量
–sleep=MS 选项传递给xtrabackup子进程。每拷贝1MB数据暂停多少MS时间
–compress[=LEVEL] 选项传递给xtrabackup子进程。压缩级别在0-9.1快速压缩,9最佳压缩,0不压缩。默认为1.
–include=REGEXP选项传递给xtrabackup子进程。使用正则进行匹配
–databases=LIST 指定备份数据库
–tables-file=FILE
–uncompress选项传递给xtrabackup子进程。对压缩过的InnoDB数据文件不进行压缩
–export 仅使用于prepare选项。选项传递给xtrabackup子进程。
–user=NAME
–password=WORD
–host=HOST
–port=PORT
–slave-info 备份复制从服务端,主从信息记录在ibbackup_slave_info文件中
–socket=SOCKET
–no-timestamp 不在备份根目录下创建以当前时间戳为名称的新的备份目录
–ibbackup=IBBACKUP-BINARY ibbackup二进制路径
–no-lock 禁止表级锁。全部是InnoDB引擎表和不关系二进制日志位置下使用
–scpopt=SCP-OPTIONS 指定scp参数

猜你喜欢

转载自bena.iteye.com/blog/2164928