通过定时任务实现每天0点整备份数据,并保存最近30天的备份,过期自动删除。
第一步新建 my_dump.cnf 配置文件
my_dump.cnf配置文件用于储存数据库账号密码,在此以root为例,内容如下
[mysqldump] #备份用户 user=root #备份用户密码 password=root
第二部新建脚本文件
内容如下:
#!/bin/bash
DB_NAME='demo1' #要备份的数据库
BACKUP_DIR='/data/backup/mysqldata/' # 备份保存目录
CURRENT_TIME=`date +%Y%m%d%H%M`
FILEPATH=$BACKUP_DIR$DB_NAME'_'$CURRENT_TIME'.sql.gz'
echo '开始导出数据库...'
#defaults-extra-file=/root/my_dump.cnf 第一步的配置文件路径
mysqldump --defaults-extra-file=/root/my_dump.cnf $DB_NAME | gzip > $FILEPATH
#删除30天前的配置文件
find ${BACKUP_DIR} -mtime +30 -name "${DB_NAME}_*.sql.gz" -exec rm -f {} \;
echo '导出成功,文件名为: '$FILEPATH
第三步添加定时任务
执行命令:crontab -e
写入以下内容:
0 0 * * * /data/crontab/database_backup.sh #每天0点0分备份数据库
至此数据库自动备份已配置完成!
注意事项
确认cron任务是启动状态,以Centos7 为例 输入 systemctl status crond 显示绿色状态
输入crontab -l 确认你输入的内容已保存
发表回复