两个shell备份mysql的脚本

原文:http://isadba.com/index.php/2012/01/%E5%88%86%E4%BA%AB%E4%B8%A4%E4%B8%AAshell%E5%A4%87%E4%BB%BDmysql%E7%9A%84%E8%84%9A%E6%9C%AC/

分享两个shell script脚本,用来备份mysql用的。
第一个脚本是使用mysqldump命令来备份,第二个脚本是使用innobackupex也就是xtrabackup程序来做备份。
他们的主要区别在于:
mysqldump优点:备份出来的数据比较小,基本算是纯数据,如果是innodb引擎,数据都在内存里面的话,不会发生物理磁盘的读操作。
mysqldump缺点:不支持增量备份,会发生表锁,如果数据量过大,表锁时间会很长。
xtrabackup优点:支持热备,支持增量备份。
xtrabackup缺点:备份是物理拷贝+逻辑备份的方式备份数据库,会发生物理磁盘的读操作,但是物理备份的速度会比较快。
总的来看xtrabackup会比mysqldump优秀很多,因为他支持热备和增量备份。但是这个也是根据数据库情况而定,如果是在slave上做备份,不用太多的考虑表锁问题,mysqldump也是很不错的。还有就是如果数据量不大,小于5G,数据基本都是update语句较多的情况下,不太适合使用xtrabackup做全备和增量备份策略,因为xtrabackup增量备份的原理是通过lsn来操作的,
如果你的数据库更新太频繁,每天新的lsn太多,那增量备份还没有全备来的快,还有就是xtrabackup全备的时候会备份ib_logfile*和ibdata*,就算你使用的独享表空间也会备份这些文件,所以每次全备的size会比较大,磁盘空间和系统资源的占用也比较多。
根据上面的一些简单分析,大家可以根据自己的情况来指定自己的备份策略,使用这两个脚本加上crontab就能完成普通的备份任务。
下面是两个脚本,第一个是使用mysqldump来备份,第二个是使用innobacpupex,innobaclupex是每天第一次备份是全备,后面就会基于每天的第一个全备做0级增量备份。
mysqldump:

# cat mysql_bak.sh
#temp script,use backup ZION_DB
#!/bin/bash
FILE_TIME=`date +%Y-%m-%d-%H`
DIR_TIME=`date +%Y-%m-%d`
BACK_DIR=/backup/DBBAK/$DIR_TIME
[ -d $BACK_DIR ] || mkdir -p $BACK_DIR
cd $BACK_DIR
/usr/local/perconamysql/bin/mysqldump -uroot  db > db.sql-zhanshen-$FILE_TIME

innobackupex:

# cat innoback_mysql.sh
#!/bin/bash
#       mysql backup with innobackupex tool.
#       version:        2012-1-12       frist version
#
#                               by andy.feng
#                               copy right
LANG=C
GTIME=`date +%Y-%m-%d`
DIR_TIME=innoback-`date +%Y-%m-%d`
BACK_DIR=/backup/DBBAK/$DIR_TIME
if [ ! -d $BACK_DIR ]
then
        mkdir -p $BACK_DIR
        cd $BACK_DIR
        /usr/bin/innobackupex $BACK_DIR &> /dev/null
elif [ -d $BACK_DIR ]
then
        cd $BACK_DIR
        FULLBACKUP=`ls -1 | grep  $GTIME | sort | awk 'NR==1{print $1}'`
        if [ -d $FULLBACKUP ]
        then
                /usr/bin/innobackupex --incremental $BACK_DIR --incremental-basedir=$FULLBACKUP &> /dev/null
        else
                /usr/bin/innobackupex $BACK_DIR &> /dev/null
        fi
fi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值