【扩展类】数据库定时备份


飞致云 发布于 2023-05-05 / 326 阅读 / 0 评论 /
基于 linux 虚拟机的 crontab,定时执行脚本备份数据库。

一、创建备份目录

mkdir -p /opt/fit2cloud/db_backup

二、创建备份脚本文件并授权

touch /opt/fit2cloud/db_backup/f2c_backup.sh
chmod +x /opt/fit2cloud/db_backup/f2c_backup.sh

三、 编辑备份脚本

vi /opt/fit2cloud/db_backup/f2c_backup.sh
#!/bin/sh
#备份 ce 数据库 ,打成tar包,并清理旧的备份
#最多存放最近 7 天备份文件
#backupDir 为备份目录
#每天晚上 11:30 执行备份
#Usage:
#bash f2c_backup.sh

#设置 mysql 的登录用户名和密码
mysql_user="root"
mysql_password="xxxxx"
mysql_host="xxxxx"
mysql_port="xxxxx"

#变量定义
LOG=/var/log/f2c-db-backup.log
backupDir=/opt/fit2cloud/db_backup/backup/

#检测备份目录是否存在
if [ ! -d $backupDir ];then
  mkdir -p $backupDir
fi

currentTime=`date +%Y%m%d%H%M`
ce_backupTarFileName=ce-db-backup-$currentTime.tar
ce_dumpFilePath=ce-db-backup-$currentTime.sql

#开始执行备份
echo `date "+%Y-%m-%d %H:%M:%S"`":-------------------------------------------------" >> $LOG
echo `date "+%Y-%m-%d %H:%M:%S"`": Start backup..." >> $LOG
cd $backupDir

#docker 部署 mysql (这里默认数据库名称是 ce)
docker exec mysql bash -c "/usr/bin/mysqldump --default-character-set=utf8mb4 -u$mysql_user -p$mysql_password -R --databases ce" > ce.sql
#如果数据库采用单独部署方式,请注释上一行命令,打开下一行命令
#/usr/bin/mysqldump --default-character-set=utf8mb4 -u$mysql_user -p$mysql_password ce > ce.sql

#上传最新的数据库备份文件到腾讯云存储
#/usr/bin/coscmd upload ./ce.sql f2c-east-partner-wiki/lite12.5/

#修改文件名称
mv ce.sql $ce_dumpFilePath

#压缩文件,减少磁盘占用
tar -cvf  $ce_backupTarFileName $ce_dumpFilePath >/dev/null 2>&1
rm -rf $ce_dumpFilePath
echo `date "+%Y-%m-%d %H:%M:%S"`": End backup..." >> $LOG
echo `date "+%Y-%m-%d %H:%M:%S"`": Local backup"`du -sh $backupDir` >>$LOG

#备份文件本机保留天数
keepBackupNum=7
ceBackupNum=`ls -lrt $backupDir | grep ce | wc -l`

#删除历史备份文件
if [ $ceBackupNum -gt $keepBackupNum ];then
  ls -lrt | grep ce | awk '{print $9}' | head -n 1 | xargs rm -rf
fi

四、设置定时备份

设置每天晚上 23:30 定时执行备份脚本。

echo "30 23 * * * root /opt/fit2cloud/dbbackup/f2c_backup.sh" >> /etc/crontab
systemctl restart crond.service



是否对你有帮助?