Xtrabackup是MySQL备份不可多得的工具之一。提供了全备,增备,数据库级别,表级别备份等等。还有不落盘的备份,即流备份方式。对于服务器上空间不足直接使用流式备份极大简化了备份后的压缩复制所带来的更多开销。Xtrabackup支持tar格式以及xbstream格式的流备份。
1、基于tar格式备份
a、备份到本地
innobackupex --stream=tar /tmp >/backup/bak.tar 非压缩方式
#innobackupex --stream=tar /tmp |gzip >/backup/bakz.tar.gz 压缩方式
b、备份到远程
innobackupex --stream=tar /tmp | ssh root@192.168.1.1 \ "cat - > /backup/bak.tar" 非压缩方式
innobackupex --stream=tar /tmp | ssh root@192.168.1.1\ "gzip >/backup/bak.tar.gz" 压缩方式
2、使用xbstream格式备份
a、备份到本地
innobackupex --stream=xbstream /tmp >/backup/bak.xbstream 非压缩方式
innobackupex --stream=xbstream --compress /tmp >/backup/bak_compress.xbstream 压缩方式
b、备份到远程
使用压缩备份到远程并解压
innobackupex --stream=xbstream --compress /tmp | ssh root@192.168.1.1 "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
增备数据库,如果后续还需要再次增备,则可以再次指定--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.1 "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