zoukankan      html  css  js  c++  java
  • 升级数据库脚本(加入事务)

    #!/bin/bash
    
    #ip=x.x.x.x
    #pass='x.x.x.x'
    pass='x.x.x.x'
    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 "33[31m$1 $faild33[0m" && exit 1
        else
            echo -e "33[32m$1 $ok33[0m"
        fi
    }
    
    #usage $1 is remote ip , $2 is sql file
    usage() {
    if [ $# -lt 2 ];then
        echo -e "33[31m usage: sh $0 ip sql_file33[0m" 
        echo -e "33[31m example: sh $0 172.16.160.99 v1.0.0-v1.1.0.txt 33[0m" 
        echo -e "33[31m explain: 升级主机要配置ssh免密,可以使用auto_ssh.sh 33[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 '1istart 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 "33[31m $db_path/$2 file no exist ! 33[0m" && exit 1
        fi
    }
    
    #main function
    main() {
        usage $1 $2
        backup_db $1
        add_transaction $1 $2
        import_sql $1 $2
    }
    
    main $1 $2
  • 相关阅读:
    面向对象一
    模块二:os模块、sys模块、json模块、pickle模块,包
    模块一:时间模块、random模块、hashlib模块、日志模块
    异常处理、迭代器、推导式、生成器
    有参装饰器
    匿名函数、高阶函数
    装饰器
    函数对象、函数嵌套、闭包函数
    名称空间与作用域
    day17 django 相关
  • 原文地址:https://www.cnblogs.com/wangmo/p/9039823.html
Copyright © 2011-2022 走看看