1.安装mysqldump(如果备份远程mysql库,本地不用安装mysql 也可以单独使用)
yum -y install holland-mysqldump.noarch
2.编写备份脚本
首先这里我还是进入到/usr/local/shell 目录下编写脚本
vi mysql_backup.sh
#!/bin/bash #备份文件存储的目录 BACKUP_DIR=/data/backup/mysql #以执行的日期作为文件名,以防文件名重复覆盖 DATE=$(date +%Y_%m_%d) #连接mysql用户名、密码、IP、数据库名,请根据自己的自行修改 #用户名 MYSQL_USER=root #密码 MYSQL_PWD=123qweASD. #因为我这是本地备份,就使用localhost HOST=localohost #使用的数据库 DATABASE=backup_test echo "mysql backup start $DATE" #判断一下如果备份的目录不存在,就创建该目录,两种写法都行,目前我把两种方式都列出了,想尝试方式二的把注释放掉即可 #方式一: if [ ! -d $BACKUP_DIR/$DATE ] then mkdir -p $BACKUP_DIR/$DATE fi #方式二 #[ ! -d $BACKUP_DIR/$DATE ] && mkdir -p $BACKUP_DIR/$DATE #执行mysql备份数据库指令 其实最好将此文件进行压缩打包,这里简单保存为一个sql文件 mysqldump -u$MYSQL_USER -p$MYSQL_PWD --host=$HOST $DATABASE > $BACKUP_DIR/$DATE/$DATE.sql #删除5天前的老的备份 find $BACKUP_DIR -mtime +5 -name "*.sql" -exec rm -rf {} ; #解释上面这行命令的含义: #find 是找到命令,找到变量BACKUP_DIR目录下 时间(-mtime) 5天前(+5) ,名字是(-name) 以.sql结尾的("*.sql") #如果找到了的话(-exec),就执行后面的命令,rm -rf 删除 , {} 就是找到的内容。
3.设置定时器
给.sh文件赋予执行权限
chmod +x ./mysql_backup.sh
开始设置定时器
crontab -e
编写定时任务 每天凌晨2点备份
0 2 * * * /usr/local/shell/mysql_backup.sh