【mysql】mysql 自动备份脚本

#!/bin/bash
. /etc/profile
#. ~/.bash_profile

#备份路径
BACKUP=/mnt/mysql_bak
#当前时间
DATETIME=$(date +%Y-%m-%d)
#DATETIME=$(date +%Y-%m-%d-%H-%M-%S)

echo "===备份开始==="
echo "备份文件存放于${BACKUP}/$DATETIME"
#数据库地址
HOST=xxx.xxx.xxx.xxx
#数据库用户名
DB_USER=root
#数据库密码
DB_PW=xxxxxx
#创建备份目录
[ ! -d "${BACKUP}/$DATETIME" ] && mkdir -p "${BACKUP}/$DATETIME"

#后台系统数据库
all=' xxx xxx xxx xxx '
for DATABASE in $all
do
echo $DATABASE-$DATETIME
#直接导出zip压缩文件,其中dump的文件不为sql格式
#mysqldump -u${DB_USER} -p${DB_PW} --single-transaction --host=$HOST -q -R --databases $DATABASE | gzip > ${BACKUP}/$DATETIME/$DATABASE.zip
#导出sql文件,后续需要压缩
mysqldump -h xxx.xxx.xxx.xxx  -u${DB_USER} -p${DB_PW}  ${DATABASE} >${BACKUP}/$DATETIME/$DATABASE-$DATETIME.sql

echo "===导出成功,开始压缩==="
#压缩成tar.gz包
cd $BACKUP/$DATETIME/
tar -zcvf $DATABASE-$DATETIME.tar.gz $DATABASE-$DATETIME.sql

#备份到服务器B
#sshpass -p 密码 scp $DATABASE-$DATETIME.sql 用户名@10.3.242.47:/另一台服务器的备份目录/

#删除备份文件
rm -rf ${BACKUP}/$DATETIME/$DATABASE-$DATETIME.sql
done

#删除1天前备份的数据,可以自行更改
find $BACKUP -mtime +1 -name "2021*" -exec rm -rf {} \;
echo "===数据库备份到服务器成功===" 

xxx为变量根据实际情况替换

存在问题:

备份没有循环机制,备份完成一个库之后会接着压缩、删除原文件,本脚本无法做到把所有的库备份完成之后统一压缩并删除,后续还需改进

配置定时任务

crontab -e

上一篇:PRCD-1120 : The resource for database racpdb could not be found.PRCR-1001 : Resource ora.racpdb.db d


下一篇:IT兄弟连 HTML5教程 HTML5的曲折发展过程 HTML5的诞生