Xtrabackup 流备份与恢复

        Xtrabackup是MySQL数据库的备份不可多得的工具之一。提供了全备,增备,数据库级别,表级别备份等等。最牛X的还有不落盘的备份,即流备份方式。对于服务器上空间不足,或是搭建主从,直接使用流式备份大大简化了备份后的压缩复制所带来的更多开销。Xtrabackup支持tar格式以及xbstream格式的流备份。本文即是对此展开的相关描述。

1、基于tar格式备份 a、备份到本地 # innobackupex --stream=tar  /tmp >/backup/bak.tar           ###非压缩方式 # innobackupex --stream=tar /tmp |gzip >/backup/bakz.tar.gz  ###压缩方式 # ls -hltr total 42M -rw-r--r-- 1 root root  39M Apr 15 17:23 bak.tar -rw-r--r-- 1 root root 3.3M Apr 15 17:24 bakz.tar.gz

###解压备份 # mkdir bak bakz # tar -xivf bak.tar -C /backup/bak # tar -xizvf bakz.tar.gz -C /backup/bakz # du -sh * 38M bak 39M bak.tar 38M bakz 3.3M   bakz.tar.gz

b、备份到远程 # innobackupex --stream=tar /tmp | ssh root@192.168.1.7 \ "cat - > /backup/bak.tar"  ###非压缩方式 # innobackupex --stream=tar /tmp | ssh root@192.168.1.7 \ "gzip >/backup/bak.tar.gz" ###压缩方式

2、使用xbstream格式备份 a、备份到本地 # innobackupex --stream=xbstream /tmp >/backup/bak.xbstream                       ###非压缩方式  # innobackupex --stream=xbstream --compress /tmp >/backup/bak_compress.xbstream   ###压缩方式 # ls -hltr total 43M -rw-r--r-- 1 root root  37M Apr 15 17:41 bak.xbstream -rw-r--r-- 1 root root 6.0M Apr 15 17:41 bak_compress.xbstream

###解压备份 # mkdir bk bk_compress # xbstream -x < bak.xbstream -C /backup/bk       ###解压xbstream格式

###解压xbstream格式,compress参数的备份  # xbstream -x < bak_compress.xbstream -C /backup/bk_compress                         ###首先解压xbstream # for bf in `find . -iname "*\.qp"`; do qpress -d $bf $(dirname $bf) && rm $bf; done ###再解压qp压缩格式 # innobackupex --decompress /backup/bk_compress     ###如果xtrabackup版本大于2.1.4,可以直接通过该方式解压

b、备份到远程 ###使用压缩备份到远程并解压 # innobackupex --stream=xbstream --compress /tmp | ssh root@192.168.1.7 "xbstream -x -C /backup/stream"

3、流备份的全备与增备 ###全备数据库,使用--extra-lsndir参数生产checkpoints文件 # innobackupex --stream=xbstream --compress --extra-lsndir=/backup/chkpoint /tmp >/backup/bak_compress.xbstream # more /backup/chkpoint/xtrabackup_checkpoints backup_type = full-backuped from_lsn = 0 to_lsn = 8408290 last_lsn = 8408290 compact = 0

### Author : Leshami ### Blog   : http://blog.csdn.net/leshami ###增备数据库,如果后续还需要再次增备,则可以再次指定--extra-lsndir,如果与上次备份指定相同的位置,该文件被覆盖 # innobackupex --compress --incremental --extra-lsndir=/backup/chkpoint --incremental-basedir=/backup/chkpoint \ >  --stream=xbstream /tmp >/backup/bak_compress_inc.xbstream

4、流备份的异机恢复 ###备份到异机 # innobackupex --stream=xbstream --extra-lsndir=/backup/chkpoint /tmp | ssh root@192.168.1.7 "xbstream -x -C /backup/stream" # innobackupex --incremental --extra-lsndir=/backup/chkpoint --incremental-basedir=/backup/chkpoint --stream=xbstream \ > /tmp | ssh root@192.168.1.7 "xbstream -x -C /backup/stream_inc"

###异机恢复,copy-back及后续步骤省略 # innobackupex --apply-log --redo-only /backup/stream # innobackupex --apply-log /backup/stream --incremental-dir=/backup/stream_inc

5、其它注意事项 a、如果使用xbstream格式异机备份时,异机未安装xbstream(封装在xtrabackup中)则出现如下错误提示。   bash: xbstream: command not found   xtrabackup: Error writing file 'UNOPENED' (Errcode: 32 - Broken pipe)   xb_stream_write_data() failed.   compress: write to the destination stream failed.   xtrabackup: Error writing file 'UNOPENED' (Errcode: 32 - Broken pipe)   xb_stream_write_data() failed.   xtrabackup: Error writing file 'UNOPENED' (Errcode: 32 - Broken pipe)   [01] xtrabackup: Error: xtrabackup_copy_datafile() failed.   [01] xtrabackup: Error: failed to copy datafile.   innobackupex: Error: The xtrabackup child process has died at /usr/bin/innobackupex line 2681.

