linux系统定时备份MySQL数据库

2020-07-13 14:15:43 浏览数 (1)

一个项目的基础便是数据库,但是可能因为某些原因会导致数据丢失,或数据库结构变化,严重一点的或造成数据库删除。为了以防万一,这时候就需要我们定时进行数据库备份,但是如果人来操作的话会是一个比较麻烦的工程,这时我们可以使用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拿出来执行一下,看看是否备份成功,我们发现数据库结构和数据以及视图都进行备份了,但是函数和存储过程并没有进行备份。

欢迎大家留言交流如何进行函数及存储过程的备份~

0 人点赞