本文记录了服务器数据库备份、压缩、加密、发送记录邮件的一套流程。

需求:服务器的数据库自动在增长,但是难保某个时候发生意外导致数据库崩溃。所以需要做定时备份。

使用要点:利用MySQL中提供的mysqldump功能导出数据库,利用gzip进行压缩,利用gpg进行对称加密,最后使用php脚本发送记录邮件。

1、sender.php

用于php编译,发送记录邮件

PHP代码如下:

<?phprequire_once("phpmailer/class.phpmailer.php");$file = system("/backup/autobackup >> /backup/log");$mail = new PHPMailer();$mail->IsSMTP();$mail->Host = "smtp.163.com";$mail->SMTPAuth = true;$mail->Username = "这里填上发送邮箱用户名";$mail->Password = "这里填上发送邮箱密码";$mail->From = '填发件人@163.com';$mail->FromName = '填自己的名字';$mail->CharSet = 'utf-8';$mail->Encoding = "base64";$mail->AddAddress("test","TEST");$mail->AddReplyTo('test',"TEST");$mail->WordWrap = 50;//$mail->AddAttachment($file); //这里可以添加上备份文件,但是为了安全不建议这么做。$mail->IsHTML(false);$date = date("Y-m-d", time());$mail->Subject = "BACKUP-DB".$date;$mail->Body = 'DB-BACKUP-'.$date.'CONTENT-IS-'.$file;$mail->AltBody ='text/html';$mail->Send();
?>

2、autobackup脚本

用于备份-压缩-加密

代码如下:

filename=`date +%Y%m%d`
echo "============================================"
date
/opt/mysql/bin/mysqldump 数据库名 -u账户名 -p密码 | gzip > /var/www/html/mysql\_backup/$filename.gz
cd /var/www/html/mysql\_backup/
encryptPasswd="加密密码"
echo ${encryptPasswd} | gpg --yes -c --passphrase-fd 0 $filename.gz > /var/www/html/mysql\_backup/$filename.gz.gpg
rm $filename.gz
find /var/www/html/mysql\_backup/ -mtime +20 -name "*.gz.gpg" -exec rm -rf {} \;
echo /var/www/html/mysql\_backup/$filename.gz.gpg
date

注意此处-u  -p后面没有空格。

此处两个date输出两次时间以便记录所耗费时间。

加密完以后会删除原有gz压缩文件。

find -exec命令用于删除20天前的备份文件,及时清空文件防止服务器硬盘耗费过大。

最后输出备份文件所在地址。

可以将文件备份于FTP目录,使得远程异地备份得以实现。参见我另一篇文章:

《远程备份服务器自动获取备份via FTP》

3、设置定时

在redhat下面,输入

crontab -u root -e

利用crontab实现定时,这行命令用vi打开cron的配置文件,修改后会自动刷新,也可以运行

/etc/rc.d/init.d/crond restart

进行重启。

配置文件修改方法如下:

0 20 * * * wget http://localhost/test
0 4  * * * php /backup/sender.php

效果是每天4:00进行备份 发送记录邮件。

参考http://www.chinaunix.net/old_jh/6/271992.html这篇文章,这边摘取如下:

crontab -l -u [-e|-l|-r] 第一个命令行中,file是命令文件的名字。如果在命令行中指定了这个文件,那么执行crontab命令,则将这个文件拷贝到crontabs目录下;如果在命令行中没有制定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将他们也存放在crontab目录下。 命令行中-r选项的作用是从/usr/spool/cron/crontabs目录下删除用户定义的文件crontab; 命令行中-l选项的作用是显示用户crontab文件的内容。 使用命令crontab -u user -e命令编辑用户user的cron(c)作业。用户通过编辑文件来增加或修改任何作业请求。 执行命令crontab -u user -r即可删除当前用户的所有的cron作业。 作业与它们预定的时间储存在文件/usr/spool/cron/crontabs/username里。username使用户名,在相应的文件中存放着该用户所要运行的命令。命令执行的结果,无论是标准输出还是错误输出,都将以邮件形式发给用户。文件里的每一个请求必须包含以spaces和tabs分割的六个域。前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,称为命令字段,其中包括了crontab调度执行的命令。 第一道第五个字段的整数取值范围及意义是: 0~59 表示分 1~23 表示小时 1~31 表示日 1~12 表示月份 0~6 表示星期(其中0表示星期日) /usr/lib/cron/cron.allow表示谁能使用crontab命令。如果它是一个空文件表明没有一个用户能安排作业。如果这个文件不存在,而有另外一个文件/usr/lib/cron/cron.deny,则只有不包括在这个文件中的用户才可以使用crontab命令。如果它是一个空文件表明任何用户都可安排作业。两个文件同时存在时cron.allow优先,如果都不存在,只有超级用户可以安排作业。

