今天闲来无事,研究了定时备份mysql数据库,抛去那些复杂的流程,还是很简单的!
1、创建备份目录
- cd /home
- mkdir backup
2、创建备份Shell脚本:
-
vim dbback.sh
-
写入内容:
#!/bin/bash
mysqldump -uusername -ppassword DatabaseName > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql1或者对备份进行压缩:
#!/bin/bash
mysqldump -uusername -ppassword DatabaseName | gzip > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz
注意:
把 username 替换为实际的用户名;
把 password 替换为实际的密码;
把 DatabaseName 替换为实际的数据库名;
3、添加可执行权限:
chmod u+x dbback.sh
添加可执行权限之后先执行一下,看看脚本有没有错误,能不能正常使用;
./dbback.sh
这时,不出意外,/home/backup的目录下就有了备份文件
4、添加计划任务
添加计划任务
执行命令:
- crontab -e
这时就像使用vi编辑器一样,可以对计划任务进行编辑。
输入以下内容并保存:
- */1 * * * * /home/backup/dbback.sh
具体是什么意思呢?
意思是每一分钟执行一次shell脚本
也可以指定其他时间,依照自己的需求来~
5、测试任务是否执行
很简单,我们就执行几次“ls”命令,看看一分钟过后文件有没有被创建就可以了!
如果任务执行失败了,可以通过以下命令查看任务日志:
6、添加删除数据功能
在dbback.sh 脚本文件中添加一下命令:
#删除一分钟之前的备份文件
- find /home/backup -name DatabaseName “*.sql.gz” -type f -mmin +1
-exec rm -rf {} ; > /dev/null 2>&1
说明:
-type f 表示查找普通类型的文件,f表示普通文件。
-mtime +7 按照文件的更改时间来查找文件,+7表示文件更改时间距现在7天以前;如果是 -mmin +7表示文件更改时间距现在7分钟以前。
-exec rm {} ; 表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个,最后是一个分号。
/dev/null 2>&1 把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面;其中的&表示让该命令在后台执行。