Linux系统中进行Mysql自动备份
一、创建备份存放的目录
cd /home
mkdir db_back
二、备份脚本
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
#清理7天前的备份
find "$backup_dir" -name "*.sql" -type f -mtime +7 -exec rm -f {} \;
find "$backup_dir" -name "*.sql.gz" -type f -mtime +7 -exec rm -f {} \;
三、添加权限
chmod u+x mysql_backup.sh
四、添加定时任务
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 退出保存定时任务即可生效