概述
目的: 定期备份数据库数据, 并且删除过旧数据文件
操作系统: CentOS 7
数据库: Mysql 5.7
工具: crontab(CentOS 7 系统自带)
设置crond服务开机启动
-
查看crond是否开机启动:
systemctl list-unit-files |grep crond -
设置crond开机启动:
systemctl enable crond.service -
关闭crond开机启动:
systemctl disable crond.service
编辑shell脚本 (备份&清理)
#!/bin/bash
#在此设置要备份的数据库名,以TEST为例
DBNAME="TEST"
#备份数据临时存放位置,备份完成之后自动删除.
BACKDIR="/home/root/backup/"
#获取系统时间
DATE=`date +%Y%m%d`
#备份文件名以时间命名
FILENAME=dump_${DATE}.sql
#进入备份目录
cd ${BACKDIR}
#备份数据库并追加日志
mysqldump -uroot -proot --databases TEST > ${BACKDIR}${FILENAME} >> db_backup.log
#删除近7天文件
find ${BACKDIR} -mtime +7 -name "*.sql" -exec rm -rf {} \;
如果保留近30天, 将上文最后一行中的7改为30即可.
上述备份命令为指定数据库名, 数据库全备份, 更多备份选择参照链接:
Mysql官方使用手册
将脚本加入crontab自动执行计划
-
启动crond服务
systmctl start crond -
添加计划
crontab -e -
加入一行:
30 23 * * * : /home/root/backup.sh
保存退出(vim命令)
以上内容表示, 每天晚上11点半, 执行对应路径下的脚本. -
crontab格式介绍
- 分 时 日 月 星期 要运行的命令
- 第1列分钟0~59
- 第2列小时0~23(0表示子夜)
- 第3列日1~31
- 第4列月1~12
- 第5列星期0~7(0和7表示星期天)
- 第6列要运行的命令