数据库备份案例
# 需求分析
- 每日 2:10 备份数据库 myDB 到 /data/backup/db
- 备份开始和备份结束都可以给出相应的提示信息
- 备份后的文件要求以备份时间为文件名,并打包成.tar.gz形式
- 如 2022-02-20_210201.tag.gz
- 在备份的同时,检查是否有10天前备份的数据库文件,如果有将其删除
# 思路
- 在/usr/sbin下编写脚本:mysql_db_backup.sh
- 脚本将 mysql中的myDB备份到/data/backup/db文件夹下
- 将脚本设置在crond中执行
# 实现
vim /usr/sbin/mysql_db_backup.sh
1
编辑 mysql_db_backup.sh
echo "start"
echo "backup path $BACKUP/$DATETIME.tar.gz"
# host
HOST=localhost
DB_USER=root
DB_PWD=123456
DATABASE=myDB
# 如果备份的路径文件夹存在,就使用,否则创建
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
# 执行mysql的备份数据库命令
mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
# 打包备份文件
cd $BACKUP
tar -zcvf $DATETIME.tag.gz $DATETIME
# 删除临时目录
rm -rf $BACKUP/$DATETIME
# 删除10天的备份文件
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "finish"
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
- 配置crontb
10 2 * * * /usr/sbin/mysql_db_backup.sh
1
Last Updated: 2022/03/20, 10:04:55