首页 >

[MySQL] innobackupex在线备份及回复(全量和增量)

数据库|mysql教程[MySQL] innobackupex在线备份及回复(全量和增量)
MySQL,innobackupex,在线,备份,回复,全量
数据库-mysql教程
商家导航 源码,vscode跳转插件,一号本安装Ubuntu,elk搜集tomcat,qt sqlite删除行,dz插件里绑定域名,web前端框架的书籍,网络爬虫要什么软件,php 帮助,ykl_seo,php设计网站源代码下载,抓取微信网页源码,帝国 内容模板,答题pk小程序源码下载lzw
[MySQL] innobackupex在线备份及恢复(全量和增量) Xtrabackup是由percona开发的一个开源软件,它是innodb热备工具ibbackup(收费的商业软件)的一个开源替代品。Xtrabackup由个部分组成:xtrabackup和innobackupex,其中xtrabackup工具用于备份innodb和 xtra
社区门户论坛网站源码,ubuntu 切回桌面,国家热爱爬虫动物,前端工程师和php工程师对比,seo大纲介绍lzw
房产O2O源码,怎么在vscode打开js,ubuntu基础教学,tomcat集群内部转发,爬虫箱制冷,php 编程游戏,深圳网络推广seo价格,其它网站源码 html静态源码,cms开源模板lzw
[MySQL] innobackupex在线备份及恢复(全量和增量)

Xtrabackup是由percona开发的一个开源软件,它是innodb热备工具ibbackup(收费的商业软件)的一个开源替代品。Xtrabackup由个部分组成:xtrabackup和innobackupex,其中xtrabackup工具用于备份innodb和 xtraDB引擎的表;而innobackupex工具用于备份myisam和innodb引擎的表,本文将介绍如何用innobackupex工具做全量和增量备份。

官网:http://www.percona.com/docs/wiki/percona-xtrabackup:start

安装

声明:以下操作最好以mysql用户执行。

首先,通过wget下载源码tar包:

wget http://www.percona.com/redir/downloads/XtraBackup/LATEST/source/percona-xtrabackup-2.1.5.tar.gz

安装依赖包:

yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses-devel zlib-devel

解压缩tar:

tar -zxvf percona-xtrabackup-2.1.5.tar.gzcd percona-xtrabackup-2.1.5

utils/build.sh脚本会根据指定的引擎版本,自动解压缩适当的MySQL源码包并进行编译,这是最简单的安装方式。当你在命令行下不带任何参数执行该脚本时,出现如下提示:

[mysql@epay100 ~/software/percona-xtrabackup-2.1.5 ]$ ./utils/build.shBuild an xtrabackup binary against the specified InnoDB flavor.Usage: build.sh CODEBASEwhere CODEBASE can be one of the following values or aliases:  innodb51         | pluginbuild against InnoDB plugin in MySQL 5.1  innodb55         | 5.5   build against InnoDB in MySQL 5.5  innodb56         | 5.6,xtradb56,         build against InnoDB in MySQL 5.6   | mariadb100  xtradb51         | xtradb,mariadb51      build against Percona Server with XtraDB 5.1   | mariadb52,mariadb53  xtradb55         | galera55,mariadb55    build against Percona Server with XtraDB 5.5

根据上面提示和你使用的存储引擎及版本,选择相应的参数即可。因为我用的是MySQL 5.6,所以执行如下语句安装:

./utils/build.sh innodb56

以上语句执行成功后,表示安装完成。最后,把生成的二进制文件拷贝到一个自定义目录下(本例中为/home/mysql/admin/bin/percona-xtrabackup-2.1.5),并把该目录放到环境变量PATH中。

cp ./innobackupex /home/mysql/admin/bin/percona-xtrabackup-2.1.5cp ./src/xtrabackup_56 ./src/xbstream /home/mysql/admin/bin/percona-xtrabackup-2.1.5  

全备及其恢复
全备:
执行如下语句进行全备:

innobackupex --defaults-file=/opt/mysql/my.cnf  --user=root --password=*** /backup/mysql/data

该语句将拷贝数据文件(由my.cnf里的变量datadir指定)至备份目录下(/backup/mysql/data),注意:如果不指定–defaults-file,默认值为/etc/my.cnf。
备份成功后,将在备份目录下创建一个时间戳目录(本例创建的目录为/backup/mysql/data/2013-10-29_09-05-25),在该目录下存放备份文件。

恢复:

innobackupex --defaults-file=/opt/mysql/my.cnf --user=root --password=*** --use-memory=4G --apply-log /backup/mysql/data/2013-10-29_09-05-25innobackupex --defaults-file=/opt/mysql/my.cnf --user=root --password=***  --copy-back /backup/mysql/data/2013-10-29_09-05-25

从什么可以看出,恢复分为两个步骤,第1步是apply-log,为了加快速度,一般建议设置–use-memory,这个步骤完成之后,目录/backup/mysql/data/2013-10-29_09-05-25下的备份文件已经准备就绪。
第2步是copy-back,即把备份文件拷贝至原数据目录下。
恢复完成之后,一定要记得检查数据目录的所有者和权限是否正确。

