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