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}`
posted @ 2019-08-06 17:42  水中鱼2018  阅读(167)  评论(0编辑  收藏  举报