请启用 Javascript 以查看内容

数据库备份脚本

 ·   ·  ☕ 2 分钟  ·  ✍ CNSRE

数据库备份脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/bash
#以下配置信息请自己修改
mysql_user="backuser" #MySQL备份用户
mysql_password="" #MySQL备份用户的密码
mysql_host=""
mysql_port="3306"
mysql_charset="utf8" #MySQL编码
backup_db_arr=("da1") #要备份的数据库名称,多个用空格分开隔开 如("db1" "db2" "db3")
backup_location=/home/backup/sqlback/recipe-prod #备份数据存放位置,末尾请不要带"/",此项可以保持默认,程序会自动创建文件夹
expire_backup_delete="ON" #是否开启过期备份删除 ON为开启 OFF为关闭
expire_days=3 #过期时间天数 默认为三天,此项只有在expire_backup_delete开启时有效

# 本行开始以下不需要修改
backup_time=`date +%Y%m%d%H%M` #定义备份详细时间
backup_Ymd=`date +%Y-%m-%d` #定义备份目录中的年月日时间
backup_3ago=`date -d '3 days ago' +%Y-%m-%d` #3天之前的日期
backup_dir=$backup_location/$backup_Ymd #备份文件夹全路径
welcome_msg="欢迎使用数据库备份工具!" #欢迎语


echo -e "\033[1;32m$welcome_msg \033[0m"
# 连接到mysql数据库,无法连接则备份退出
mysql -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password <<end
use mysql;
select host,user from user where user='root' and host='localhost';
exit
end

flag=`echo $?`
if [ $flag != "0" ]; then
echo -e "\033[1;31m错误:无法连接mysql服务器!停止备份!\033[0m"
exit
else
echo -e "\033[1;32mMySQL连接成功!请稍候...... \033[0m"


# 判断有没有定义备份的数据库,如果定义则开始备份,否则退出备份
if [ "$backup_db_arr" != "" ];then
for dbname in ${backup_db_arr[@]}
do
echo -e "\033[1;32m数据库 $dbname 开始备份...\033[0m"
`mkdir -p $backup_dir`
`mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password $dbname --default-character-set=$mysql_charset | gzip > $backup_dir/$dbname-$backup_time.sql.gz`
flag=`echo $?`
if [ $flag == "0" ];then
echo -e "\033[1;32m数据库 $dbname 成功备份到 $backup_dir/$dbname-$backup_time.sql.gz \033[0m"
else
echo -e "\033[1;31m数据库 $dbname 备份失败!\033[0m"
fi
done
else
echo -e  "\033[1;31m错误:没有要备份的数据库!停止备份!\033[0m"
exit
fi

# 如果开启了删除过期备份,则进行删除操作
if [ "$expire_backup_delete" == "ON" -a "$backup_location" != "" ];then
`find $backup_location/ -type d -mtime +$expire_days | xargs rm -rf`
echo -e "\033[1;32m过期的备份数据删除完成! \033[0m"
fi
echo -e "\033[1;32m所有数据库备份成功!谢谢! \033[0m"
exit
fi

文章链接
https://www.cnsre.cn/posts/210324144832/

分享

CNSRE
作者
CNSRE
一个📚学习中的👨‍💻SRE运维工程师🚀🚀🚀


目录