增量备份及其恢复
注意:innobackupex 增量备份仅针对InnoDB这类支持事务的引擎,对于MyISAM等引擎,则仍然是全备。

增量备份:
增量备份需要基于全备,先假设我们已经有了一个全备(/backup/mysql/data/2013-10-29_09-05-25),在该全表的基础上做增量备份。

innobackupex --defaults-file=/opt/mysql/my.cnf  --user=root --password=*** --incremental-basedir=/backup/mysql/data/2013-10-29_09-05-25 --incremental /backup/mysql/data

其中–incremental-basedir指向全备目录,–incremental指向增量备份的目录。
上面语句执行成功之后,会在–incremental执行的目录下创建一个时间戳子目录(本例中为:/backup/mysql/data/2013-10-29_09-52-37),在该目录下存放着增量备份的所有文件。
在备份目录下,有一个文件xtrabackup_checkpoints记录着备份信息,全备的信息如下:

backup_type = full-backupedfrom_lsn = 0to_lsn = 563759005914last_lsn = 563759005914

基于该全备的增量备份的信息如下:

backup_type = incrementalfrom_lsn = 563759005914to_lsn = 574765133284last_lsn = 574765133284

从上面可以看出,增量备份的from_lsn正好等于全备的to_lsn。
那么,我们是否可以在增量备份的基础上再做增量备份呢?答案是肯定的,只要把–incremental-basedir执行上一次增量备份的目录即可,如下所示:

innobackupex --defaults-file=/opt/mysql/my.cnf  --user=root --password=*** --incremental-basedir=/backup/mysql/data/2013-10-29_09-52-37 --incremental /backup/mysql/data

它的xtrabackup_checkpoints记录着备份信息如下:

backup_type = incrementalfrom_lsn = 574765133284to_lsn = 574770200380last_lsn = 574770200950

可以看到,该增量备份的from_lsn是从上一次增量备份的to_lsn开始的。

恢复:

增量备份的恢复比全备要复杂很多,第一步是在所有备份目录下重做已提交的日志,如:

innobackupex --apply-log --redo-only BASE-DIRinnobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-2

其中BASE-DIR是指全备目录,INCREMENTAL-DIR-1是指第一次的增量备份,INCREMENTAL-DIR-2是指第二次的增量备份,以此类推。
这里要注意的是:最后一步的增量备份并没有–redo-only选项!还有,可以使用–use_memory提高性能。
以上语句执行成功之后,最终数据在BASE-DIR(即全备目录)下。
第一步完成之后,我们开始第二步:回滚未完成的日志:

innobackupex --apply-log BASE-DIR

上面执行完之后,BASE-DIR里的备份文件已完全准备就绪,最后一步是拷贝:

innobackupex --copy-back BASE-DIR

同样地,拷贝结束之后,记得检查下数据目录的权限是否正确。

常见错误及解决方法
错误:

131028 17:45:57  innobackupex: Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_group=xtrabackup' (using password: NO).innobackupex: Error: Failed to connect to MySQL server as DBD::mysql module is not installed at /home/mysql/admin/bin/percona-xtrabackup-2.1.5/innobackupex line 2913.

解决方法:

yum -y install perl-DBD-MySQL.x86_64

2楼linwaterbin昨天 17:55猪哥,,你们线上也用这个备份啦?我们目前也是了Re: u010415792昨天 23:01回复linwaterbinn是的,因为它开源1楼mchdba昨天 13:53在执行备份恢复的时候,经常会碰到datadir的问题:请看我的记录 http://blog.csdn.net/mchdba/article/details/12970991Re: u010415792昨天 15:13回复mchdban最好指定my.cnf的位置:–defaults-file=/opt/mysql/my.cnfRe: u010415792昨天 15:14回复mchdban这是因为在你默认的my.cnf里没有设置datadir变量Re: mchdba昨天 15:23回复u010415792n是的,不过默认的my.cnf里面有了datadir目录了,只是不指定的话,不识别。Re: u010415792昨天 15:27回复mchdban那就手动指定下呗


[MySQL] innobackupex在线备份及回复(全量和增量)
  • MySQL中使用innobackupex、xtrabackup进行大数据的备份和还原教
  • MySQL中使用innobackupex、xtrabackup进行大数据的备份和还原教 | MySQL中使用innobackupex、xtrabackup进行大数据的备份和还原教 ...

    [MySQL] innobackupex在线备份及回复(全量和增量)
  • mysql备份工具之innobackupex
  • mysql备份工具之innobackupex | mysql备份工具之innobackupex ...

    [MySQL] innobackupex在线备份及回复(全量和增量)
  • Innobackupex 和 mydumper,mysql备份工具
  • Innobackupex 和 mydumper,mysql备份工具 | Innobackupex 和 mydumper,mysql备份工具 ...