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文件
posted @ 2022-04-15 21:09  彬彬l  阅读(276)  评论(0编辑  收藏  举报