摘要:Xtrabackup是一个对MySQL InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。希望本文对您学习MySQL有所帮助。
Xtrabackup介绍
Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。
Xtrabackup有两个主要的工具:xtrabackup、innobackupex
xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表。
innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的.innobackupex是一个perl脚本封装,封装了xtrabackup。主要是为了方便的 同时备份InnoDB和MyISAM引擎的表,但在处理myisam时需要加一个读锁。并且加入了一些使用的选项。如slave-info可以记录备份恢 复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave。
Xtrabackup工具支持对InnoDB存储引擎的增量备份,工作原理如下:
1. 首先完成一个完全备份,并记录下此时检查点的LSN(Log Sequence Number)
2. 在进程增量备份时,比较表空间中每个页的LSN是否大于上次备份时的LSN,如果是,则备份该页,同时记录当前检查点的LSN。**
3. 首先,在logfile中找到并记录最后一个checkpoint(“last checkpoint LSN”),然后开始从LSN的位置开始拷贝InnoDB的logfile到xtrabackup_logfile;接着,开始拷贝全部的数据文 件.ibd;在拷贝全部数据文件结束之后,才停止拷贝logfile。 因为logfile里面记录全部的数据修改情况,所以,即时在备份过程中数据文件被修改过了,恢复时仍然能够通过解析xtrabackup_logfile保持数据的一致。
安装xtrabackup
官网地址 //www.percona.com/downloads/XtraBackup/
https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.10/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.10-1.el7.x86_64.rpm
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL libev-devel perl-Digest-MD5 rpm -ivh percona-xtrabackup-24-2.4.10-1.el7.x86_64.rpm
通过innobackupex备份数据库
#备份全库 innobackupex --defaults-file=/etc/my.cnf --user=root --password=fangcang --host=127.0.0.1 /opt/backup -u, --user=name -p, --password=name -P, --port=# -H, --host=name 指定主机 -S, --socket=name 指定sock文件位置 --incremental-basedir 指定全备文件目录(增量备份选项) --incremental 创建一个增量备份,而不是完整的备份 --compress[=name] 压缩 --export 导出#备份单库 innobackupex --defaults-file=/etc/my.cnf --user=root --password=fangcang --databases=opsmanage /opt/backup/#创建test库 全量备份基础上增量备份 create database test innobackupex --defaults-file=/etc/my.cnf --user=root --password=fangcang --incremental-basedir=/opt/backup/2018-04-23_15-20-15/ --incremental /opt/backup/#创建test01 增量基础上再创建增量 create database test01 innobackupex --defaults-file=/etc/my.cnf --user=root --password=fangcang --incremental-basedir=/opt/backup/2018-04-23_15-22-29/ --incremental /opt/backup/#查看/opt/backup下三个文件 [root@WareHouse backup]# ll total 0 drwxr-x--- 7 root root 255 Apr 23 15:20 2018-04-23_15-20-15(全备文件) drwxr-x--- 8 root root 293 Apr 23 15:22 2018-04-23_15-22-29(第一次增备) drwxr-x--- 9 root root 307 Apr 23 15:31 2018-04-23_15-31-03 (第二次增备) [root@WareHouse backup]# du -sh *101M 2018-04-23_15-20-155.7M 2018-04-23_15-22-295.7M 2018-04-23_15-31-03#目录下面还可以看到LSN及backup status (增备|完备) [root@WareHouse backup]# cat 2018-04-23_15-20-15/xtrabackup_checkpoints backup_type = full-backuped(全备) from_lsn = 0 to_lsn = 4459200 last_lsn = 4459209 compact = 0 recover_binlog_info = 0 [root@WareHouse backup]# cat 2018-04-23_15-22-29/xtrabackup_checkpoints backup_type = incremental(增量) from_lsn = 4459200 to_lsn = 4459200 last_lsn = 4459209 compact = 0 recover_binlog_info = 0 [root@WareHouse backup]# cat 2018-04-23_15-31-03/xtrabackup_checkpoints backup_type = incremental(增量) from_lsn = 4459200 to_lsn = 4459200 last_lsn = 4459209 compact = 0 recover_binlog_info = 0
通过innobackupex恢复数据库
#查看当前数据库 mysql> show databases; +--------------------+| Database | +--------------------+| information_schema || cmdb_v2 || mysql || opsmanage || performance_schema || sys || test || test01 | +--------------------+8 rows in set (0.05 sec)#删除test01,模拟恢复数据库 mysql> drop test01;##开始恢复test01 /etc/init.d/mysqld stop #停止数据库 rm -rf /usr/local/mysql/data/* #删除数据文件#第一次还原 innobackupex --defaults-file=/etc/my.cnf -u root -p fangcang --apply-log --redo-only /opt/backup/2018-04-23_15-20-15/#第二次还原带增量1 innobackupex --defaults-file=/etc/my.cnf -u root -p fangcang --apply-log --redo-only /opt/backup/2018-04-23_15-20-15/ --incremental-dir=/opt/backup/2018-04-23_15-22-29/#第三次还原带增量2 innobackupex --defaults-file=/etc/my.cnf -u root -p fangcang --apply-log --redo-only /opt/backup/2018-04-23_15-20-15/ --incremental-dir=/opt/backup/2018-04-23_15-31-03/#最后进行全量还原 innobackupex --defaults-file=/etc/my.cnf -u=root -p=fangcang --apply-log /opt/backup/2018-04-23_15-20-15/ innobackupex --defaults-file=/etc/my.cnf -u=root -p=fangcang --copy-back /opt/backup/2018-04-23_15-20-15/ chown -R mysql:mysql /usr/local/mysql/data/ /etc/init.d/mysqld start#查看数据库已恢复 mysql> show databases; +--------------------+| Database | +--------------------+| information_schema || cmdb_v2 || mysql || opsmanage || performance_schema || sys || test || test01 | +--------------------+8 rows in set (0.00 sec)
innobackupex备份脚本
#mysql全量备份#描述 执行报错加--scoket=/tmp/mysql.sock 或者 --host=127.0.0.1,此处是ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock#--stream流备份无法使用--stream=tar /opt/backup | gzip > /opt/backup/`date +%F_%H-%M-%S`.tar.gz #!/bin/bash logfile="/opt/backup/mysql_fullbak.log" backuplogfile="/opt/backup/mysqlbackup.log" mysql_bakdir="/opt/backup" user=root password=fangcang if [ ! -d $mysql_bakdir ];then mkdir -p $mysql_bakdirif [ ! -f $logfile ];then touch $logfile innobackupex --defaults-file=/etc/my.cnf -u=${user} -p=${password} --compress --parallel=4 --throttle=100 ${mysql_bakdir} >> $backuplogfile 2>&1 & result=$? finishtime=`date +%Y%m%d_%H%M%S`if [ ${result} -eq 0 ];then echo "Mysql fullbakup finished, time: $finishtime">> $logfile" else echo "Mysql fullbakup failed,please check time:$finishtime" >> $logfile fi #mysql增量备份脚本#!/bin/bash time=`date -d '-3 day' +%Y-%m-%d` logfile="/opt/backup/mysql_full_bak_time.log" mysql_bakdir="/opt/backup/" user=root password=fangcang lastfullbakdir=`ls /home/mysqlbak/ |grep ${time}` [ ! -d $mysql_bakdir ] && mkdir -p $mysql_bakdir [ ! -d $logfile ] && touch $logfile innobackupex --defaults-file=/etc/my.cnf --user=${user} --password=${password} --incremental-basedir=${mysql_bakdir}/${lastfullbakdir} --incremental ${mysql_bakdir} finishtime=`date +%Y%m%d_%H%M%S` [ $? -eq 0 ] && echo "Mysql fullbakup finished, time: $finishtime">> $logfile || echo "Mysql fullbakup failed,please check time:$finishtime">> $logfile
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注数据库MySQL频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号