mysql实例备份和单库备份_mysql备份单实例(一)shell

mysql备份单实例(一)shell

我的博客已迁移到xdoujiang.com请去那边和我交流

一、脚本说明

1、需要备份2个库(mysqltest1 mysqltest)

2、开启4个进程

3、可以选择进行备份不压缩和备份压缩

4、可以对不需要的数据库剔除

5、backup用户在数据库里的权限

grant select,reload,super,lock tables,create view,show view on *.* to 'backup'@'localhost' identified by 'backup';

flush privileges;

6、计划任务

00 00 * * * cd /opt/dbbak && bash mysqlback.sh mysqlbackupconf >> /opt/dbbak/dbbackup.log 2>&1

7、会删除三天前的binlog

8、mysql版本5.5的

9、debian7.4 (3.2.54-2 x86_64)

二、具体脚本如下

cat mysqlback.sh

#!/bin/bash

#--------------------------------------------------

#Author:jimmygong

#Email:jimmygong@taomee.com

#FileName:mysqlback.sh

#Function:

#Version:1.0

#Created:2015-06-29

#--------------------------------------------------

if [[ $# -ne 1 ]]

then

echo -e "Usage:$0 mysqlbackupconf"

exit 1

else

config=$1

if [[ ! -f $config ]]

then

echo -e "Usage:$0 mysqlbackupconf"

exit 1

fi

fi

source $config

dbname=""

currdate=$(date +%Y%m%d)

haveinnodb=0

localip=$(ifconfig eth0|awk '/inet addr:/'|awk -F: '{print $2}'|awk -F" " '{print $1}')

function purgebinlog ()

{

purdate=`date "+%F %T" --date='3 day ago'`

pur="purge master logs before '$purdate'"

echo "$pur"|mysql -u"$dbuser" -p"$dbpass"

}

function redirectlog ()

{

logfile=$logdir/${currdate}_${localip}_log

mkdir -p $logdir

exec 1>$logfile

exec 2>$logfile

}

function checkdestdir ()

{

destdir=$destdir/$currdate

if [[ ! -d $destdir ]]

then

mkdir -p $destdir

fi

}

function runcommand ()

{

comm=$1

mysql -u"$dbuser" -p"$dbpass" -sNe "$comm"

}

function generateschema ()

{

i=0

result=`runcommand 'show databases'`

for db in $result

do

rv=`echo $exclude|grep -w -i $db`

if [[ -n "$rv" ]]

then

continue;

fi

dbname[i]=$db

let i++

done

}

function guessengine ()

{

innodb=`runcommand 'show engines'|grep -i innodb|grep -i yes`

if [[ ! -z "$innodb" ]]

then

haveinnodb=1

fi

}

function dobackupsql ()

{

db=$1

destname=$destdir/$db.sql

if [[ $haveinnodb -eq 1 ]]

then

dumpcomm="mysqldump --opt -u$dbuser -p$dbpass --single-transaction --databases"

else

dumpcomm="mysqldump --opt -u$dbuser -p$dbpass --databases"

fi

$dumpcomm $db > $destname

}

function dobackupgzip ()

{

db=$1

destname=$destdir/$db.sql.gz

if [[ $haveinnodb -eq 1 ]]

then

dumpcomm="mysqldump --opt -u$dbuser -p$dbpass --single-transaction --databases"

else

dumpcomm="mysqldump --opt -u$dbuser -p$dbpass --databases"

fi

$dumpcomm $db|gzip > $destname

}

function backup ()

{

actioncommand=$1

if [[ $commpress -eq 1 ]]

then

actioncommand="dobackupgzip"

else

actioncommand="dobackupsql"

fi

echo -en "`date`\tBACKUP\t$db\n"

$actioncommand $db

}

function backupalldb ()

{

count=0

for db in ${dbname[@]}

do

backup $db &

let count+=1

[[ $((count%$processnum)) -eq 0 ]] && wait

done

wait

echo "all backup done"

}

purgebinlog

redirectlog

checkdestdir

generateschema

guessengine

runcommand "flush logs"

backupalldb

exit 0

三、具体配置信息

cat mysqlbackupconf

dbuser="backup"

dbpass="backup"

exclude='mysql information_schema performance_schema'

destdir=/opt/dbbak

logdir=/opt/dbbak/log

commpress=1

processnum=4

四、备份后结果

1、root@10.131.172.202:~# ll /opt/dbbak/20150629/

-rw-r--r-- 1 root root 4443602410 Jun 29 19:18 mysqltest1.sql.gz

-rw-r--r-- 1 root root 4443601959 Jun 29 19:19 mysqltest.sql.gz

2、root@10.131.172.202:~# ll /opt/dbbak/log/

-rw-r--r-- 1 root root 109 Jun 29 19:19 20150629_10.131.172.202_log

©著作权归作者所有:来自51CTO博客作者xdoujiang的原创作品,如需转载,请注明出处,否则将追究法律责任

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值