mysql innobackupex备份恢复

本文详细介绍了如何使用XtraBackup进行MySQL数据库的全量和增量备份,以及如何通过prepare和copy过程实现数据库的恢复。XtraBackup整合了xtrabackup和innobackupex的功能,支持非innodb表的备份。备份和恢复过程涉及参数配置、日志文件分析以及权限调整等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载安装地址:
这里选择二进制通用格式安装,安装完成之后解压,将bin目录添加到path中。
我使用的是最新版本的xtrabackup
[root@mysql1 ~]# xtrabackup -v
xtrabackup version 2.3.2 based on MySQL server 5.6.24 Linux (x86_64) (revision id: 306a2e0)
貌似新版本的xtrabackup将xtrabackup和innobackupex整合在了一起,使用xtrabackup现在也可以备份非innodb的表,备份非innodb表的时候只能全备。
备份过程
简单的全库备份语句如下:
[root@mysql1 bin]# xtrabackup --defaults-file=/usr/local/mysql/my.cnf --backup --target-dir=/data/bak_01
[root@mysql1 bin]# innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --password='root' /data/bak
[root@mysql1 bak02]# ls -l
-rw-r----- 1 root root      387 Nov  2 13:17 backup-my.cnf
drwx------ 2 root root     4096 Nov  2 13:17 brent
-rw-r----- 1 root root 79691776 Nov  2 13:16 ibdata1
drwx------ 2 root root     4096 Nov  2 13:17 mysql
drwx------ 2 root root     4096 Nov  2 13:17 performance_schema
drwx------ 2 root root     4096 Nov  2 13:17 test
drwx------ 2 root root     4096 Nov  2 13:17 test2
-rw-r----- 1 root root       21 Nov  2 13:17 xtrabackup_binlog_info
-rw-r----- 1 root root      117 Nov  2 13:17 xtrabackup_checkpoints
-rw-r----- 1 root root      540 Nov  2 13:17 xtrabackup_info
-rw-r----- 1 root root     2560 Nov  2 13:17 xtrabackup_logfile

xtrabackup_binlog_info:记录备份时二进制日志文件位置
xtrabackup_checkpoints:记录LSN(LOG SEQUENCE NUMBER)以及备份的的类型
xtrabackup_info:记录备份的一些信息
xtrabackup_logfile:备份日志文件,记录备份过程中数据库的变更

增量备份,需要指定全量的目录,其实就是为了获取上一次备份的lsn号,并且从指定的lsn号开始备份,如果知道明确的lsn号,可以直接用参数--incremental-lsn指定lsn号
具体备份的lsn号可以通过查看文件xtrabackup_checkpoints获得。
先全备:
[root@mysql1 bin]# innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --password='root' /data/bak
再增量备份,指定--incremental-basedir,从而获取全备的lsn
[root@mysql1 bin]# innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --password='root'--incremental --incremental-basedir=/data/bak/ 2015-11-02_19-52-31  /data/incre
继续增量备份,那么同样使用上面的语句,只不过指定--incremental-basedir的时候指定上一个增量的目录就行了。
[root@mysql1 bin]# innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --password='root' --incremental --incremental-basedir=/data/ incre/2015-11-02_19-56-01  /data/incre


恢复过程
恢复的过程分为两步,先是prepare然后是copy
prepare就是应用日志的过程,如果有全备和增量备份,需要将增量备份的目录apply到全备的目录中,
copy就是将prepare完成后的目录copy到datadir目录下
由于xrabackup没有copy的过程,只能手工copy,因此我们一般使用innobackupex进行恢复,innobackupex恢复的过程中会调用xtrabackup的prepare命令,具体如下:
先prepare应用日志:
如果应用之后还有增量日志需要应用,必须指定--redo-only参数,为后面的增量应用做准备
[root@mysql1 bin]# innobackupex --defaults-file=/usr/local/mysql/my.cnf--apply-log --redo-only /data/bak/2015-11-02_19-52-31/
先应用第一个增量,因为后面还有增量需要应用,所以这个增量也需要指定--redo-only
[root@mysql1 bin]# innobackupex --defaults-file=/usr/local/mysql/my.cnf--apply-log --redo-only /data/bak/2015-11-02_19-52-31/ --incremental-dir=/data/incre/2015-11-02_19-56-01
下面这是最后一个增量,所以不需要加--redo-only参数
[root@mysql1 bin]# innobackupex --defaults-file=/usr/local/mysql/my.cnf--apply-log  /data/bak/2015-11-02_19-52-31/ --incremental-dir=/data/incre/2015-11-02_20-01-08
全部增量应用完成之后,还需要再做一次apply,这次做的目的是为了创建innodb的日志文件,对于一个备份集,最多执行两次apply,做多了也没有意义
[root@mysql1 bin]# innobackupex --defaults-file=/usr/local/mysql/my.cnf--apply-log  /data/bak/2015-11-02_19-52-31/
最后使用--copy-back命令将备份集目录拷贝到datadir目录下
[root@mysql1 bin]#  innobackupex --defaults-file=/usr/local/mysql/my.cnf --copy-back /data/bak/2015-11-02_19-52-31/
还需要主要当前恢复完成之后的目录的权限所属,一般都是root.root,需要将他们改为mysql.mysql
最后就可以打开mysql了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值