51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

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

一、创建备份目录 {#heading-1}

mkdir -p /opt/fit2cloud/db_backup

二、创建备份脚本文件并授权 {#heading-2}

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

三、 编辑备份脚本 {#heading-3}

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`

四、设置定时备份 {#heading-4}

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

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



赞(0)
未经允许不得转载:工具盒子 » 【扩展类】数据库定时备份