bash脚本-周末定时备份mysql数据库

1.脚本如下

#usr/bin/sh
#program:用于每周日定时备份全天候mysql文件
#author:sundz
#version:v1 20220521
#定义文件夹和日志文件
date=$(date +%Y%m%d)
log_time=$(date +%H:%M:%S)
backup_floder=/home/aboss/backup/${date}
#mysql_file=mysql_bak_$(date "+%Y_%m_%d")
log_file=/home/aboss/backup/${date}/${date}.log
#检测当天文件夹是否存在
[ ! -d ${backup_floder} ] && mkdir -p ${backup_floder}
#检测当天日志文件是否存在
[ ! -e ${log_file} ] && touch ${log_file}
#检测mysql进程是否存在;全天候A股端口3309
mysql_chk=`ps x | grep 3306 | grep -v 'grep' | wc -l`
if [ "${mysql_chk}" == 1 ]; then
echo "[LOG] ${log_time} check mysql is running" >> ${log_file}
else
echo "[ERROR] ${log_time} check mysql is not running" >> ${log_file}
exit 0
fi
echo "[LOG] ${log_time} check pass" >> ${log_file}
#备份mysql文件,当天文件会被覆盖!!
echo "[LOG] ${log_time} begin backup" >> ${log_file}
cd /home/aboss/mysql/bin
#下一行屏幕不打印的话 加2>>${log_file}
./mysqldump -uroot -p****** -h127.0.0.1 -P3306 --all-databases --flush-privileges --single-transaction --master-data=2 --flush-logs --triggers --routines --events --default-character-set=gbk --hex-blob > all_A_${date}.sql
[ "$?" == 0 ] && echo "[LOG] ${log_time} mysqldmp is done " >> ${log_file} || echo "[ERROR] ${log_time} mysqldmp is wrong " >> ${log_file}
[ "$?" == 0 ] && echo "[LOG] ${log_time} mysqldmp is done " || echo "[ERROR] ${log_time} mysqldmp is wrong "
#压缩拷贝文件
echo "[LOG] ${log_time} begin tar" >> ${log_file}
tar zcvf all_A_${date}.sql.tgz all_A_${date}.sql >> ${log_file} 2>&1
echo "[LOG] ${log_time} over tar" >> ${log_file}
mv all_A_${date}.sql.tgz /home/aboss/backup/${date} 2>>${log_file}
rm all_A_${date}.sql 2>>${log_file}

2.crontab添加定时任务

1.crontab -uaboss -e编辑;相关的配置文件在/var/spool/cron/路径下
每周六9点定时执行,添加如下行:
0 09 * * 6 sh /home/aboss/test.sh
2.service crond restart
3.自动化内容 可以在/var/spool/crond/目录下查看

3.结果

  • 生成备份的日志文件和压缩包
posted @   孙犯困  阅读(256)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示