#!/bin/bash
#############################################
#
#mysql手工导入,qa到dev
#
#############################################
exportQA_HOSTNAME=192.168.8.98
exportCONNECT_QA_MYSQL="mysql-h$QA_HOSTNAME-p3306-uyunwei-p123456"
exportDUMP_QA_MYSQL="mysqldump-h$QA_HOSTNAME-p3306-uyunwei-p123456"
exportCONNECT_DEV_MYSQL="mysql-h192.168.8.190-uinnodealing-p123456"
exportDB_NAME=""
exportBACK_DIR="/home/back/qa_mysql/"
exportEXT=".sql.gz"
#
#帮助-h
#@param
#
usage(){
echo-e"\nUsage:$(basename$0)[OPTIONS][database]"
echo-e"\t-ddatabasebackupandimportdatabase"
echo-e"\t-sdatabaseshowdatabasesize"
echo-e"defaultbackupdirectoryis"$BACK_DIR"\n"
}
#
#输出显示蓝色
#@param$1string
#
echo_blue(){
echo-e"\033[36m$1\033[0m";
}
#
#输出显示红色
#@param$1string
#
echo_red(){
echo-e"\033[31m$1\033[0m"
}
#
#检查数据库是否存在
#@param$1数据库名称
#
check_database_exists(){
localdbname=$1
query=$($CONNECT_QA_MYSQL-e"SELECTinformation_schema.SCHEMATA.SCHEMA_NAMEFROMinformation_schema.SCHEMATAwhereSCHEMA_NAME='${dbname}'"|grep$dbname)
if[-z"$query"];then
echo$(echo_red"ERROR:database$dbnamenotexists!")
exit;
fi
}
#
#显示数据库大小
#@param
#
show_database_size(){
localdbname=$1
echo$($CONNECT_QA_MYSQL-e"selectconcat(round(sum(DATA_LENGTH/1024/1024),2),'MB')as$dbnamefrominformation_schema.TABLESwheretable_schema='${dbname}'"|grepMB)
}
#
#备份数据库
#@param$1数据库名称
#@return1/01备份失败,0备份成功
#
backup_database(){
localdbname=$1
localfilename=$BACK_DIR$dbname$EXT
$DUMP_QA_MYSQL$dbname|gzip>$filename
if[$?-eq0];then
echo$filename
fi
}
#
#导入数据库
#@param$1要导入的数据库文件名
#@param$2数据库名称
#@return1/0
#
import_database(){
localfilename=$1
localdbname=$2
gunzip
return$?
}
#
#开始备份和导入数据
#@param$1
#
start_job(){
localdbname=$1
check_database_exists$dbname
echo-e"$dbnamesize:\n\t"$(echo_blue$(show_database_size$dbname))
echo"startbackup:"
filename=$(backup_database$dbname)
if[-n"$filename"];then
echo-e"\t"$(echo_blue$filename)
echo"startimport:"
import_database$filename$dbname
if[$?-eq0];then
echo-e"\t"$(echo_blue'importissuccess')
else
echo-e"\t"$(echo_red'importisfailure')
fi
fi
}
#显示帮助信息
if[!-n"$1"];then
usage
fi
#获取参数
whilegetopts:d:s:hoptions
do
case"$options"in
d)
start_job$OPTARG
;;
s)
echo-e"$OPTARGsizeis"$(echo_blue$(show_database_size$OPTARG))
;;
h)
usage
;;
*)
usage
;;
esac
done