文档章节

使用 Xtrabackup实现MySQL定时增量备份

swingcoder
 swingcoder
发布于 2015/11/02 15:11
字数 1397
阅读 349
收藏 3
点赞 0
评论 0

一、Xtrabackup简介

Percona XtraBackup是一款免费、开源、完全在线的Percona Server、MySQL或MariaDB备份解决方案。XtraBackup可以实现对事务系统进行无阻塞、强压缩、高安全的备份,而不影响在线运行的业务。其自带的工具innobackupex可以实现对MyISAM、InnoDB类型的表进行备份。

还有以下特点:

  • 备份快速和可靠

  • 备份时不中段在线交易事务

  • 通过压缩节省存储空间和带宽(通过工具qpress)

  • 自动对备份进行校验

  • 恢复还原快速

更多介绍,请参数官方网站

二、安装

系统环境 Linux CentOS 6.5 x86_64

数据库 MySQL 5.1.73

yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
yum install percona-xtrabackup-20
yum install qpress

我安装的是2.x的版本,没有安装最新版本,最新版本对某个MySQL 5.1系列不支持了。根据你自己的MySQL版本选择安装。

检查是否安装成功

xtrabackup -v
innobackupex -v
innobackupex-1.5.1 -v

查看安装的路径

#后面的版本号换成你自己安装的
rpm -ql percona-xtrabackup-20

 

三、基本备份流程介绍

XtraBacup主要使用两个命令进行备份:xtrabackup和innobackupex,因主xtrabackup命令不支持MyISAM的备份(不会备份.frm相关文件),而根据业务特点一般两类表存储类型MyISAM和InnoDB都可能有,所有这里只时候介绍使用innobackupex命令的使用。

完整的流程主要有3步:

1、备份(Create) 

2、执行准备操作(Prepare)。即对事务日志进行提交或回滚,准备进行下一步的恢复操作 

3、恢复(Restore)

上面3个步骤中,1和3好理解,第2步要小心些,因为关系你的数据能否正常进行完全的恢复。MySQL对InnoDB存储类型的所有事务操作都存在数据目录的ibdata1文件里(各位可以查看下该文件往往非常大),如果开了主-从模式的,还有mysql-bin.000x相关日志传输的记录文件,这些记录都跟prepare步聚有关,都是对这些日志的合并的操作了。实践中,只要记住一点:只在要恢复数据库时才行prepare步骤!!看到--apply-log参数时表示都是在合并日志。‍

下面看一个基本的增量备份步骤,全量备份不介绍(实际上增量备份也要一个全量备份,而且全量备份在实践中比较少遇到,一般都是增量备份)。

#准备一个全库备份,备份目录会自动根据当前日期创建,如/path/to/backup/dir/2011-5-23_23-01-18,
#如果不想它创建子目录, 添加参数 --no-timestamp
innobackupex --user=USER --password=PASSWORD /path/to/backup/dir/

#1小时后,执行第1个增量备份,假设$FULLBACKUP=/path/to/backup/dir/2011-5-23_23-01-18,
#/path/to/inc/dir 是增量备份根目录,执行完后假设是/path/to/inc/dir/2011-12-25_00-01-00/
innobackupex --user=USER --password=PASSWORD --incremental /path/to/inc/dir --incremental-basedir=$FULLBACKUP

#好了,如果只是备份,到这里就结束了,下面是开始准备还原了,先执行合并日志的prepare步骤

#################以下为还原数据库的步骤########################################

#还原步骤1、全量备份的重做日志redo log 进行提交
innobackupex --apply-log --redo-only $FULLBACKUP --use-memory=1G --user=USER --password=PASSWORD

#还原步骤2、
#然后逐一对增量备份的事务日志进行合并到全量备份里,有多少个增量就按顺序逐一合并,
#如果增量都是基于全量的最后一个增量,则只对最后一个增量合并就行;
#如果你的增量备份方案是对增量进行增量备份的,则要按顺序逐一合并增量日志!!
innobackupex --apply-log --redo-only $FULLBACKUP --incremental-dir=$INCREMENTALBACKUP --use-memory=1G --user=USER --password=PASSWORD

