升级数据库脚本(加入事务)

#!/bin/bash#ip=x.x.x.x#pass=‘x.x.x.x‘pass=x.x.x.xtime=`date +%Y%m%d-%H%M`db_path=/root/code/xizang_PAD_project/PHP_business_server/tfcms/upgrade/db/db_name=tf_syberos_cmsdb_bak=/usr/local/src/backup/$db_name-$time\.sql#Determine the resultsresult() { if [ $? != 0 ];then echo -e "\033[31m$1 $faild\033[0m" && exit 1 else echo -e "\033[32m$1 $ok\033[0m" fi}#usage $1 is remote ip , $2 is sql fileusage() {if [ $# -lt 2 ];then echo -e "\033[31m usage: sh $0 ip sql_file\033[0m" echo -e "\033[31m example: sh $0 172.16.160.99 v1.0.0-v1.1.0.txt \033[0m" echo -e "\033[31m explain: 升级主机要配置ssh免密,可以使用auto_ssh.sh \033[0m" && exit 2fi}#Backup remote databasebackup_db() { ok="backup db ok !";faild="backup db faild !" ssh root@$1 "mysqldump -uroot -p$pass -R --opt $db_name > $db_bak" result}#sql files add transactionadd_transaction() { ok="add transaction ok !";faild="add transaction faild !" grep "start transaction" $db_path$2 if [ $? != 0 ];then sed -i 1i\start transaction; $db_path$2 result fi grep "commit" $db_path$2 if [ $? != 0 ];then echo "commit;" >> $db_path$2 result fi}# Import sql import_sql() { ok="sql execution ok !";faild="sql execution faild !" if [ -f $db_path/$2 ];then mysql -uroot -p$pass -h$1 tf_syberos_cms < $db_path$2 result else echo -e "\033[31m $db_path/$2 file no exist ! \033[0m" && exit 1 fi}#main functionmain() { usage $1 $2 backup_db $1 add_transaction $1 $2 import_sql $1 $2}main $1 $2

 

相关文章