企业生产环境Shell脚本案例解析

1、MySQL数据库备份脚本,下面的脚本是Mysql全量备份+异地备份

一般Mysql数据库备份会采用在MYSQL从库上执行全量备份+增量备份方式。在从库备份避免Mysql主库备份的时候锁表造成业务影响。


  1. shell> vim db_backup.sh 
  2.  
  3. #!/bin/bash   
  4. # description:  MySQL buckup shell script   
  5. # author:       magedu.com 
  6. # 192.168.10.10 为专门的备份服务器,需要做一下服务器之间免密码登录 
  7.  
  8. #备份的数据库名 
  9. DATABASES=( 
  10.             "magedu01" 
  11.             "magedu02"                     
  12. USER="root" 
  13. PASSWORD="dbpwd123" 
  14.  
  15. MAIL="magedu@gmail.com"  
  16. BACKUP_DIR=/data/backup 
  17. LOGFILE=/data/backup/data_backup.log  
  18. DATE=`date +%Y%m%d_%H%M` 
  19.  
  20. cd $BACKUP_DIR 
  21. #开始备份之前,将备份信息头写入日记文件    
  22. echo "——————–" >> $LOGFILE    
  23. echo "BACKUP DATE:" $(date +"%y-%m-%d %H:%M:%S") >> $LOGFILE    
  24. echo "——————-" >> $LOGFILE 
  25.  
  26. for DATABASE in ${DATABASES};do 
  27.   /usr/local/mysql/bin/mysqldump -u$USER -p$PASSWORD –events  -R –opt  $DATABASE |gzip >${BACKUP_DIR}\/${DATABASE}_${DATE}.sql.gz 
  28.   if [ $? == 0 ];then 
  29.     echo "$DATE–$DATABASE is backup succeed" >> $LOGFILE 
  30.   else 
  31.     echo "Database Backup Fail!" >> $LOGFILE    
  32. done 
  33. #判断数据库备份是否全部成功,全部成功就同步到异地备份f服务器 
  34. if [ $? == 0 ];then 
  35.   /usr/bin/rsync -zrtopg   –delete  /data/backup/* root@192.168.10.10:/data/backup/  >/dev/null 2>&1 
  36. else 
  37.   echo "Database Backup Fail!" >> $LOGFILE    
  38.   #备份失败后向管理者发送邮件提醒 
  39.   mail -s "database Daily Backup Fail!" $MAIL    
  40. fi 
  41.  
  42. #删除30天以上的备份文件   
  43. find $BACKUP_DIR  -type f -mtime +30 –name "*.gz" –exec rm -f {} \; 

2、Nginx负载均衡服务器上监控Nginx进程的脚本

企业负载均衡层如果用到Nginx+Keepalived架构,而Keepalived无法进行Nginx服务的实时切换,所以这里用了一个监控脚本check_nginx_pid.sh,每隔5秒就监控一次Nginx的运行状态,如果发现有问题就关闭本机的Keepalived程序,让VIP切换到从Nginx负载均衡器上。


  1. shell> vim check_nginx_pid.sh 
  2.  
  3. #!/bin/bash 
  4. while : 
  5. do 
  6. nginxpid='ps -C nginx –no-header | wc -l' 
  7. if [$nginxpid -eq 0 ];then 
  8. ulimit -SHn 65535 
  9. /usr/local/nginx/sbin/nginx 
  10. sleep 5 
  11.  nginxpid='ps -C nginx –no-header | wc -l' 
  12.  if [$nginxpid -eq 0 ];then 
  13.  /etc/init.d/keepalived stop 
  14.  fi 
  15. fi 
  16. sleep 5 
  17. done 

3、MySQL主从监控邮件报警脚本

  • 此脚本应该能适应各种各样不同的内外网环境。
  • 让脚本也顺便监控下MySQL是否正常运行。
  • Slave机器的IO和SQL状态都必须为YES,缺一不可,这里用到了多重条件判断-a。 
【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章