MySQL定时自动备份及自动删除老的备份

1.背景       目前接触的项目中,发现大部分项目开发环境和测试环境的数据库都没有自动备份,如果误删可能导致一系列问题,虽然有些项目有数据迁移工具,但是迁移工具里面仅仅包含种子数据,对于开发测试来说,最重要的是已产生的数据,项目复杂程度不同,重新造数据可能费时费力,故分享下自动备份(含仅保留最近10天的备份,防止备份文件无限增大)


2.方式

2..1 关于mysql备份,本文使用mysqldump实现,由于使用到了mysqldump,故需要在mysql数据库所在的服务器执行

2.2 新建一个备份的shell文件:touch /home/cap.backup/referral.db.backup.sh,然后vi /home/cap.backup/referral.db.backup.sh 按i进入编辑写入下述内容(路径及名称根据项目自己指定,mysqldump命令执行时,目录可能不同,具体根据安装时确定,本文示例在:/usr/bin/mysqldump 可执行

 

#!/bin/bash
 
#1.数据库信息
db_user="root"
db_passwd="Ben@123"
db_name="referral"
db_backpath="/home/cap.backup/$db_name.dbbackup/"
 
#2.处理备份路径及备份时间
echo "ready to backup database, the folder is $db_backpath"
mkdir $db_backpath -p && cd $db_backpath
backup_time=$(date "+%Y%m%d-%H%M")
 
#3.执行mysql备份
/usr/bin/mysqldump -u$db_user -p$db_passwd $db_name  > "$db_backpath/$db_name"-"$backup_time.sql"
echo "database $db_name backup success"
 
#删掉当前目录10天之前的备份文件
find . -mtime +10  -name "*.sql" -exec rm -rvf {} \;

 

2.3 对此 referral.db.backup.sh 赋予执行权限,方可执行,可使用chmod命令:

chmod +x /home/cap.backup/referral.db.backup.sh #或者 chmod 777 /home/cap.backup/referral.db.backup.sh

2.4 使用 crontab -e 命令,在打开的文件中,按 i 插入下述命令(以下)

 

#每天早上5点10分执行一次cap_referral库备份
10 05 * * * /[/color][color=#000]home/cap.backup/referral.db.backup.sh[/color][color=#000]
#每天早上5点15分执行一次cap库备份
15 05 * * * [/color][color=#000][color=#000]/[/color][/color][color=#000]home/cap.backup/referral.db.backup.sh[/color][color=#000]

 

附:一般不需要重启crond服务,如果不执行的话,可以尝试手工重启下crond服务:service crond restart  或者  /sbin/service crond restart


附:如果要验证编写的脚本,可以手工执行下referral.db.backup.sh,看是否会产生备份文件





关于crondtab实现定时执行的常规使用



#进入 crontab 定时任务编辑界面:
#crontab -e

#每分钟执行一次备份脚本:
#* * * * * sh /home/cap.backup/referral.db.backup.sh

#每五分钟执行 :
#*/5 * * * * sh /home/cap.backup/referral.db.backup.sh

#每小时执行:
#0 * * * * sh /home/cap.backup/referral.db.backup.sh

#每天执行:
#0 0 * * * sh /home/cap.backup/referral.db.backup.sh

#每周执行:
#0 0 * * 0 sh /home/cap.backup/referral.db.backup.sh

#每月执行:
#0 0 1 * * sh /home/cap.backup/referral.db.backup.sh

#每年执行:
#0 0 1 1 * sh /home/cap.backup/referral.db.backup.sh

 

posted @ 2022-10-13 11:36  刘小吉  阅读(591)  评论(0编辑  收藏  举报