一、创建备份目录 {#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