首页 数据库 mysql教程 MySQL开源备份工具Xtrabackup备份部署

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

Jun 07, 2016 pm 05:29 PM
mysql备份 xtrabackup

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!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

怎么利用Xtrabackup进行mysql增量备份 怎么利用Xtrabackup进行mysql增量备份 May 30, 2023 pm 02:50 PM

利用Xtrabackup进行mysql增量备份现在xtrabackup版本升级到了8.0,但是只对mysql8.0才有支持,我们这还是使用2.4,但是2.4相比之前的2.1有了比较大的变化:innobackupex功能全部集成到xtrabackup里面,只有一个binary,另外为了使用上的兼容考虑,innobackupex作为xtrabackup的一个软链,即xtrabackup现在支持非Innodb表备份,并且Innobackupex在下一版本中移除(8.0已经移除了),建议通过xtraba

MySql的多种备份方案:如何高效创建和恢复MySQL备份 MySql的多种备份方案:如何高效创建和恢复MySQL备份 Jun 15, 2023 pm 03:28 PM

MySql是一种常用的关系型数据库管理系统,被广泛应用于各种业务和应用场景中。对于MySQL的备份问题,备份方案的选择和执行方法至关重要。在本文中,我们将介绍多种备份方案,以及如何高效地创建和恢复MySQL备份。一、备份方案的选择在选择MySQL备份方案的过程中,应该根据业务场景和实际情况,选择适合自己的备份方案。冷备份所谓的冷备份,就是在MySQL数据库完

如何使用MySQL的数据备份和恢复工具实现灾备 如何使用MySQL的数据备份和恢复工具实现灾备 Aug 02, 2023 am 09:06 AM

如何使用MySQL的数据备份和恢复工具实现灾备在数据库管理过程中,数据备份和恢复是非常重要的一环。通过备份数据可以保护数据库免受意外损坏、硬件故障或者其他灾难性事件的影响。MySQL作为一个流行的关系型数据库管理系统,提供了一些强大的工具来实现数据备份和恢复。本文将介绍如何使用MySQL的数据备份和恢复工具来实现灾备。MySQL的数据备份工具-mysql

如何有效管理和维护MySQL数据库中的ibd文件 如何有效管理和维护MySQL数据库中的ibd文件 Mar 16, 2024 am 11:21 AM

在MySQL数据库中,每个InnoDB表都对应着一个.ibd文件,这个文件存储了表的数据和索引。因此,对于MySQL数据库的管理和维护,ibd文件的管理也显得尤为重要。本文将介绍如何有效管理和维护MySQL数据库中的ibd文件,并提供具体的代码示例。1.检查和优化表空间首先,我们可以使用以下SQL语句检查表的磁盘空间使用情况:SELECTTAB

MySQL实现数据的滚动备份技巧 MySQL实现数据的滚动备份技巧 Jun 15, 2023 pm 07:47 PM

MySQL是一种流行的关系型数据库,广泛应用于各个领域。然而,与其它应用程序一样,MySQL存在风险,如数据损坏、崩溃和不良攻击等。因此,备份数据至关重要。备份可以为数据提供安全性和某种形式的“撤销”功能,减少甚至消除不稳定性和风险。最常见的备份类型是完全备份和增量备份。但是,如果您需要频繁的、实时的备份,那么滚动备份就是一种更好的方法。滚动备份是指在可接受

MySql的数据库备份:如何实现高效的MySQL数据库备份和恢复 MySql的数据库备份:如何实现高效的MySQL数据库备份和恢复 Jun 15, 2023 pm 11:37 PM

MySQL是目前使用最广泛的关系型数据库管理系统之一,它的高效性和可靠性使得它成为了众多企业和开发者的首选。但是由于各种原因,我们需要对MySQL数据库进行备份。备份MySQL数据库并不是一项容易的任务,因为一旦备份失败,可能会导致重要数据的丢失。因此,为了确保数据的完整性和可恢复性,必须采取一些措施来实现高效的MySQL数据库备份和恢复。本文将介绍如何实现

MySQL数据库备份与恢复性能调优的项目经验解析 MySQL数据库备份与恢复性能调优的项目经验解析 Nov 04, 2023 am 09:46 AM

MySQL数据库备份与恢复性能调优的项目经验解析在日常运维中,MySQL数据库备份与恢复的工作是不可或缺的。然而,面对数TB甚至PB级别的数据规模,备份恢复所需的时间和资源消耗往往成为制约数据库性能的关键因素。本文将通过一个大型互联网企业备份恢复性能调优的实践案例,分享一些实用的经验和技巧。一、备份方案选择针对不同的业务需求和数据规模,备份方案的选择也应考虑

MySQL备份与恢复全面指南 MySQL备份与恢复全面指南 Jun 15, 2023 am 09:48 AM

MySQL是目前最流行的关系型数据库管理系统之一,在企业级应用中被广泛使用。无论是开发者还是数据管理员,都需要了解MySQL备份与恢复的基本知识。备份和恢复不仅能够帮助企业保护数据,还能够使系统在不良情况下快速应对,尽可能使其恢复到正常运行状态。本文将详细介绍MySQL备份与恢复的操作步骤,并提供一些最佳实践,以帮助读者在保护其MySQL数据库方面走得更远。

See all articles