使用场景
需要对数据库每天零晨3点进行备份,以db+当天日期.dump作为文件名,且对历史备份文件只保留最多十天,防止磁盘不足。
当为非云服务器或物理机场景下,只能用最原始备份方案。
制做备份脚本
创建脚本文件:/root/bak/bak.sh
#!/bin/sh
# 数据库信息
DB_USER="root"
DB_PASS="xxx"
DB_HOST="localhost"
DB_NAME="smart"
# mysql命令路径
BIN_DIR="/usr/bin"
#备份文件存放目录
BCK_DIR="/root/bak"
DATE=`date +%F`
TIME=`date "+%Y-%m-%d %H:%M:%S "`
filePath="./"
#保留多少天的备份文件
day=10
echo $TIME "bak db:" $BCK_DIR/db_$DATE.dump
#导出数据
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME > $BCK_DIR/db_$DATE.dump
echo "find $filePath -mtime +$day -name db_*.dump | xargs rm -rvf"
#删除N天前的文件(避免磁盘不足)
find -mtime +$day -name "db_*.dump" | xargs rm -rvf;
为linux添加定时任务执行sh
2.1 执行命令:
#编辑当前用户任务表
hushow@hushow-pc:~$ crontab -e
2.2 添加定时任务表达式,保存
#添加表达式到当前用户任务表中
0 3 * * * /root/bak/bak.sh >> /root/bak/bak.log
2.3 查看执行日志
hushow@hushow-pc:~$ less /root/bak/bak.log