#还原步骤3、
#prepare的最后一步,对已经合并重做日志redo log的全库 回滚未提交的事件
innobackupex-1.5.1 --apply-log $FULLBACKUP --use-memory=1G --user=$USERNAME --password=$PASSWORD

#还原步骤4、
#恢复。恢复的路径将从my.cnf获取。还原时注意写入目录要为空,一般是 /var/lib/mysql
#先解压缩ibdata1.qp文件
#cat ibdata1.qp |qpress -di . 此步骤不能直接运行,要使用 --apply-log 命令
innobackupex --copy-back /path/to/backup/dir/2011-5-23_23-01-18
chown -R mysql:mysql /var/lib/mysql

 

四、我的备份方案

根据目前业务的特点,我采用的备份方案是每天全量,每2小时增量的方案,同时定期对过期备份进行清理,主要通过一个脚本实现备份的执行。

下载备份shell脚本(注意:此脚本仅此学术研究使用,对于造成的任何风险和损失概不负责)。

crontab -e
0 4,10,12,14,16,18,20 * * * /xxx/scripts/mysql_backup.sh

#注意:上面的执行时间要有一个符合你全备作业的时间。

五、总结

对于任何业务系统,数据都很重要,有一款好的数据备份方案,就有了风险的基本防范措施。本文介绍的XtraBackup工具的使用,在业内还是比较流行的一种,希望对大家有所帮助。下一步,可以考虑实现异地容灾等方案,逐步实现数据安全的最大化!

参考文档

Xtrabackup增量备份

https://www.percona.com/doc/percona-xtrabackup/2.2/howtos/recipes_ibkx_inc.html

关于重做日志redo log

https://docs.oracle.com/cd/B28359_01/server.111/b28310/onlineredo001.htm

How InnoDB handles REDO logging

https://www.percona.com/blog/2011/02/03/how-innodb-handles-redo-logging/

<作者 朱淦 350050183@qq.com 2015.11.4>

© 著作权归作者所有

共有 人打赏支持
swingcoder
粉丝 30
博文 282
码字总数 63046
作品 0
广州
技术主管
XtraBackup 原理与安装

阅读目录 1. XtraBackup 简介 2. XtraBackup 原理 3. XtraBackup 安装 4. XtraBackup 备份恢复 1. XtraBackup 简介 XtraBackup(PXB) 工具是 Percona 公司用 perl 语言开发的一个用于 MySQL ...

xiaocao13140 ⋅ 05/21 ⋅ 0

xtrabackup 安装使用

xtrabackup 安装使用 一 简介: Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。它能对InnoDB和X...

xiaocao13140 ⋅ 05/21 ⋅ 0

XtraBackup 备份与恢复实例讲解

阅读目录 xtrabackup 选项 xtrabackup 全量备份恢复 xtrabackup 增量备份恢复 前一篇文章我们讲到了PXB的原理以及安装方法,接下来将详细介绍 XtraBackup 备份和恢复的具体过程。 回到顶部 ...

xiaocao13140 ⋅ 05/21 ⋅ 0

xtrabackup 使用说明(续)

xtrabackup 使用说明(续) 背景: 关于物理备份工具xtrabackup的一些说明可以先看之前写过的文章说明:xtrabackup 安装使用。现在xtrabackup版本升级到了2.4.4,相比之前的2.1有了比较大的变...

xiaocao13140 ⋅ 05/21 ⋅ 0

xtrabackup 使用说明

背景: 关于物理备份工具xtrabackup的一些说明可以先看之前写过的文章说明:xtrabackup 安装使用。现在xtrabackup版本升级到了2.4.4,相比之前的2.1有了比较大的变化: 功能全部集成到 里面,...

xiaocao13140 ⋅ 05/28 ⋅ 0

XtraBackup应用说明(支持TokuDB)

XtraBackup应用说明(支持TokuDB) 背景: 关于物理备份工具xtrabackup的一些说明可以先看之前写过的文章说明:XtraBackup 安装使用和xtrabackup 使用说明(续),本篇文章将介绍xtrabackup在...

xiaocao13140 ⋅ 05/21 ⋅ 0

初识MariaDB之4——Xtrabackup备份与还原

一、基础知识 mysqldump是mysql自带的一个单线程的逻辑备份工具,当数据量很大时,使用mysqldump备份的时间会非常长,且无法做增量备份,xtrabackup是一款基于底层块复制、开源的备份工具,可...

