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

安装percona-xtrabackup

 方法1:

percona-xtrabackup-2.1.9-744-Linux-x86_64.tar.gz(D:\share\src\linux-mysql)

 

wget http://www.percona.com/downloads/XtraBackup/XtraBackup-2.1.9/binary/Linux/x86_64/percona-xtrabackup-2.1.9-744-Linux-x86_64.tar.gz
yum -y install perl-DBD-MySQL perl-Time-HiRes

 

tar zxvf percona-xtrabackup-2.1.9-744-Linux-x86_64.tar.gz
cp -a /usr/local/xtrabackup/bin/* /usr/bin/

 

方法2:

下载地址: https://www.percona.com/downloads/XtraBackup/LATEST/

percona-xtrabackup-2.3.9-1.el7.x86_64.rpm  (D:\share\src\linux-mysql)

yum install -y percona-xtrabackup-2.3.9-1.el7.x86_64.rpm

 

 

全备及其恢复

 

  • 全备:

 

执行如下语句进行全备:

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),在该全表的基础上做增量备份。

 

[plain] 

 

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记录着备份信息,

全备的信息如下

 

[plain] 

 

backup_type = full-backuped  

 

from_lsn = 0  

 

to_lsn = 563759005914  

 

last_lsn = 563759005914  

 

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

 

[plain] 

 

backup_type = incremental  

 

from_lsn = 563759005914  

 

to_lsn = 574765133284  

 

last_lsn = 574765133284  

 

从上面可以看出,增量备份的from_lsn正好等于全备的to_lsn

 

那么,我们是否可以在增量备份的基础上再做增量备份呢?答案是肯定的,只要把--incremental-basedir执行上一次增量备份的目录即可,如下所示:

 

[plain] 

 

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记录着备份信息如下:

 

[plain] 

 

backup_type = incremental  

 

from_lsn = 574765133284  

 

to_lsn = 574770200380  

 

last_lsn = 574770200950  

 

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

 

  • 恢复

 

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

 

[plain] 

 

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(即全备目录)下。

 

第一步完成之后,我们开始第二步:回滚未完成的日志:

 

[plain] 

 

innobackupex --apply-log BASE-DIR  

 

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

 

[plain] 

 

innobackupex --copy-back BASE-DIR  

 

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

 

  • 增备脚本
  • 常见错误级解决方法

错误:

[plain] 

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.  

解决方法:

[plain] 

yum -y install perl-DBD-MySQL.x86_64

 

 

 

转载于:https://www.cnblogs.com/hanxiaohui/p/8406263.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
利用 innobackupex 工具,可以设计 MySQL全量增量备份系统。下面介绍如何使用 innobackupex 工具进行全量备份增量备份。 1. 全量备份 全量备份是指备份数据库的所有数据,包括表结构和数据,以及日志文件。全量备份通常用于在数据库出现故障时进行恢复使用 innobackupex 工具进行全量备份的命令如下: ```bash $ innobackupex --user=<username> --password=<password> --databases=<database> /path/to/backup/directory ``` 其中,`<username>` 是 MySQL 数据库的用户名,`<password>` 是 MySQL 数据库的密码,`<database>` 是需要备份数据库名称,`/path/to/backup/directory` 是备份文件存放的目录。 执行该命令后,innobackupex 工具会将 MySQL 数据库的所有数据备份到指定的目录中。 2. 增量备份 增量备份是指备份数据库中自上次备份以来发生的更改。增量备份通常比全量备份更快,并且可以在备份时减少对数据库的负载。 使用 innobackupex 工具进行增量备份的命令如下: ```bash $ innobackupex --user=<username> --password=<password> --databases=<database> --incremental /path/to/incremental/backup/directory --incremental-basedir=/path/to/full/backup/directory ``` 其中,`--incremental` 表示进行增量备份,`/path/to/incremental/backup/directory` 是增量备份文件存放的目录,`--incremental-basedir` 指定了上一次全量备份的目录,从上次备份以来的更改将被备份增量备份文件中。 执行该命令后,innobackupex 工具会将自上次备份以来的更改备份到指定的目录中。 3. 恢复备份 使用 innobackupex 工具进行备份还原的命令如下: ```bash $ innobackupex --apply-log /path/to/backup/directory ``` 其中,`/path/to/backup/directory` 是备份文件存放的目录。 执行该命令后,innobackupex 工具会将备份文件还原到 MySQL 数据库中。 以上是利用 innobackupex 工具设计 MySQL全量增量备份系统的方法。在备份过程中,需要注意备份的目录和数据库的用户名、密码等信息。在备份完成后,可以使用 innobackupex 工具将备份文件还原到 MySQL 数据库中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值