Linux VPS自动定时备份MySQL数据库发送至邮箱实现脚本

如今,我们在选择主机建站或者部署项目的时候,越发觉得VPS、服务器性价比会高很多,比如我们经常有看到年付十几美金、二十几美金的VPS服务器。相比较传统的虚拟主机是便宜很多,不过老蒋一直强调,如果我们是普通的个人博客、个人网站,如果虚拟主机能够满足需求的,建议还是要使用虚拟主机。因为虚拟主机站长维护成本较低,而且稳定性和安全性比VPS、服务器强一些。

因为,大部分VPS服务器都是无管理型的,所有的环境配置、网站部署、数据安全都需要我们自己来运维。尤其对于很多Linux服务器新手用户,老蒋遇到很多选择VPS后参考教程部署WEB网站环境建站,待到服务器出现故障、主机商跑路,然后才觉得之前需要备份数据,因为定期备份网站数据是多么重要,即便出现问题,我们也可以临时转移到其他服务器。

老蒋在之前的文章中也有多次分享关于Linux VPS备份内容:

1、OneinStack脚本Web环境内置网站、数据库本地/远程备份应用

2、自动定时备份Linux VPS/服务器网站文件及数据库且FTP上传至主机空间

3、Linux VPS网站文件、数据库备份及更换主机搬家过程记录

备份网站文件和数据库的方式有很多种,我们可以选择脚本、环境自带的工具,也可以完全手工备份。像我们一般的博客、个人网站,数据更新量不大的可以选择定期手工备份,或者就定期备份MySQL数据库,因为大部分时候我们不需要改动网站的程序和模板。(当然,上传图片更新也可以定期备份,主要还是数据库)

在这篇文章中,老蒋修改了一个简单的脚本,主要是用来自动、定时备份MYSQL数据库的,然后发送到我们指定的邮箱中,这样至少可以确保数据库完整,因为大部分时候网站文件平时很少经常改动,网站文件可以根据实际改动情况间距备份时间。

第一、MySQL数据库备份准备

yum install mutt sendmail -y

这里我们需要确保服务器中安装了mutt和sendmail,这样才能进行发送邮件。

第二、脚本修改参数

#!/bin/sh
mysql_user="数据库用户"
mysql_name="数据库名"
mysql_pwd="数据库密码"
#要备份网站的数据库信息
d=`date "+%Y-%m-%d"`
#定义备份邮件标题,可以区分是哪一天的
t="MySQL Backup - $d"
#发送邮件标题和内容,这个是次要的,主要是附件中的数据库
BackName=backup_mysql_$d
#数据库文件名称
BackPath=/tmp/
#备份数据库存放路径,我们也可以定期SFTP去下载,这个脚本不会定期删除
mysqldump -u${mysql_user} -p${mysql_pwd} $mysql_name > $BackPath$BackName.sql
#导出数据库
tar cfP $BackPath$BackName.tar $BackPath$BackName.sql
#压缩数据库包,这样节省空间
echo "$t"|mutt -s "$t" backup@itbulu.com -a $BackPath$BackName.tar
#用mutt发送邮件,发送到我们指定的邮箱里"backup@itbulu.com"
exit
#退出当前脚本

我们可以将上面的脚本文件参数部分修改成实际需要备份站点参数内容。

备用脚本文件:https://soft.itbulu.com/backup/back.sh

第三、脚本的使用

我们可以将脚本命名为back.sh,放到自己知道的目录位置,比如到root目录中都可以。

chmod +x back.sh
./back.sh

修改权限,然后执行脚本试试,我们可以看到在/tmp/文件夹中多了2个文件,一个是数据库sql文件,一个是压缩包后的tar文件。如果我们邮箱设置的没问题,应该等一会会提示发送过来备份数据库。

Linux VPS自动定时备份MySQL数据库发送至邮箱实现脚本

老蒋这里使用的是QQ邮局,还是可以收到MYSQL数据库备份文件的。

第四、实现定时备份设置

1、crontab -e

打开定时编辑器文件。

2、添加脚本

30 1 * * 5 sh /root/back.sh

设定每周5凌晨1点30天执行脚本备份和发送邮件。具体crontab用法可以参考这里(Linux VPS/服务器Crontab定时任务设置及Crontab书写格式详解)。

第五、备份数据库脚本总结

1、目前这个脚本还是比较简单的,但是功能是可以实施的。会临时将数据库文件备份在tmp文件夹中,我们可以手工去服务器中再下载一份。

2、以后老蒋再对脚本改进,比如备份服务器中的备份保留几天后自动删除。对于是否备份全网站文件,我们完全没有必要用这个方法,因为有些网站很大,用这个方法发送到邮件中着实麻烦。因为大部分时候,我们数据库文件才是最关键的。

当然,这个脚本老蒋检测后是可以使用的,但不能确保每个人都一定适合,所以我们如果用于真实环境项目中,建议还是先在测试环境测试后再使用。

本文出处:老蒋部落 » Linux VPS自动定时备份MySQL数据库发送至邮箱实现脚本 | 欢迎分享( 公众号:站长事儿 )