b、异机备份时需要建立等效性,如下示例   # ssh-keygen   Generating public/private rsa key pair.   Enter file in which to save the key (/root/.ssh/id_rsa):   Enter passphrase (empty for no passphrase):   Enter same passphrase again:   Your identification has been saved in /root/.ssh/id_rsa.   Your public key has been saved in /root/.ssh/id_rsa.pub.   The key fingerprint is:   29:45:ee:8d:b3:55:f1:5f:2f:da:2a:88:0c:0d:37:9f root@vdbsrv1   ###copy 公钥到远程主机   # ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.7   21   The authenticity of host '192.168.1.7 (192.168.1.7)' can't be established.   RSA key fingerprint is 1d:7c:40:98:ef:de:6f:b8:8c:b2:87:72:0e:79:db:0a.   Are you sure you want to continue connecting (yes/no)? yes   Warning: Permanently added '192.168.1.7' (RSA) to the list of known hosts.   root@192.168.1.7's password:   Now try logging into the machine, with "ssh 'root@192.168.1.7'", and check in:     .ssh/authorized_keys   to make sure we haven't added extra keys that you weren't expecting.   ###验证等效性是否成功   # ssh 192.168.1.7 date;   Wed Apr 15 17:55:31 CST 2015

c、使用tar格式远程增量备份时收到如下提示,即只支持xbstream   xtrabackup: error: streaming incremental backups are incompatible with the   'tar' streaming format. Use --stream=xbstream instead.

d、用流备份,默认的临时目录都是系统的/tmp目录,需要保证该目录有足够的空间,或指定--tmpdir选项

e、流备份日志输出   innobackupex --stream=xbstream /tmp 2>>"$backupLog" | gzip > "$backup_file" 2>>"$backupLog"

6、更多参考

  • 基于innobakcupex跨实例不完全恢复步骤
  • 基于Innobackupex的MySQL备份脚本
  • 基于Innobackupex的不完全恢复
  • 基于Innobackupex的完全恢复
  • 基于Innobackupex的增备及恢复
  • 基于Innobackupex的全备恢复
  • Innobackupex 全备数据库

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏文渊之博

SQLServer 延迟事务持久性

SQL Server 2014新功能 -- 延迟事务持久性(Delayed Transaction Durability) SQL Server事务提交默认...

2388
来自专栏Aloys的开发之路

如何发布Maven依赖到中央仓库

平时我们都是从Maven中央仓库下载依赖,如果我们想发布我们自己写的Maven依赖到中央仓库供别人下载使用应该怎么办?这里以上传自己写的simian-maven...

2623
来自专栏解Bug之路

Druid连接管理分析

        Druid有且只有一个线程来创建连接,为了防止不必要的线程时间片的消耗,其采用了await()/notify()的方式,当其创建了足够的多的连接...

1572
来自专栏小白安全

关于YUNUCMSv1.0.6 任意文件删除与配置文件写shell-freebuf漏斗社区发布

任意文件删除漏洞 0×00 相关环境 源码信息:YUNUCMSv1.0.6 问题文件: \YUNUCMSv1.0.6\sta...

4259
来自专栏猿人谷

在Mac OS X上配置Apache2

最近一段时间在开发面向移动设备的网页,而且是静态网页。所以很需要一个HTTP服务器,简单明了的就可以。在Windows上,HFS(http://www.reje...

3045
来自专栏我的博客

TP入门第五天

1、数据库连接 这里说下为和用到配置都是返回数组,$arr=include(‘config.php’);然后你打印出来看看! 配置文件(有两种连接方法) 第一种...

3154
来自专栏小狼的世界

在Centos 5.2下编译安装LAMP

首先使用Virtualbox安装一台CentOS 5.2的虚拟机,网络连接采用 Host-only Adapter,这样主客机之间可以互相访问,但是客机不能够上...

1022
来自专栏北京马哥教育

使用Jenkins构建持续集成平台

前言 持续集成这个概念已经成为软件开发的主流,可以更频繁的进行测试,尽早发现问题并提示。自动化部署就更不用说了,可以加快部署速度,并可以有效减少人为操作的失误。...

4055
来自专栏假装我会写代码

又一篇 Deployer 的使用攻略

2096
来自专栏电光石火

jenkins

2192

扫码关注云+社区

领取腾讯云代金券