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}需要备份的表...\n"
    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[*]}\n"
      for table in ${tables[@]}
      do
    echo -e "mysqldump -uroot -pdbpasswd ${table%.*} ${table#*.} > ${table%.*}_${table#*.}_${date}.sql\n"
      done
      if [ $? -eq 0 ]
      then
        echo -e "备份成功!\n"
        echo -e "正在执行升级SQL...\n"
        mysql -u$user -p$password -h $host <<EOF
        source /root/SQLtest/upgrade.sql;
EOF
      else
        echo -e "备份失败!\n"
      fi
    else        
      echo -e "警告:您没有输入任何需要备份的表!但是升级SQL依然执行...\n"
      echo -e "正在执行升级SQL...\n"
      mysql -u$user -p$password -h $host <<EOF
      source /root/SQLtest/upgrade.sql;
EOF
    fi
  else
    echo -e "ENV or HOST not found!\n"
  fi
else
    echo -e "svn update failed!\n"
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#####################################################

时间: 2024-10-28 09:15:35

jenkins调用shell执行数据库升级及备份的相关文章

oracle11g数据库升级

Oracle支持周期 Oracle对自己产品也一样,对于自己的产品在不同的时期,支持的强度是不一样的.大体分来,支持的强度分为三个级别:Premier Support(最高优先级的支持),Extended Support(中等优先级的支持),Sustaining Support(最低优先级的支持) 1.从产品发布为期5年的标准支持服务期-Premier support 2.随后为期3年的延展支持服务期---------extended support 3.接下来进入持久支持服务期--------

oracle11g数据库升级数据库升级

Oracle对自己产品也一样,对于自己的产品在不同的时期,支持的强度是不一样的.大体分来,支持的强度分为三个级别:Premier Support(最高优先级的支持),Extended Support(中等优先级的支持),Sustaining Support(最低优先级的支持) 1.从产品发布为期5年的标准支持服务期-Premier support 2.随后为期3年的延展支持服务期---------extended support 3.接下来进入持久支持服务期--------------susta

oracle11g数据库升级 数据库升级

Oracle支持周期 Oracle对自己产品也一样,对于自己的产品在不同的时期,支持的强度是不一样的. 大体分来,支持的强度分为三个级别:Premier Support(最高优先级的支持),Extended Support(中等优先级的支持),Sustaining Support(最低优先级的支持) 1.从产品发布为期5年的标准支持服务期-Premier support 2.随后为期3年的延展支持服务期---------extended support 3.接下来进入持久支持服务期-------

Android 数据库升级

数据库升级:v1.0-v2.1从v1.0升级到v2.01,不走oncreate,走onupdategrade直接安装v2.0,走onCreate; v1.0-v3.0:分三种情况1.v1.0升级到v3.0: 不走onCreate,走onUpgrade2.v2.0升级到v3.0:不走onCreate,走onUpgrade3.直接安装v3.0:走onCreate,不走onUpgradepublic class DbHelper extends SQLiteOpenHelper { // privat

Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件

本文通过Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件,代码如下: import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.util.HashMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import

通过ant调用shell脚本执行adb命令

在Hudson或者Jenkins中利用ant的exec 来调用shell命令,通过shell脚本来执行adb shell命令,可以正常执行,不会出现在ant中直接调用adb shell出现的假死情况. 其中shell 脚本也很简单 #!/bin/sh adb root adb shell chmod 777 /system/data/lib adb shell ./system/data/lib/helloworld 可以执行手机端中的程序进行测试.

web服务文件更新自动同步、数据库主从复制、shell脚本实现网站代码备份和mysql备份

基搭建LAMP环境,并实践基于DNS做基于域名的虚拟主机中的环境,重新搭建一个同样的环境 要求: a)实现web服务文件更新的自动同步到另一台机器上 b)数据库实现主从复制 c)通过shell脚本实现网站源代码备份和mysql备份,备份策略包括全量备份.增量备份.差异备份 a,实现web服务文件更新的自动同步到另一台机器上: 1,在httpd服务器上建立基于FQDN的两个虚拟web站点,并创建相关目录. 2,修改测试windows主机的hosts文件,并编辑两个虚拟web站点对应的目录下的ind

[Shell]crontab 执行任务调用shell脚本,相对路径无法找到

问题出现的场景大概就是 1  cron调用一个python脚本 2  python脚本中调用一个shell脚本(对日志分析)获取shell输出然后发送邮件 类似一个监控任务. 直接执行python脚本没有问题,但是写在cron中之后,shell脚本中的相对路径就找不到了,总是提示无法找到某些文件 后来解决的问题就是使用log文件的绝对路径,运行就正常了. google了一些,发现很多人也遇到过类似的问题,可能和cron的机制有关系. 大部分人的问题都是因为环境变量造成的,因为cron是一个独立进

C#程序调用cmd执行命令-MySql备份还原

1.简单实例 //备份还原mysql public static void TestOne() { Process p = new Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.