qiao645 ⋅ 05/09 ⋅ 0

CentOS 6.5下Percona Xtrabackup的安装错误解决方案

CentOS 6.5下Percona Xtrabackup的安装错误解决方案 CentOS 6.5下Percona Xtrabackup的安装错误解决方案 1.下载最新版的Xtracbackup 2.安装 yum install perl-DBI yum install perl-DBD-MySQ......

xiaocao13140 ⋅ 05/28 ⋅ 0

DBA 必知的 MYSQL 备份与还原方法

一mysqldump 备份结合 binlog 日志恢复 说明:MySQL 备份一般采取全库备份加日志备份的方式,例如每天执行一次全备份,每小时执行一次二进制日志备份。这样在 MySQL 故障后可以使用全备份和日...

xiaocao13140 ⋅ 05/21 ⋅ 0

Mysql 备份恢复与xtrabackup备份

Mysql 备份恢复与xtrabackup备份 1.1 备份的原因   备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据(取决于备份周期),但至少能将损失降到最低...

xiaocao13140 ⋅ 06/13 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如何将S/4HANA系统存储的图片文件用Java程序保存到本地

我在S/4HANA的事务码MM02里为Material维护图片文件作为附件: 通过如下简单的ABAP代码即可将图片文件的二进制内容读取出来: REPORT zgos_api.DATA ls_appl_object TYPE gos_s_obj.DA...

JerryWang_SAP ⋅ 35分钟前 ⋅ 0

Cube的构建过程

Cube 的构建方式有两种:全量构建和增量构建。两者的构建过程完全一样,区别在于构建时读取的数据源是全集还是子集。 Cube的构建步骤: 1.创建临时的 Hive 平表(从 Hive 读取数据)。 2.计算...

无精疯 ⋅ 39分钟前 ⋅ 0

云计算的选择悖论如何对待?

导读 人们都希望在工作和生活中有所选择。但心理学家的调查研究表明,在多种选项中进行选择并不一定会使人们更快乐,甚至不会产生更好的决策。心理学家Barry Schwartz称之为“选择悖论”。云...

问题终结者 ⋅ 42分钟前 ⋅ 0

637. Average of Levels in Binary Tree - LeetCode

Question 637. Average of Levels in Binary Tree Solution 思路:定义一个map,层数作为key,value保存每层的元素个数和所有元素的和,遍历这个树,把map里面填值,遍历结束后,再遍历这个map,把每...

yysue ⋅ 57分钟前 ⋅ 0

IDEA配置和使用

版本控制 svn IDEA版本控制工具不能使用 VCS-->Enable Version Control Integration File-->Settings-->Plugins 搜索Subversion,勾选SVN和Git插件 删除.idea文件夹重新生成项目 安装SVN客户......

bithup ⋅ 今天 ⋅ 0

Hive函数

1.函数explode (一转多) create table hive_wc(sentence string); load data local inpath '/home/hadoop/data/hive-wc.txt' into table hive_wc; 结果: hive > select * from hive_wc; ......

GordonNemo ⋅ 今天 ⋅ 0

PE格式第三讲扩展,VA,RVA,FA的概念

作者:IBinary 出处:http://www.cnblogs.com/iBinary/ 版权所有,欢迎保留原文链接进行转载:) 一丶VA概念 VA (virtual Address) 虚拟地址的意思 ,比如随便打开一个PE,找下它的虚拟地址 这边...

simpower ⋅ 今天 ⋅ 0

180623-SpringBoot之logback配置文件

SpringBoot配置logback 项目的日志配置属于比较常见的case了,之前接触和使用的都是Spring结合xml的方式,引入几个依赖,然后写个 logback.xml 配置文件即可,那么在SpringBoot中可以怎么做?...

小灰灰Blog ⋅ 今天 ⋅ 0

冒泡排序

原理:比较两个相邻的元素,将值大的元素交换至右端。 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第...

人觉非常君 ⋅ 今天 ⋅ 0

Vagrant setup

安装软件 brew cask install virtualboxbrew cask install vagrant 创建project mkdir -p mst/vmcd mst/vmvagrant init hashicorp/precise64vagrant up hashicorp/precise64是一个box......

遥借东风 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部