innobackupex在线备份及恢复的方法

69次阅读
没有评论

共计 3837 个字符,预计需要花费 10 分钟才能阅读完成。

本篇内容介绍了“innobackupex 在线备份及恢复的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

背景介绍:

1、Xtrabackup 是什么

Xtrabackup 是一个对 InnoDB 做数据备份的工具,支持在线热备份 (备份时不影响数据读写),是商业备份工具 InnoDB Hotbackup 的一个很好的替代品。

Xtrabackup 有两个主要的工具:xtrabackup、innobackupex

1、xtrabackup 只能备份 InnoDB 和 XtraDB 两种数据表,而不能备份 MyISAM 数据表

2、innobackupex 是参考了 InnoDBHotbackup 的 innoback 脚本修改而来的.innobackupex 是一个 perl 脚本封装,封装了 xtrabackup。主要是为了方便的同时备份 InnoDB 和 MyISAM 引擎的表,但在处理 myisam 时需要加一个读锁。并且加入了一些使用的选项。如 slave-info 可以记录备份恢复后,作为 slave 需要的一些信息,根据这些信息,可以很方便的利用备份来重做 slave。

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

全备及其恢复:

全备:

执行如下语句进行全备:

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

innobackupex –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-backuped

from_lsn = 0

to_lsn = 563759005914

last_lsn = 563759005914

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

backup_type = incremental

from_lsn = 563759005914

to_lsn = 574765133284

last_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 = incremental

from_lsn = 574765133284

to_lsn = 574770200380

last_lsn = 574770200950

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

恢复:整个过程分为三步骤,整体上可以理解为:可以理解是先把增量备份的数据倒进全备份中,然后最后使用全备份恢复即可

第一步:是在所有备份目录下重做已提交的日志,注意最后一个增量备份是没有 –redo-only 的,并且数据最后是在全备份中,,如:

innobackupex –apply-log –redo-only BASE-DIR

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

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

错误:

sh: xtrabackup_55: command not found

innobackupex: Error: no mysqld group in MySQL options at /home/mysql/admin/bin/percona-xtrabackup-2.1.6/innobackupex line 4341.

解决方法:

cp xtrabackup_innodb55  xtrabackup_55

“innobackupex 在线备份及恢复的方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-01发表,共计3837字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)