资讯专栏INFORMATION COLUMN

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

incredible / 2626人阅读

摘要:备份方式对于数据库的备份重要性不必多言,为了防止数据以各种方式丢失,损坏,必须对数据库进行定期备份。此款工具由开发,对使用引擎的表可进行热备,增量备份。

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

看到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来记录的

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 ---

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/46872.html

相关文章

  • Percona XtraBackup 增量备份

    摘要:另外,在执行过增量备份之后再一次进行增量备份时,其应该指向上一次的增量备份所在的目录。备份包含的库表,例如,意思是要备份库中所有的表。如果需要全备份,则省略这个参数如果需要备份库下的个表和则写成。也可以使用通配符,如。 使用innobackupex进行增量备份 每个InnoDB的页面都会包含一个LSN信息,每当相关的数据发生改变,相关的页面的LSN就会自动增长。这正是InnoDB表可...

    blair 评论0 收藏0
  • Linux运维:mysql数据库的备份与恢复

    摘要:运维工程师的日常工作需要对各种数据进行备份,其中数据库数据的备份当属重点之一,为了方便管理,选择哪种备份方案是很重要的。以上版本进行备份恢复及以上的版本用工具会有问题。 运维工程师的日常工作需要对各种数据进行备份,其中数据库数据的备份当属重点之一,为了方便管理,选择哪种备份方案是很重要的。 数据备份种类 全量备份 全量备份就是指对某一个时间点上的所有数据或应用进行的一个完全拷贝。实际应...

    xuexiangjys 评论0 收藏0
  • Xtrabackup 全备 增量 差异 恢复数据 自动化备份脚本

    摘要:为最终恢复数据做准备。如果是差异备份全备和差异备份合并。恢复数据自动化备份脚本基础配置脚本文件全备份脚本文件增量备份脚本文件差异备份脚本文件 安装xtrabackup wget -O /etc/yum.repos.d /epel.repo http://mirrors.aliyun.com/repo/epel-6.repo #配置epel源 yum -y install perl p...

    melody_lql 评论0 收藏0
  • Xtrabackup 全备 增量 差异 恢复数据 自动化备份脚本

    摘要:为最终恢复数据做准备。如果是差异备份全备和差异备份合并。恢复数据自动化备份脚本基础配置脚本文件全备份脚本文件增量备份脚本文件差异备份脚本文件 安装xtrabackup wget -O /etc/yum.repos.d /epel.repo http://mirrors.aliyun.com/repo/epel-6.repo #配置epel源 yum -y install perl p...

    jollywing 评论0 收藏0
  • Xtrabackup 全备 增量 差异 恢复数据 自动化备份脚本

    摘要:为最终恢复数据做准备。如果是差异备份全备和差异备份合并。恢复数据自动化备份脚本基础配置脚本文件全备份脚本文件增量备份脚本文件差异备份脚本文件 安装xtrabackup wget -O /etc/yum.repos.d /epel.repo http://mirrors.aliyun.com/repo/epel-6.repo #配置epel源 yum -y install perl p...

    yy13818512006 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<