zoukankan      html  css  js  c++  java
  • shell脚本记录

    1.数据库备份

    使用场景:mysql数据库中有多个数据库要备份,排除系统的库

    原代码:

    #!/bin/bash
    #备份mysql数据库,mysql系统自带的数据库除外
    #创建相关文件夹
    db_user="root"
    db_path=/usr/bin
    time=`date +%Y%m%d%H%M%S`
    backup_dir="/home/mysqlbak/$time"
    mkdir -p $backup_dir
    #创建日志文件记录开始时间
    echo -n "开始:" >>/home/mysqlbak/mysqlbak.log
    echo `date` >>/home/mysqlbak/mysqlbak.log
    #开始备份
    mysql -uroot -e "show databases;"|awk '{print $1}'|egrep -vw "mysql|Database|information_schema|performance_schema|test|sys" > ./databases_info
    for databaseName in $(cat databases_info)
    do
            $db_path/mysqldump -u$db_user $databaseName > $backup_dir/$databaseName.sql
    #       find $backup_dir -type f -mtime +8 -exec rm -rf {} ;
    done
    #记录备份结束时间
    echo -n "结束:" >>/home/mysqlbak/mysqlbak.log
    echo `date` >>/home/mysqlbak/mysqlbak.log
     
     
    2.数据库主从恢复,其中ip为主库ip,ip2为从库ip

    #!/bin/bash
    #在mysql数据同步后,开启主从,用于同步异常后恢复主从
    ip=172.29.1.33
    ip2=172.29.1.34
    user=slave
    password=*********
    #得到对应主机mysql的master信息
    file=`mysql -uroot -h$ip -e "show master status"|grep mysql|awk '{print $1}'`
    position=`mysql -uroot -h$ip -e "show master status"|grep mysql|awk '{print $2}'`


    mysql -uroot -h$ip2 <<EOF
    stop slave;
    reset slave all;
    change master to master_host="$ip",master_user="$user",master_password="$password",master_port=3306,master_log_file="$file",master_log_pos=$position,master_connect_retry=30;
    start slave;
    EOF

    3.升级nginx,注意参数个数,要输入最新nginx的下载地址

    #!/bin/bash
    #用法:"./update_nginx.sh 最新nginx的官网url链接"
    #说明:下载nginx原文件,编译后把新的二进制nginx文件拷贝到老的目录下,拷贝前备份,用于升级nginx,之后可以直接重启升级,也可以采用平滑模式升级
    nginx_url=$1
    nginx_path='/usr/local/'
    file_name=`echo $nginx_url|awk -F/ '{print$5}'|awk -F".t" '{print$1}'`
    #获取编译模块的参数
    nginx -V &>$nginx_path/temp
    arguments=`cat $nginx_path/temp|awk -F"arguments:" '{print$2}'|grep -v ^$`
    #arguments="--prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module"
    #官网下载对应软件包,有就跳过
    [ -f ${nginx_path}${file_name}.tar.gz ] || `which wget` $nginx_url -P $nginx_path
    #解压软件包
    `which tar` zxf ${nginx_path}${file_name}.tar.gz -C $nginx_path
    #编译+make(不要make install)
    cd ${nginx_path}${file_name}/
    ./configure $arguments
    make
    #备份原始二进制nginx
    cd ${nginx_path}nginx/sbin/
    mv nginx nginx$(date +%Y%m%d)
    #拷贝新的二进制nginx到对应目录
    cp ${nginx_path}${file_name}/objs/nginx ${nginx_path}nginx/sbin/

    4.nginx日志切割

    #!/bin/bash
    #日志路径
    logs_path="/usr/local/nginx/logs/"
    #获取nginx进程pid
    nginx_pid="/usr/local/nginx/logs/nginx.pid"
    /usr/bin/mv ${logs_path}access.log   ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log
    #重新打开日志文件
    kill -USR1  `cat ${nginx_pid}`
  • 相关阅读:
    django-rest-framework之基于类的视图
    django-rest-framework之请求与响应
    django-rest-framework之序列化
    Linux上安装二进制文件MySQL详解
    django-rest-framework快速入门
    初识RESTful
    layer弹出层详解
    Jquery.validate.js表单验证
    实习总结
    常见的攻击手段及其防御方式
  • 原文地址:https://www.cnblogs.com/szy2018/p/11310619.html
Copyright © 2011-2022 走看看