jenkins调用shell执行数据库升级及备份

###this is deploysql.sh###

#!/bin/bash
LANG="en_US.UTF-8"
date=`date +'%Y%m%d_%H%M%S'`
user=root
password=yourpassword
cd /root/SQLtest/
svn up
if [ $? = 0 ];then
    get_env=`cat /root/SQLtest/upgrade.sql |grep ^#ENV=|sed 's/#ENV=//g;s/.$//'`
    get_host=`cat /root/SQLtest/upgrade.sql |grep ^#HOST=|sed 's/#HOST=//g;s/.$//'`
    host=${get_host}
  if [ -n "${get_env"}] && [ -n "${get_host}"];then
    echo -e "正在获取 ${get_env} ip:${get_host}需要备份的表... "
    backup_tables=`cat /root/SQLtest/upgrade.sql |grep ^#backup_tables=|sed 's/#backup_tables=//g;s/.$//'`
    OLD_IFS="$IFS"
    IFS=","
    tables=($backup_tables)
    IFS="$OLD_IFS"
    if [ -n "$tables" ];then
      echo -e "您需要备份的表有:${tables[*]} "
      for table in ${tables[@]}
      do
    echo -e "mysqldump -uroot -pdbpasswd ${table%.*} ${table#*.} > ${table%.*}_${table#*.}_${date}.sql "
      done
      if [ $? -eq 0 ]
      then
        echo -e "备份成功! "
        echo -e "正在执行升级SQL... "
        mysql -u$user -p$password -h $host <<EOF
        source /root/SQLtest/upgrade.sql;
EOF
      else
        echo -e "备份失败! "
      fi
    else        
      echo -e "警告:您没有输入任何需要备份的表!但是升级SQL依然执行... "
      echo -e "正在执行升级SQL... "
      mysql -u$user -p$password -h $host <<EOF
      source /root/SQLtest/upgrade.sql;
EOF
    fi
  else
    echo -e "ENV or HOST not found! "
  fi
else
    echo -e "svn update failed! "
fi


#this is testENV.sql#

################################声明主机(运维维护)##############################################

#ENV=准生产环境
#HOST=192.168.1.1.

################################END###################################################




#################################声明需要备份的表,建议对升级有操作的表进行备份,可以为空,即不备份直接升级(开发维护)######################################

#请在下一行“backup_tables=”后输入需要备份的表,格式:db.table多个之间用“,”分隔

#backup_tables=mysql.user,mysql.host

##################################END##################################################





################################提供升级操作SQL(开发维护)############################################
use mysql;
show tables;
################################END#####################################################

原文地址:https://www.cnblogs.com/nbuntu/p/5753178.html