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

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

使用要点:利用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. 多视图立体几何PatchMatchStereo:DSI与Cost Volume
  2. Linux系统管理工具-iostat、free、ps、netstat、tcpdump
  3. 百度定位sdk使用说明
  4. Bing Maps 开发入门 - 1
  5. 【小白学习keras教程】三、Kears中常见模型层Padding、Conv2D、MaxPooling2D、Flatten和Dense
  6. 推荐一个去除图片人物背景的工具Removebg
  7. 目标识别、目标跟踪算法总结
  8. 关于ORACLE MYSQL NOT IN和NOT exists需要注意的 NULL值
  9. 董付国老师1900页系列Python教学PPT阅读地址汇总
  10. Sparklyr与Docker的推荐系统实战
  11. hadoop中MapReduce多种join实现实例分析
  12. linux7.3系统如何修改系统时间,两招修改​Centos7 系统时区!
  13. shell逻辑运算符优先级_linux shell 逻辑运算符、逻辑表达式详解
  14. Unity任意版本Vuforia插件下载
  15. 关于CSDN原力计划活动说明
  16. 寻找java项目/兼职
  17. 一篇让我感动的文章: 五年考研
  18. Apple iPad Pro 与 iPad air有什么不一样
  19. Arch Linux 安装
  20. 有点小坑的JDK11

热门文章

  1. 来生的山茶边,让我做一棵树吧
  2. 双11海尔冰箱·冷柜:全网销额再创纪录居行业第一
  3. 问题 J: 【分治】猪八戒吃西瓜,【分治】桐桐查单词(map的应用)
  4. 医疗时鲜(Running)资讯(ZSSURE):谈谈“reMed,重构医疗生态”大会
  5. 极简主义linux桌面,Ubuntu 16.04/17.10/18.04安装Zafiro极简图标主题
  6. 利用键盘选定文本的快捷键
  7. VIM选择文本块/复制/粘贴
  8. Houdini教程:程序化岩石(1)生成高模
  9. peterson算法
  10. FPGA之串口收发字符串之(四)——串口屏USART_HMI介绍