#!/bin/bash
pass='123456'
time=`date +%Y%m%d-%H%M`
db_path=/root/code/xizang_PAD_project/PHP_business_server/tfcms/upgrade/db/
db_name=tf_syberos_cms
db_bak=/usr/local/src/backup/$db_name-$time\.sql
#Determine the results
result() {
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 file
usage() {
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 2
fi
}
#Backup remote database
backup_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 transaction
add_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 function
main() {
usage $1 $2
backup_db $1
add_transaction $1 $2
import_sql $1 $2
}
main $1 $2