0

0

MySQL开源备份工具Xtrabackup备份部署

php中文网

php中文网

发布时间:2016-06-07 17:29:44

|

989人浏览过

|

来源于php中文网

原创

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

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

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

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

  2、innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的.innobackupex是一个perl脚本封装,封装了xtrabackup。主要是为了方便的 同时备份InnoDB和MyISAM引擎的表,但在处理myisam时需要加一个读锁。并且加入了一些使用的选项。如slave-info可以记录备份恢 复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave。
   
  Xtrabackup下载地址:
 
  选择合适的版本,,我这里选择binary。
 
  解压到/usr/src/目录,解压后目录名percona-xtrabackup-2.1.3,进入到bin目录,即可直接使用innobackupex命令
  # pwd
  /usr/src/percona-xtrabackup-2.1.3/bin
  # ls -l
  total 112396
  -rwxr-xr-x 1 root root  110738 Jun  7 11:43 innobackupex
  -rwxr-xr-x 1 root root  110738 Jun  7 11:43 innobackupex-1.5.1
  -rwxr-xr-x 1 root root  2211237 Jun  7 11:43 xbcrypt
  -rwxr-xr-x 1 root root  2285672 Jun  7 11:43 xbstream
  -rwxr-xr-x 1 root root 13033745 Jun  7 11:43 xtrabackup
  -rwxr-xr-x 1 root root 16333506 Jun  7 11:43 xtrabackup_55
  -rwxr-xr-x 1 root root 80988093 Jun  7 11:43 xtrabackup_56
 
  在开始使用的时候可能会报如下错误:
  sh: xtrabackup_55: command not found
  innobackupex: fatal error: no 'mysqld' group in MySQL options 

  解决办法xtrabackup_55复制到/usr/bin下即可。

  # cp /usr/src/percona-xtrabackup-2.1.3/bin/xtrabackup_55 /usr/bin/
 
 
  建立mysql备份用户:
  mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost' identified by 'skEBfef5E2';
  mysql> FLUSH PRIVILEGES;
   
备份脚本内容(每周一次全备,六次增量备份,保留2周的备份,并压缩):

#!/bin/bash
BEGINTIME=`date +"%Y-%m-%d %H:%M:%S"`
format_time=`date +"%Y-%m-%d_%H:%M:%S"`
week=`date +%w`
backupbin=/usr/src/percona-xtrabackup-2.1.3/bin
backdir=/data/databasebak/bak
file_cnf=/etc/my.cnf
user_name=backupuser
password="skEBfef5E2"
db="db1 db2 db3 db4"
out_log=$backdir/xtrabackup_log_$format_time
time_cost=$backdir/xtrabackup_time.txt

if [ -f "$backdir.lastlastlastweek.gz" ];then
        rm -rf $backdir.lastlastweek.gz
        mv $backdir.lastweek.gz $backdir.lastlastweek.gz
fi

if [ -d "$backdir/rec5" ];then
        gzip -cr $backdir >$backdir.lastweek.gz
        rm -rf $backdir         
        mkdir $backdir
fi
 
#full
if [ ! -d "$backdir/full" ];then
        echo "#####start full backup at $BEGINTIME to directory full" >>$time_cost
        $backupbin/innobackupex --defaults-file=$file_cnf --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" $backdir/full 1> $out_log 2>&1
        break;
elif [ ! -d "$backdir/rec0" ];then
        echo "#####start 0 incremental backup at $BEGINTIME to directory rec0" >>$time_cost
        $backupbin/innobackupex --defaults-file=$file_cnf  --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" --incremental --incremental-basedir=$backdir/full $backdir/rec0 1> $out_log 2>&1
        break;
elif [ ! -d "$backdir/rec1" ];then
        echo "#####start 1 incremental backup at $BEGINTIME to directory rec1" >>$time_cost
        $backupbin/innobackupex --defaults-file=$file_cnf  --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" --incremental --incremental-basedir=$backdir/rec0 $backdir/rec1 1> $out_log 2>&1
        break;
elif [ ! -d "$backdir/rec2" ];then
        echo "#####start 2 incremental backup at $BEGINTIME to directory rec2" >>$time_cost
        $backupbin/innobackupex --defaults-file=$file_cnf  --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" --incremental --incremental-basedir=$backdir/rec1 $backdir/rec2 1> $out_log 2>&1
        break;
elif [ ! -d "$backdir/rec3" ];then
        echo "#####start 3 incremental backup at $BEGINTIME to directory rec3" >>$time_cost
        $backupbin/innobackupex --defaults-file=$file_cnf  --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" --incremental --incremental-basedir=$backdir/rec2 $backdir/rec3 1> $out_log 2>&1
        break;
elif [ ! -d "$backdir/rec4" ];then
        echo "#####start 4 incremental backup at $BEGINTIME to directory rec4" >>$time_cost
        $backupbin/innobackupex --defaults-file=$file_cnf  --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" --incremental --incremental-basedir=$backdir/rec3 $backdir/rec4 1> $out_log 2>&1
        break;
elif [ ! -d "$backdir/rec5" ];then
        echo "#####start 5 incremental backup at $BEGINTIME to directory rec5" >>$time_cost
        $backupbin/innobackupex --defaults-file=$file_cnf  --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" --incremental --incremental-basedir=$backdir/rec4 $backdir/rec5 1> $out_log 2>&1
        break;
 fi
 ENDTIME=`date +"%Y-%m-%d %H:%M:%S"`
 begin_data=`date -d  "$BEGINTIME" +%s`
 end_data=`date -d  "$ENDTIME" +%s`
 spendtime=`expr $end_data - $begin_data`
 echo "it takes $spendtime sec for packing the data directory" >>$time_cost

部署备份脚本;

# crontab -l

10 2 * * *  /opt/cron/mysqldbbakup.sh

恢复:

#全备恢复:

innobackupex --apply-log --redo-only  --defaults-file=$file_cnf --user=$user_name --password=$password    $backdir/full

#增备恢复,修改增量备份目录,逐个apply-log,到第五天的增量rec4都是输出都显示innobackupex: completed OK!

相关专题

更多
Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

37

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

37

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

16

2026.01.13

PHP缓存策略教程大全
PHP缓存策略教程大全

本专题整合了PHP缓存相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.13

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

3

2026.01.13

交互式图表和动态图表教程汇总
交互式图表和动态图表教程汇总

本专题整合了交互式图表和动态图表的相关内容,阅读专题下面的文章了解更多详细内容。

45

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

9

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Redis+MySQL数据库面试教程
Redis+MySQL数据库面试教程

共72课时 | 6.3万人学习

小皮面板使用视频教程
小皮面板使用视频教程

共30课时 | 20.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号