Linux mysql定时自动备份及清理脚本

文章目录

    • 一、创建备份存放的目录
    • 二、备份脚本
    • 三、添加权限
    • 四、添加定时任务
    • 五、定期清理脚本

一、创建备份存放的目录

cd /home
mkdir db_backip

二、备份脚本

你可以把下面这段脚本放到你想放的位置,这里我们就先放到/home下命名为mysql_backup.sh

cd /home
vi mysql_backup.sh

将下面这段脚本拷到mysql_backup.sh中
db_user、db_password、db_name、backup_dir、date等变量根据自己的需求修改。
备份的命名为 数据库名_时间,可以根据自己的需求调整为对应的名字,注意如果命名调整了下面的自动清理脚本也要相应调整

#!/bin/bash
#数据库用户名
db_user=username
#数据库密码
db_password=password
#数据库名称
db_name=datebaseName
#备份存放路径
backup_dir=/home/db_backup
#备份命名所使用的日期格式
date=$(date +%Y%m%d_%H%M%S)
#导出备份
mysqldump -u$db_user -p$db_password $db_name>$backup_dir/$db_name_$date.sql
#对备份进行压缩:
mysqldump -u$db_user -p$db_password $db_name | gzip >$backup_dir/$db_name_$date.sql.gz

三、添加权限

chmod u+x mysql_backup.sh

四、添加定时任务

修改crontab的定时任务配置文件

vi /etc/crontab 

进入编辑页面如下,可以看到注释也很清晰,说明了每一位是对哪一个时间结点进行配置,
这里我的配置是每天三点执行一次

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

  0  3  *  *  *   root     /home/mysql_backup.sh


点击esc输入 :wq 退出保存定时任务就生效了

五、定期清理脚本

如果每次我们只备份不清理的话,那么空间占用就会越来越大,这里我们只保留近7天的备份。
将下面的脚本添加到备份的脚本mysql_backup.sh

#清理7天前的备份
find $backup_dir -name $db_name"*.sql" -type f -mtime +1 -exec rm -rf {} \; > /dev/null 2>&1
find $backup_dir -name $db_name"*.sql.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1

你可能感兴趣的:(mysql)