CentOS5.7 下mysql5.7自动备份数据脚本
mysql5.7自动备份数据库脚本
1.root用户下 用cd命令进入到想要的位置创建一个脚文文件:
// 创建脚本命令
vim backup.sh
vim 脚本名.sh
#!/bin/bash
source /etc/profile #加载系统环境变量
source ~/.bash_profile #加载用户环境变量
set -o nounset #引用未初始化变量时退出
#set -o errexit #执行shell命令遇到错误时退出
user="root" #数据库用户名
password="123456" #数据库密码
host="localhost" #指向本地主机
port="3306" #端口号
#需备份的数据库,数组
db=("sys") #有多个数据库就在("mysql" "sys")中添加
mysql_path="/usr/local/mysql5.7" #mysql的路径
backup_path="${mysql_path}/backup" #备份路径
history="${backup_path}/history" #用于存放历史数据库路径
date=$(date +%Y-%m-%d_%H-%M-%S) #时间
#day=7 #备份7天数据需要就去掉day前面的#
backup_log="${mysql_path}/backup.log" #创建一个log文件存放结果
echo "-----------------"$(date +%F%r)"操作开始--------------------------------"
#建立备份目录
if [ ! -e $backup_path ];then
mkdir -p $backup_path
fi
if [ ! -e $history ];then
mkdir -p $history
fi
#删除以前备份
#find $backup_path -type f -mtime +$day -exec rm -rf {} \; > /dev/null 2>&1
mv /usr/local/mysql5.7/backup/* /usr/local/mysql5.7/backup/history #将之前备份的数据库
放入history文件下
echo "开始备份数据库:${db[*]}"
#备份并压缩
backup_sql(){
dbname=$1
backup_name="${dbname}_${date}.sql"
#-R备份存储过程,函数,触发器
mysqldump -h $host -P $port -u $user -p$password $lock --default-character-set=utf8 --flush-logs -R $dbname > $backup_path/$backup_name
if [[ $? == 0 ]];then
cd $backup_path
tar -zcpvf $backup_name.tar.gz $backup_name
size=$(du $backup_name.tar.gz -sh | awk '{print $1}')
rm -rf $backup_name
echo "$date 备份 $dbname($size) 成功 "
else
cd $backup_path
rm -rf $backup_name
echo "$date 备份 $dbname 失败 "
fi
}
#循环备份
length=${#db[@]}
for (( i = 0; i < $length; i++ )); do
backup_sql ${db[$i]} >> $backup_log 2>&1
done
echo "备份结束,结果查看 $backup_log"
du $backup_path/*$date* -sh | awk '{print "文件:" $2 ",大小:" $1}'
echo "-----------------"$(date +%F%r)"操作结束--------------------------------"
2.脚本文件添加执行权限
chmod +x backup.sh
3.测试执行脚本文件
./backup.sh
4.测试没有问题添加计划任务
crontab -e 创建任务
01 00 */1 * * /usr/local/mysql5.7/backup.sh #每天00:01分备份数据库
/usr/local/mysql5.7/backup.sh 为脚本所在地址
5 .查看任务
crontab -l 查看所有的计划任务
本文来自博客园,作者:西北后生,转载请注明原文链接:https://www.cnblogs.com/tianyuanblog/p/17394407.html