xtrabackup备份
xtrabackup安装
1.这里使用yum安装,下载yum源安装
[root@test tools]# wget https://www.percona.com/redir/downloads/percona-release/redhat/0.0-1/percona-release-0.0-1.x86_64.rpm
[root@test tools]# rpm -ivh percona-release-0.0-1.x86_64.rpm
2.安装 percona xtrabackup
yum -y install percona-xtrabackup
全量备份
1.备份数据
[root@test opt]# innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 /backup/
如果备份本机的数据库可直接innobackupex -p123456 /backup/
默认使用root用户进行备份
2.使用全量备份进行数据恢复
a.先从全量备份拷贝到新的mysql服务器
scp -r /backup/2017-04-06_21-53-13/ 192.168.1.120:/testdir/
b.对数据进行准备工作,合成可用的一致数据
innobackupex --apply-log --use-memory=4G /tmp/2018-01-04_10-10-20
--apply-log 表示将目录中的日志应用到备份数据中
--use-memory=4G 恢复数据时使用的内存大小
c.停mysql服务,删除数据目录下所有文件
/etc/init.d/mysqld stop
rm -rf /opt/mysql/data/*
d.将准备好的数据还原到对应的数据目录中
innobackupex --datadir=/opt/mysql/data --copy-back /tmp/2018-01-04_10-10-20
--datadir 指定mysql的数据目录,如果配置文件中设置了数据目录,则可以省略,并且此数据库目录必须为空目录,负责会报错
--copy-back 是我们指定好的目录
e.更改恢复后的数据目录的属主
chown -R mysql.mysql /opt/mysql/data
f.开启mysql服务
/etc/init.d/mysqld start
注意: 恢复数据时候确定数据库服务已经停止了,而且对应的数据目录不存在数据
增量备份
1.执行增量备份
假设之前没有做过增量备份,这里要制定全量备份的路径
innobackupex -p123456 --incremental /backup --incremental-basedir=/backup/2018-01-04_10-10-20
--incremental:表示本次备份是一个增量备份
/backup:此次增量备份的路径
--incremental-basedir:指定全量备份的路径
如果之前做过增量备份,想再次做增量备份的话,要对之前增量备份的基础上做
innobackupex -p123456 --incremental /backup --incremental-basedir=/backup/2018-01-05_00-10-20
--incremental-basedir:这里指定之前增量备份目录文件的路径
2.增量备份的恢复步骤
a.先将增量备份拷贝到新的mysql服务器
scp -r /backup/* 192.168.1.120:/testdir/
b.先对全量备份进行准备工作
innobackupex --apply-log --redo-only --use-memory=4G /tmp/2018-01-04_10-10-20
--redo-only:只重做已经提交的但未应用的事务,不会回滚未提交的事务
c.准备增量备份的数据
innobackupex --apply-log --redo-only --use-memory=4G /backup/2018-01-04_10-10-20 --incremental-dir=/backup/2018-01-05_00-10-20
--incremental-basedir:指定增量备份的路径
/backup/2018-01-04_10-10-20:指定合并后的路径
d.假设还有增量备份的数据,再次准备增量备份的数据,最后一次增量备份恢复时不用--redo-only参数
innobackupex --apply-log --use-memory=4G /backup/2018-01-04_10-10-20 --incremental-basedir=/backup/2018-01-06_00-10-20
e.停mysql服务,删除数据目录下所有文件
/etc/init.d/mysqld stop
rm -rf /opt/mysql/data/*
f.将准备好的数据恢复到指定数据目录
innobackupex --datadir=/opt/mysql/data --copy-back /tmp/2018-01-04_10-10-20
g.更改属主,并开启mysql服务
chown -R mysql.mysql /opt/mysql/data
/etc/init.d/mysqld start
常用备份选项
并行备份
innobackupex -p123123 --parallel=8 /backup
--parallel=8:指定备份时用的线程数量
节流备份
innobackupex -p123123 --throttle=200 /backup
--throttle=200:节省IO操作,每秒钟限制IO的次数,只能用于备份阶段
压缩备份
压缩方式第一种:--compress进行压缩
--compress压缩算法使用quicklz,后缀名为".qp"
1.备份时使用压缩
innobackupex -p123123 --parallel=8 --compress --compress-threads=8 /backup
--parallel=8:备份使用的线程
--compress:压缩
--compress-threads=8:压缩线程的数量
2.恢复过程
第一种:使用qpress解压后进行恢复
因为备份使用的压缩时quicklz,所以要安装qpress
1.下载qpress二进制包
wget http://www.quicklz.com/qpress-11-linux-x64.tar
2.对压缩文件进行解压,解压到当前路径
qpress -d test.qp ./
如果压缩文件太多,使用for循环解压
第二种:直接使用--decompress参数进行解压,但是也要安装qpress
innobackupex --parallel=4 --decompress 2017-04-11_11-50-31/
/backup/2013-08-01_11-24-04/:压缩备份目录
压缩方式第二种:使用流方式进行压缩,将备份的tar格式的流重定向到其他压缩软件进行备份
使用--stream选项实现流备份,tar格式的流与xbstream格式的流两种(选其一即可)。
1.使用tar方式进行压缩备份
innobackupex -p123456 --stream=tar /backup | gzip > /backup/fullback.tar.gz
/backup/fullback.tar.gz:备份路径
2.xbstream格式流备份
innobackupex -p123123 --stream=xbstream --compress ./ > /backup/fullbak.xbstream
xbstream格式流备份使用--compress参数进行压缩
2.1.xbstream格式恢复数据
释放数据到路径/backup/zsythink/
xbstream -x -C /backup/zsythink/ < fullbak.xbstream
如果使用了--compress压缩,还要使用qpress进行解压
补充:
innobackupex的部分参数:
--no-timestamp:不在备份根目录下创建以当前时间戳为名称的新的备份目录
--no-lock:禁止表级锁。全部是InnoDB引擎表和不关系二进制日志位置下使用
--apply-log:从备份恢复。
--redo-only:该选项强制跳过rollback阶段,只进行redo。这是有必要使用的,如果备份后,要使用增量改变的。
--copy-back:从备份目录拷贝数据和索引文件到datadir目录
--stream=[tar|cpio(notimplemented)] :指定备份标准输出格式
--use-memory=MB:恢复使用内存大小
--parallel=4 :指定数据传输线程总数。默认为1
--throttle=IOS:限制IO线程数量
--compress[=LEVEL]:压缩级别在0-9.1快速压缩,9最佳压缩,0不压缩。默认为1.
--databases=LIST:指定备份数据库
--user=NAME:指定用户名
--password=WORD:指定密码
--host=HOST:指定mysql数据库的IP
--port=PORT:指定mysql的端口
--slave-info:备份复制从服务端,主从信息记录在ibbackup_slave_info文件中
--socket=SOCKET:指定mysql的sock文件