前言
在MySQL备份以及搭建从库的过程中,我们针对比较小的库大多采用的是mysqldump,简单,方便。但是在大库进行搭建从库的时候,且数据库主机没有一个很好的存储来满足备份,这个时候就需要使用innobackupex来协助你来做一个备份,甚至可以用他来搭建MySQL的从库,非常简单哦。
一、MySQL innobackupex 备份恢复
1.1 压缩xbsteam方式打包压缩进行备份恢复
- 备份
innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --stream=xbstream --compress /data/backup/ > /data/backup/full.xbstream
- 解压缩xbstream
xbstream -x < /data/backup/full.xbstream -C /data/backup_qp/
- 解压qp
innobackupex --decompress /data/backup_qp
- 删除qp文件
find /data/backup -name "*.qp" | xargs rm
注:如果报无法找到qpress,需要先安装
qpress
1.2 采用tar gzip 方式进行备份恢复
- 备份
innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --stream=tar /data/backup/ |gzip > /data/backup/full.tar.gz
- 解压缩
tar -zxvf /data/backup/full.tar.gz -C /data/backup_targz
1.3 采用tar bzip方式进行备份恢复
- 备份
innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --stream=tar /data/backup/ |bzip2 > /data/backup/full.tar.bz2
- 解压缩
tar -jxvf /data/backup/full.tar.gz -C /data/backup_tarbz
各种备份文件大小如下,发现bz2的压缩方式最小,没压缩和压缩占用空间差别还是很大的,推荐使用压缩方式。
二、MySQL从库搭建
2.1、 xbsteam方式备份,然后手动拷贝到远程主机
ref:利用innobackupex 进行MySQL从库搭建
2.2、 xbsteam方式打包通过ssh备份到远程主机并解压
- 执行备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password='root' --stream=xbstream /tmp | ssh root@10.0.0.6 "/app/percona/percona-xtrabackup-2.4.3-Linux-x86_64/bin/xbstream -x -C /data/mysql/data"
- 如果发现innobackupex一直在等待FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS,可以将其他连接杀一把
mysql -e "show processlist" | grep -v -i -e root -e id | awk '{printf "kill "$1";"}' | mysql
- 日志如下:
161219 20:11:21 [00] Streaming xtrabackup_binlog_info 161219 20:11:21 [00] ...done 161219 20:11:21 Executing FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS... xtrabackup: The latest check point (for incremental): '6499141903477' xtrabackup: Stopping log copying thread. .161219 20:11:21 >> log scanned up to (6499141993412) 161219 20:11:23 Executing UNLOCK TABLES 161219 20:11:23 All tables unlocked 161219 20:11:23 [00] Streaming ib_buffer_pool to 161219 20:11:23 [00] ...done 161219 20:11:23 Backup created in directory '/tmp' MySQL binlog position: filename 'mysql-bin.001249', position '151576713', GTID of the last change '4d814c80-9dae-11e6-9711-005056bd55e1:1-113121904, 5f7b59b2-3e74-11e6-aa1d-005056bd55e1:27485200-29545503, db6a8610-9b3e-11e6-8730-005056bd2c74:1-221265164' 161219 20:11:23 [00] Streaming backup-my.cnf 161219 20:11:23 [00] ...done 161219 20:11:23 [00] Streaming xtrabackup_info 161219 20:11:23 [00] ...done xtrabackup: Transaction log of lsn (6498376046758) to (6499141993412) was copied. 161219 20:11:24 completed OK!
- 到备库进行redo应用
innobackupex --apply-log .
注:如果无法找到
xbsream
,需要指定绝对路径,或者配置ssh的环境变量让SSH Server使用自定义环境变量-winter.zhang-ChinaUnix博客
2.3 xbsteam方式打包压缩(qpress)通过ssh备份到远程主机并解压
- 执行备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password='root' --stream=xbstream --compress /tmp | ssh root@10.0.0.0.6 "/app/percona/percona-xtrabackup-2.4.3-Linux-x86_64/bin/xbstream -x -C /data/mysql/data"
- 解压
如果xtrabackup版本大于2.1.4,可以直接通过该方式解压innobackupex --decompress /backup/bk_compress
- 到备库进行redo应用
innobackupex --apply-log .