返回首页
当前位置: 主页 > 数据库 > Mssql教程 >

基于Xtrabackup备份还原MySQL

时间:2016-10-10 21:47来源:电脑教程学习网 www.etwiki.cn 编辑:admin

Xtrabackup 是percona公司的开源项目,用以实现类似innodb官方的热备份工具InnoDB Hot Backup的功能,能够非常快速地备份与恢复mysql数据库。

1. 工具说明
Xtrabackup中包含两个工具:
  xtrabackup是用于热备份innodb, xtradb表中数据的工具,不能备份其他类型的表,也不能备份数据表结构;
  innobackupex是将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力。
由于innobackupex的功能更为全面和完善,所以,本文以innobackupex作为基础进行研究描述。

2. 备份前的准备工作

2.1 Xtrabackup安装

1)     首先,通过wget下载源码tar包:
wget http://www.percona.com/redir/downloads/XtraBackup/LATEST/source/percona-xtrabackup-2.1.5.tar.gz
2)     安装依赖包:
yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses-devel zlib-devel
3)     解压缩tar:
tar -zxvf percona-xtrabackup-2.1.5.tar.gz
cd percona-xtrabackup-2.1.5
4)     所以执行如下语句安装:
./utils/build.sh innodb56
5)     以上语句执行成功后,表示安装完成。
6)     最后,把生成的二进制文件拷贝到一个自定义目录下(本例中为/home/mysql/admin/bin/percona-xtrabackup-2.1.5),并把该目录放到环境变量PATH中。
cp ./innobackupex /home/mysql/admin/bin/percona-xtrabackup-2.1.5
cp ./src/xtrabackup_56 ./src/xbstream /home/mysql/admin/bin/percona-xtrabackup-2.1.5

2.2 为用户授权

在开始备份之前先要给用户授权,创建一个用户,赋予需要的最小权限
grant reload,lock tables,replication client on *.* to 'backup'@'localhost' identified by 'password'

3. 全库备份及还原

3.1 生成一个完整的备份

1)   通过以下语句执行完整备份
innobackupex --user=backup --password=password --defaults-file=/etc/my.cnf /mydata/backup/
注:其中/mydata/backup/为备份保存的文件夹,该语句将拷贝数据文件(由my.cnf里的变量datadir指定)至备份目录下(/mydata/backup),注意:如果不指定--defaults-file,默认值为/etc/my.cnf。第一步完成后,会在backup文件夹中生成一个以日期为名称的文件夹,存放着文件。

3.2 使用innobackupex恢复备份
 

1)生成innoDB日志,使备份可用
innobackupex --apply-log --defaults-file=/etc/my.cnf --use-memory=1G /mydata/backup/2015-03-23_14-35-12/

注:这条命令将根据my.cnf里datadir指定的路径,将备份恢复至数据库,所以datadir指定的路径一定要存在,且这个datadir的路径必须是空的。
2)   修改文件权限
Chmod -R mysql.mysql /mydata/data/
3)   完成第二步的权限修改就可以成功启动数据库了

4. 增量备份及还原

4.1 创建备份目录

首先创建3个目录,在/mydata/下创建mon,tue,wed 三个目录

4.2 完整备份及增量备份
 

1)制作星期一的完整备份:

innobackupex --user=backup --password=password --defaults-file=/etc/my.cnf /mydata/backup/mon/ --host=196.168.0.140
2)   制作星期二的增量备份:
innobackupex --incremental /mydata/tue/ --defaults-file=/etc/my.cnf --incremental-basedir=/mydata/mon/2015-03-23_15-09-21/ --user=backup --password=password --host=196.168.0.140
3)   制作星期三的增量备份
innobackupex --incremental /mydata/wed/ --defaults-file=/etc/my.cnf --incremental-basedir=/mydata/tue/2015-03-23_15-13-24/ --user=backup --password=password --host=196.168.0.140

4.3 增量备份的恢复

1)   首先准备原始的完整备份
innobackupex --apply-log --redo-only /mydata/mon/2015-03-23_15-09-21/ --use-memory=1G
2)   合并周二的增量备份至原始备份
innobackupex --apply-log --redo-only /mydata/mon/2015-03-23_15-09-21/ --incremental-dir=/mydata/tue/2015-03-23_15-13-24/ --use-memory=1G
3)   合并周三的增量备份是原始备份
innobackupex --apply-log /mydata/mon/2015-03-23_15-09-21/ --incremental-dir=/mydata/wed/2015-03-23_15-23-45/ --use-memory=1G
注意:最后的增量备份恢复,是没有—read-only参数的
4)   以上三步执行完后,数据保存在全备目录/mydata/mon/2015-03-23_15-09-21/
5)   回滚未完成的日志
innobackupex --apply-log --defaults-file=/etc/my.cnf /mydata/mon/2015-03-23_15-09-21/ --use-memory=G 
6)   生成最终的备份,这里要指定配置文件
innobackupex --copy-back /mydata/mon/2015-03-23_15-09-21/ --defaults-file=/etc/my.cnf --use-memory=1G
7)   修改文件和目录的权限 ,属主改为mysql
Chmod -R mysql.mysql “my.cnf中指定的datadir路径”
Chmod -R mysql.mysql “系统表空间所在的目录”
Chmod -R mysql.mysql “重做日志表空间所在目录”
8)   完成权限修改就可以成功启动数据库了
------分隔线----------------------------
标签(Tag):mysql 数据库 mysql数据库
------分隔线----------------------------
推荐内容
猜你感兴趣