mysql全备脚本升级版,支持多台主机,多个数据库

此脚是对上午写的脚本的升级,(前一版地址http://www.sql8.net/a/course/shujuku/Mysql/2014/0815/30340.html)

针对同事多个数据库且数据帐号,密码,主机均可能不相同的情况改写

改写后,需要两个脚本协同完成。

一为批量执行脚本 batch.sh

二为数据备份脚本databak.sh


*******************************批量执行脚本 batch.sh**************************************


sh databak.sh  192.168.1.1 database1 bak1 12322  
sh databak.sh  localhost database2,database3,database4 bak 123333  


*********************************************************************************************


*******************************数据备份脚本databak.sh**************************************

#!/bin/bash
#mysql全备脚本,此脚本可以备份多个数据库,
#为每个数据建立单独的文件夹进行备份
#对于不同帐号,不同库,不是主机
#调用参数格式 主机 数据库 帐号 密码
#调用方法
#同一帐号多个数据库可以用,分隔
#sh databak.sh  主机 数据库 帐号 密码  
#sh databak.sh  localhost youoil bak 123  




#author:yxy
#website:www.sql8.net
#mail:[email protected]
#created:2014-8-14


#Mysql dabase information
#主机
db_host=$1
#databases
#需要备份的数据库,如果有多个数据库,请用,分隔
databaseList=$2
#数据库帐号
db_user=$3
#数据库密码
db_passwd=$4
#mysql安装目录
MYSQL="/opt/lampp/bin/mysql"
#mysql命令目录
MYSQLDUMP="/opt/lampp/bin/mysqldump"


if [ "$db_host" == "" ] || [ "$databaseList" == "" ] || [ "$db_user" == "" ] || [ "$db_passwd" == "" ]; then
echo "Insufficient arguments"
exit 1
fi
echo "$db_host" "$databaseList" "$db_user"  "$db_passwd"




#Path information
#存放备份文件的路径
BACKUP_DB="/opt/backup/database"
LogFile=$BACKUP_DB"/bak.log"


#Time information
#时间
time=`date +"%Y-%m-%d-%H-%M-%S"`
day=`date +"%d"`
month=`date +"%Y-%m"`
weekday=`date +"%u"`






#Path enable write
if [ ! -w "$BACKUP_DB" ]; then
chmod -R 700 $BACKUP_DB
fi


#echo "**********************************host info****************************************"
#echo "db_host:"$db_host
#echo "db_user:"$db_user
#echo "db_passwd:"$db_passwd
#echo "MYSQL:"$MYSQL
#echo "MYSQLDUMP:"$MYSQLDUMP
#echo "databaseName:"$databaseName
#echo "BACKUP_DB:"$BACKUP_DB
#echo "**********************************************************************************"




#Mysql Backup
Date=`date +%Y%m%d`
Begin=`date +"%Y-%m-%d %H:%M:%S"`
#echo "start backup database:"$databaseName"   "$Begin


for databaseName in `echo "$databaseList" | sed ‘s/,/\n/g‘`
do  
    echo $databaseName


#fileName
#生成备份文件名
fileName=$databaseName"-"$time".sql"
#生成备份文件完整路径
BACKUP_DBPATH=$BACKUP_DB"/"$databaseName




#echo "***********************************database Info***********************************************"
#echo "BACKUP_DBPATH:"$BACKUP_DBPATH
#echo "fileName:"$fileName
#echo "**********************************************************************************"


 


if [ ! -d "$BACKUP_DBPATH" ]; then
mkdir "$BACKUP_DBPATH" 
fi
#备份mysql
$MYSQLDUMP -u $db_user -p$db_passwd -h $db_host $databaseName > $BACKUP_DBPATH/$fileName
#打包.sql文件
cd $BACKUP_DBPATH && tar -czf $fileName.tar.gz $fileName && rm -rf $fileName && chmod go-rwx $fileName.tar.gz


Last=`date +"%Y-%m-%d %H:%M:%S"`
#echo "end backup database:"$databaseName"   "$Last
#输出日志
echo start:$Begin end:$Last $fileName succ >> $LogFile


done

********************crontab设置**********************************************

根据需要设置相关备份规则,此处略则部分规则


#每天1点备份

* 1 * * * cd /opt/backup/database && ./1.sh



#每周一1点备份

* 1 * * 1 cd /opt/backup/database && ./1.sh



#每2小时备份

* */2 * * * cd /opt/backup/database && ./1.sh



#每2天备份

* * */2 * * cd /opt/backup/database && ./1.sh


#每个月5号1点20分备份

20 1 5 * * cd /opt/backup/database && ./1.sh



更多contrab规则请看

 http://www.sql8.net/a/course/caozuoxitong/liunx/2014/0815/30328.html


本文出自 “黑鹰” 博客,请务必保留此出处http://1657030.blog.51cto.com/1647030/1540680

mysql全备脚本升级版,支持多台主机,多个数据库,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。