mysql 热备份 xtrabackup_使用xtrabackup对MySQL innodb表热备份,增量备份

1、MySQL备份方式

对于数据库的备份重要性不必多言,为了防止数据以各种方式丢失,损坏,必须对数据库进行定期备份。

首先考虑备份的时候对数据库业务的影响

热备:读写操作均可进行的状态下进行备份

温备:可读但不可写状态下进行的备份

冷备:读写操作均不可进行的状态下所做的备份

再者如果定期进行备份,如果每次都进行全量备份,显然一部分数据是重复,浪费大量磁盘空间

完全备份

差异备份:仅备份自上一次完全备份以来变化的那部数据

增量备份:仅备份自上一次完全备份或 增量备份以来变化的那部分数据

差异备份是按完全备份那一刻的备份数据为起点,进行备份

增量备份是按上一次备份那一刻的备份数据为起点,进行备份

差异备份比增量备份消耗更大的空间,但是增量备份恢复步骤比较多,需要按顺序依次恢复

备份数据两种方法

物理备份:复制数据文件进行备份

逻辑备份:从数据库中导出数据到文件中

这两种方式比较,物理备份更加效率,对数据库运行影响低一些;逻辑备份方式可选择的备份数据粒度更精细。

2、备份利器-xtrabackup

逻辑备份使用mysqldump,用法简单,这里不再详述;

物理备份方法首选xtrabackup开源工具。此款工具由percona开发,对使用Innodb引擎的表可进行热备,增量备份。对MyISAM引擎就不支持这些特性了。

2.1 安装

本文环境:CentOS7.2 ,percona-xtrabackup-2.3.2-1

官方下载传送

安装完成,rpm -ql percona-xtrabackup

查看安装文件,主程序为xtrabackup,另外有已脚本封装工具innobackupex,主要使用它。

2.2 备份

Usage:

innobackupex [--defaults-file=] --user= --password= --host= /PATH/TO/BACKUP_DIR

示例:

数据库正常运行的情况下,我们即可备份,允许远程备份

授权最小权限备份

mysql >grant reload,lock tables,replication client on . to 'user'@'host';

#进行全库备份,工具根据mysql配置,自动寻找数据路径

innobackupex --user=root --password=cutemysql /tmp/backup

9a4bd81f365e5688f6a96240416b4fcc.png

看到OK! 标识即成功完成备份,数据存放路径也可看到

打包压缩,把数据copy到安全的地方去吧!

2.3 恢复

如果某一天数据库数据丢失了,还好我们有备份,冷静地恢复数据

Usage:

innobackupex --apply-log /PATH/TO/BACKUP_DIR #准备恢复数据

innobackupex --copy-back /PATH/TO/BACKUP_DIR #正式恢复数据

示例:

恢复的时候,要求数据库服务关闭,并且在本地执行操作,数据库数据路径为空

并且在/etc/my.cnf 中明确指定当前数据库事务日志的大小

innodb_log_file_size=5242880

首先进行备份数据准备处理

$ innobackupex --apply-log /tmp/backup/2016-11-22-11-22-20

看到OK ! 标识即为成功

恢复数据准备完成后,即可正式恢复数据

$ innobackupex --copy-back /tmp/backup/2016-11-22_11-22-20

数据库数据路径下已恢复数据,再更改文件属主之后,数据库即可正常启动!

$ chown -R mysql.mysql /var/lib/mysql

热备方式中,备份过程中数据库中产生的事务都会被xtrabackup记录,是为log sequence number(LSN)。在上面执行准备恢复数据语句后,innodb表的数据已经前滚至备份结束那一刻状态。如果要恢复启动备份结束后发生变化的数据,需要结合二进制日志进一步恢复

那么从哪一位置开始恢复二进制日志呢?在备份数据目录中,xtrabackup_binlog_info文件有记录

2.4 增量备份与恢复

2.4.1 增量备份

增量备份之前需要一个全量备份,全量备份目录为2016-11-22_15-59-24

#第一次增量备份

innobackupex --user=root --password=cutemysql --incremental ./ --incremental-basedir=./2016-11-22_15-59-24

#第二次增量备份,为了看出差异,自行提交一个事务

innobackupex --user=root --password=cutemysql --incremental ./ --incremental-basedir=./2016-11-22_17-08-42

查看两个目录中记录的lsn,可见增量是在按lsn来记录的

9a4bd81f365e5688f6a96240416b4fcc.png

2.4.2 增量恢复

增量恢复的准备阶段需要注意

按时间顺序进行备份合成

除最后一次追加增量数据时,必须带上--redo-only 选项

incremental-dir 使用绝对路径

#对全量数据准备

innobackupex --apply-log --redo-only ./2016-11-22_15-59-24

#追加第一次增量数据

innobackupex --apply-log --redo-only ./2016-11-22_15-59-24 --incremental-dir=/tmp/backup/2016-11-22_17-08-42

#追加第二次增量数据,也是最后一次,不带--redo-only

innobackupex --apply-log ./2016-11-22_15-59-24 --incremental-dir=/tmp/backup/2016-11-22_17-20-25

#恢复数据

innobackupex --copy-back fullbak

chown -R mysql.mysql /var/lib/mysql

至此完成!

2.5 备份压缩

xtrabackup 支持stream流压缩

#备份时开启stream选项压缩

innobackupex --stream=tar ./ | gzip - > backup.tar.gz

innobackupex --stream=tar ./ | bzip2 - > backup.tar.bz2

#解压时注意带上-i 选项

tar -xizf backup.tar.gz -C backup

--- EOF ---

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值