MySQL数据库定时自动备份以及nginx日志切割
mysql数据库定时备份
MySQL数据库的备份是非常重要的工作之一,经常备份数据库是一个好习惯,虽然数据库损坏或数据丢失的概率很低,但一旦发生这种事
情,后悔是不堪设想。
首先创建一个文件夹存放备份文件
mkdir /bak
cd /bak
创建并编写shell脚本
vim mysql_bak.sh
#!/bin/bash
bakdir=/bak
today=$(date +%Y%m%d-%H%M%S)
host=localhost
username=root
password=******
#选择数据库,可以多个
databases=(blog)
#daysago=$(date -d "2 minutes ago" +%Y%m%d-%H%M%S)
for database in ${databases[@]}
do
echo "开始备份"$database
mysqldump -h$host -u$username -p$password $database | gzip > $bakdir/$database-$today.sql.gz
echo "成功备份"$databse"到"$bakdir/$database-$today.sql.gz
#if [! -f "$bakdir/$database-$daysago.sql.gz"]; then
#echo "没有要删除的备份文件"
#else
#rm -rf $bakdir/$database-$daysago.sql.gz
find $bakdir -name "*.sql.gz" -type f -mtime +7 -exec rm -f {} \; > /dev/null 2>&1
echo "删除7天前的备份文件"$bakdir/$database-$daysago.sql.gz
#fi
done
使用crontab对该脚本创建计划任务
执行crontab -e添加(每天0点0分备份一次)
0 0 */1 * * /bak/mysql_bak.sh >> /bak/cron_mysql.txt
nginx访问日志切割
nginx所有的日志都会输出到一个文件中,随着时间的过去,那个文件变得越来越大,对我们分析日志非常不方便,所有这里我们用脚本来
定时分割日志
创建并编写shell脚本
mkdir /etc/nginx/logs
cd /etc/nginx/logs
vim nginx_log.sh
#!/bin/bash
#日志路径
LOGS_PATH=/etc/nginx/logs
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log
## 向 Nginx 主进程发送 USR1 信号。USR1 信号是重新打开日志文件
kill -USR1 $(cat /run/nginx.pid)
echo "备份access_"${YESTERDAY}".log成功"
find $LOGS_PATH -name "*.log" -type f -mtime +7 -exec rm -f {} \; > /dev/null 2>&1
echo "成功删除7天前的备份文件"$LOGS_PATH/access_${YESTERDAY}.log
使用crontab对该脚本创建计划任务
执行crontab -e添加
0 0 * * * bash /etc/nginx/logs/nginx_log.sh >> /bak/cron_nginx.txt