一个项目的基础便是数据库,但是可能因为某些原因会导致数据丢失,或数据库结构变化,严重一点的或造成数据库删除。为了以防万一,这时候就需要我们定时进行数据库备份,但是如果人来操作的话会是一个比较麻烦的工程,这时我们可以使用mysqldump写个脚本,由Linux的crontab来定时执行。下面看看具体操作过程。
假如在我的数据库中有一个emp的数据库。
1.在linux系统中自定义一个文件夹,在我的服务器上我放在了/zhb/backup
2.在/zhb/backup下面建一个bkemp.sh的脚本文件
3.使用vi命令 vi ./bkemp.sh 写入脚本
代码语言:txt复制#!/bin/bash
mysqldump -uusername -ppassword emp> /home/backup/emp$_(date %Y%m%d_%H%M%S).sql
#!/bin/bash
mysqldump -uusername -ppassword emp | gzip > /home/backup/emp$_(date %Y%m%d_%H%M%S).sql.gz
上面的一句是生成一个sql文件,下面一句是生一个sql的压缩包
4.给脚本文件授权:chmod 777 bkemp.sh
5.输入命令 crontab -e ,这时后会进入一个和vi编辑器一样的界面,输入
代码语言:txt复制*/1 * * * *
上面这行代表每分钟执行一次。
等几分钟我们来看看是否每分钟进行一次备份。
6.如果一直备份,那会消耗大量的服务器内存,因此需要定时的删除一些时间比较久的备份,只需要在bkemp.sh文件中添加如下代码即可。
代码语言:txt复制#删除15天之前的备份
find /home/backup -name emp"*.sql.gz" -type f -mtime 15 -exec rm -rf {} ; > /dev/null 2>&1
#删除1分钟之前的备份
find /home/backup -name emp"*.sql.gz" -type f -mmin 1 -exec rm -rf {} ; > /dev/null 2>&1
这样就可以删除备份的gz文件了,如果删除sql,只需要改成.sql结尾即可。
我们将sql拿出来执行一下,看看是否备份成功,我们发现数据库结构和数据以及视图都进行备份了,但是函数和存储过程并没有进行备份。
欢迎大家留言交流如何进行函数及存储过程的备份~