1.创建备份文件夹的脚本
将以下的脚本写入1.sh文件夹
basis=/home/dbbackup/backup
daily=/home/dbbackup/backup/daily
if [ ! -d "$basis" ]; then
echo "创建文件夹成功,全量备份目录:$basis"
mkdir $basis
else
echo "文件夹已存在,全量备份目录:$basis"
fi
if [ ! -d "$daily" ]; then
echo "创建文件夹成功,目录:$daily"
mkdir $daily
else
echo "文件夹已存在,增量备份目录:$daily"
fi
chmod a+x /home/dbbackup/fullbak02.sh
chmod 777 /home/dbbackup/fullbak02.sh
chmod a+x /home/dbbackup/binlogbak03.sh
chmod 777 /home/dbbackup/binlogbak03.sh
2.数据库备份为sql文件的脚本
这里主要用到的是mysqldump的命令,将以下的脚本写入2.sh脚本
#!/bin/bash
BakDir=/home/dbbackup/backup #备份文件保存目录
LogFile=/home/dbbackup/backup/bak.log #备份日志文件
Date=`date +%Y%m%d%H%M%S`
Begin=`date +"%Y年%m月%d日 %H:%M:%S"`
cd $BakDir
DumpFile=$Date.sql
GZDumpFile=$Date.sql.tar
/usr/bin/mysqldump -uroot -h主机地址 --port=mysql端口 -pmysql秘密 --quick --all-databases --flush-logs --delete-master-logs --single-transaction > $DumpFile
/bin/tar czvf $GZDumpFile $DumpFile
/bin/rm $DumpFile
count=$(ls -l *.tar |wc -l)
if [ $count -ge 3 ]
then
file=$(ls -l *.tar |awk '{print $9}'|awk 'NR==1')
rm -f $file
fi
Last=`date +"%Y年%m月%d日 %H:%M:%S"`
echo 开始:$Begin 结束:$Last $GZDumpFile succ >> $LogFile
3.将备份的历史记录循环的删除
将以下的代码写入3.sh脚本
find /home/dbbackup/backup -name "*.tar" -mtime +4 -exec rm -rf {} \; > /dev/null 2>&1
4.用crontab自动执行以上的脚本
在crontab中写入以下的代码。
crontab的使用请看本人这篇文章->(https://blog.csdn.net/weixin_41806489/article/details/104860317)
0 9 * * * /home/dbbackup/1.sh
0 9 * * * /home/dbbackup/2.sh
0 9 * * * /home/dbbackup/3.sh