服务器定时自动备份MySQL数据库相关推荐

  1. mysql 自动备份发送,Centos定时自动备份MySQL数据库并发送至指定邮箱

    在Centos中使用Cron定时自动备份mysql数据库并通过Mutt发送到指定Gmail邮箱,利用Gmail垃圾邮件策略实现定时删除 { No.1 编写Shell 文件 } // Path /roo ...

  2. 使用shell定时自动备份mysql数据库

    #!/bin/bashid="root" #用户名 pwd="123456" #密码 dbs="blog.ewsd.cn dangjian.ewsd. ...

  3. linux定时备份数据库到远程ftp,Linux下自动备份MySQL数据库并上传到远程FTP服务器...

    Linux下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本 说明: 1.备份MySQL数据库存放目录/var/lib/mysql下面的xshelldata数据库到 ...

  4. mysql数据库ftp备份_Linux下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本...

    说明: 1.备份MySQL数据库存放目录/var/lib/mysql下面的vos3000db数据库到/home/mysql_data里面,并且保存为vos3000db_bak_2012_06_30.t ...

  5. win2003下如何自动备份MySQL数据库

    http://www.cnblogs.com/lxJack/archive/2011/05/22/2053270.html 有网友问我在win2003下如何自动备份MySQL数据库,既然是自动备份,那 ...

  6. linux备份mysql怎样操作,Linux下自动备份MySQL数据库详细操作步骤(转载)

    环境说明 操作系统:CentOS IP:192.168.150.214 Oracle数据库版本:Oracle11gR2 用户:root 密码:123456 端口:3306 数据库:ts_0.ts_1. ...

  7. Linux下自动备份MySQL数据库及Can‘t connect to local MySQL server through socket和you need (at least one of) 解决e

    Linux下自动备份MySQL数据库及Can't connect to local MySQL server through socket和Access denied; you need (at le ...

  8. Linux自动备份MySQL数据库脚本代码

    Linux自动备份MySQL数据库脚本代码 下面这段Linux的Shell脚本用于每日自动备份MySQL数据库,可通过Linux的crontab每天定时执行 在脚本中可设置需要备份的数据库表清单,并且 ...

  9. mysql备份到制定目录_写一个脚本定时自动备份mysql到指定目录

    编写一个shell脚本每天16:30备份mysql数据并压缩打包(打包文件按照当天的日期命名)放到/root/data #cd /root #vim mysqlbackup.sh #!/bin/bas ...

最新文章

  1. Java实用教程笔记 子类与继承2
  2. IOS响应式编程框架ReactiveCocoa(RAC)使用示例
  3. Linux下C语言编程-进程的创建
  4. php程序中用户名含特殊字符怎么办,php中包含ñ等特殊字符
  5. JVM——类加载机制
  6. NET问答: 枚举 和 常量 在使用时该怎么抉择?
  7. sqlserver字符串多行合并为一行
  8. 机器学习:sklearn数据集与机器学习组成
  9. linux mysql主从配置_Linux下Mysql主从同步配置
  10. Vue is not defined;at App onLaunch function;at api getSystemInfo success callback function
  11. leetcode力扣36.有效的数独
  12. Linux下安装Apache Maven安装
  13. [论文阅读] End-to-End Incremental Learning
  14. 在Seismic.NET下用最少的语句写出一个剖面显示程序
  15. DNS Server 的设置使用
  16. 20200721每日一句
  17. JDE 权限,分环境设置权限,PY,PD设置不同权限
  18. Windows + CUDA + Anaconda + TensorFlow + PyCharm
  19. html编写在线打字通,HTML5代码打字练习、HTML5案例 - 02
  20. appcan 文件下载到根目录(pdf)

热门文章

  1. Appium+Python实现自动投递Boss直聘简历
  2. LAM服务器(ldap-account-manager server)架设指南
  3. Java核心技术卷一 -第五章:枚举类再认识
  4. ITF25码详解(附带PB代码)
  5. “退微信群”谣言背后:总有人用阴谋论湮没常识
  6. android TextView字体粗细
  7. 健康医疗设备拓客的10个经典方法
  8. Java学习自学,该怎么学?
  9. AsposeWord和DocxWord开源读写Word文档
  10. 编程常用字体Consolas、Fira Code、Source Code Pro