Nginx日志切割
vim /data/cutlog.sh
#!/bin/bash
BASE_PATH='/data/nginx/logs' ##你的nginx日志目录
LOG_PATH=$(date -d yesterday +"%Y%m")
DAY=$(date -d yesterday +"%d")
mkdir -p $BASE_PATH/$LOG_PATH
mv $BASE_PATH/access.log $BASE_PATH/$LOG_PATH/access_$DAY.log
kill -USR1 `cat /data/nginx/logs/nginx.pid` ##你的nginx.pid文件存放位置
Nginx access.log 日志分析脚本
vim /data/access.sh
#!/bin/bash
BASE_PATH='/data/nginx/logs'
LOG_PATH=$(date -d yesterday +"%Y%m")
DAY=$(date -d yesterday +"%d")
SJ=`date -d "yesterday" "+%d/%b/%Y"`
date -d yesterday >> /home/shuju/shuju_$day.txt
#日UV
awk '{print $1}' $BASE_PATH/$LOG_PATH/access_$DAY.log|sort | uniq -c |wc -l >> /home/shuju/shuju_$DAY.txt
#日PV
awk '{print $1}' $BASE_PATH/$LOG_PATH/access_$DAY.log|wc -l >> /home/shuju/shuju_$DAY.txt
##峰值时间段
awk '{print $4}' $BASE_PATH/$LOG_PATH/access_$DAY.log| grep "$SJ" |cut -c 14-15|sort|uniq -c|sort -nr|head -n 24 >> /home/shuju/shuju_$DAY.txt
##访问频率前5的Url
awk '{print $7}' $BASE_PATH/$LOG_PATH/access_$DAY.log| sort | uniq -c | sort -nr | head -n 5 >> /home/shuju/shuju_$DAY.txt
Mysql数据备份脚本
vim /data/mysqlbackup.sh
#!/bin/bash
#
# 备份目录
BAK_DIR=/data/mysqldatabases/mysql_backup
# 备份日期
DATE_TIME=`date +%Y%m%d`
/usr/local/mysql/bin/mysqldump --single-transaction --all-databases --master-data=2 > $BAK_DIR/mysql_backup-${DATE_TIME}.sql
# 备份后进行压缩归档,压缩后删除原文件
cd $BAK_DIR && tar Jcf mysql_backup-${DATE_TIME}.tar.xz mysql_backup-${DATE_TIME}.sql --remove
# 保留最近15天的备份数据
find $BAK_DIR -type f -name "mysql_backup*.tar.xz" -mtime +15 -exec rm -f {} \;
常用的几种执行定时任务方式 Crontab
crontab -e
0 0 * * * /bin/bash /data/mysqlbackup.sh ##每天凌晨执行一次
0 */2 * * * /bin/bash ##每两个小时执行一次
0 9 * * 1-5 /bin/bash ##每周一到周五的上午9点执行
流水文档 仅做参考
如有不当 无需指正
脚本简易 生活不易
做好自己 莫管他人
本文介绍了一种自动化处理Nginx日志和Mysql数据库备份的方法,通过Shell脚本实现Nginx日志的切割、分析及Mysql的定期备份,确保数据的安全性和日志的有效管理。
373

被折叠的 条评论
为什么被折叠?



