定时备份mysql某库数据
场景
需要对线上的数据库中重要数据进行备份。有几点要求
1.需要每天凌晨12:10备份[这个可以使用cron],备份数据库ft到/home/backup/db下
2.备份后的文件要求以备份时间为文件名,并打包成.tar.gz的形式,比如2020-10-23.tar.gz
3.在备份的同时,检查是否有30天前备份的数据库文件,如果有将其删除
脚本准备
mysql_bak.sh
#!/bin/bash
:<<!
1.每天凌晨2:10备份cron,数据库xkes到/home/backup/db下
2.备份后的文件要求以备份时间为文件名,并打包成.tar.gz的形式,比如2020-10-23.tar.gz
3.在备份的同时,检查是否有30天前备份的数据库文件,如果有将其删除
!
backup_url=/home/backup/db
backup_file_name=$(date +"%Y-%m-%d")
echo "=======开始备份的时间:$backup_file_name======="
echo "=======此次备份的文件路径是:$backup_url/$backup_file_name.tar.gz======="
host=localhost
port=3307
db_user=root
db_pwd=root
database=ft
# 如果备份的文件路径存在就不创建,不存在则创建
[ ! -d $backup_url/$backup_file_name ] && mkdir -p $backup_url/$backup_file_name
# 执行mysql的备份数据库命令
mysqldump -u $db_user -p$db_pwd -d $database --port $port --host $host > $backup_url/$backup_file_name/$backup_file_name.sql
# 进入到备份的路径
cd $backup_url
# 将$backup_file_name打包
tar -zcvf $backup_file_name.tar.gz $backup_file_name
# 删除$backup_file_name目录
rm -rf $backup_url/$backup_file_name
# 删除30天前的备份
find $backup_url -mtime +30 -name "*.tar.gz" -exec rm -rf {} \;
echo "=======备份文件成功,备份结束========"
授予脚本可执行权限
root@5beac1d30f6c:/home# chmod 744 mysql_bak.sh