全球主机交流论坛

标题: 自动备份mysql数据库并发送到Email方法(转) [打印本页]

作者: cpuer    时间: 2009-7-4 14:37
标题: 自动备份mysql数据库并发送到Email方法(转)
看了猫童鞋的博客,觉得有些用处,这里转载一下,原文:http://imcat.in/backup-mysql-dat ... ally-sent-to-email/

自动备份mysql数据库的脚本,再加上gmail这个G级邮箱,备份多少数据都可以了...下面是代码:
  1. mysqldump -uuser -ppassword --databases db1 db2 db3 > /home/website/backups/databackup.sql
  2. tar zcf /home/website/backups/databackup.sql.tar.gz /home/website/backups/
  3. echo "主题:数据库备份" | mutt -a /home/website/backups/databackup.sql.tar.gz -s "内容:数据库备份" [email protected]
  4. rm -r /home/website/backups/*
复制代码
将上面的代码保存为automysqlbackup.sh
然后利用crontab 实现动备份,在ssh下,
  1. crontab -e
复制代码
输入以下内容:
  1. 00 00 * * * /home/website/automysqlbackup.sh
复制代码
这样就实现了每天00:00自动备份mysql数据库并发送到Email

简单的说明下吧.
第一句是一次性备份多个数据库,这个要你用root权限的用户才可以的..-u后面的是数据库用户名 -p后面的是数据库密码 无需空格 db1 db2 db3为你需要备份的数据库名.
如果你的数据库用户名没有root这个权限,可以改为这样
  1. mysqldump -uuser -ppassword db1 > /home/website/backups/db1.sql
  2. mysqldump -uuser -ppassword db2 > /home/website/backups/db1.sql
  3. mysqldump -uuser -ppassword db3 > /home/website/backups/db1.sql
复制代码
第二句是将 backups 文件夹里面的数据文件压缩为文件名:databackup.sql.tar.gz

第三句是将压缩了的数据库文件发送到指定的邮箱.....

其中的主题:数据库备份 ,就是邮件的主题, 内容:数据库备份,就是邮件的内用,

/home/website/backups/databackup.sql.tar.gz 为附件

[email protected]为要发送的Email


题外话,猫童鞋,你的maoxmao.com 好不容易转到godaddy后怎么不用了呀?
作者: 火影    时间: 2009-7-4 16:50
值得收藏备用
数据丢了的时候才发现哪怕一点点备份都是非常珍贵的哈

另外
跟踪去了原作者的博客
平野绫很不错
作者: cpuer    时间: 2009-7-4 17:00
原帖由 火影 于 2009-7-4 16:50 发表
值得收藏备用
数据丢了的时候才发现哪怕一点点备份都是非常珍贵的哈

另外
跟踪去了原作者的博客
平野绫很不错

是啊,mysql数据最重要了。

平野绫 据说是声优,不明白跟女优有啥具体的区别。
作者: gdtv    时间: 2009-7-4 17:39
最大能备份多大的数据库?
作者: cpuer    时间: 2009-7-4 17:41
原帖由 gdtv 于 2009-7-4 17:39 发表
最大能备份多大的数据库?


SSH里面备份大小没有限制,主要看邮箱附件能接受最大多大了。
作者: gdtv    时间: 2009-7-4 17:52
标题: 回复 5# 的帖子
我数据库1G,看来不能发送到邮箱了
作者: cpuer    时间: 2009-7-5 00:28
原帖由 gdtv 于 2009-7-4 17:52 发表
我数据库1G,看来不能发送到邮箱了


   这么大,Gmail邮箱不支持的,发送到邮箱也超慢的。
作者: 火影    时间: 2009-7-5 00:49
标题: 回复 3# 的帖子
声优是给动画片配音的吧
比如说成人向的动画
嘿嘿
YY无穷啊
作者: cpuer    时间: 2009-7-5 01:01
原帖由 火影 于 2009-7-5 00:49 发表
声优是给动画片配音的吧
比如说成人向的动画
嘿嘿
YY无穷啊


也就是只做配音的优对吧
作者: freebsd    时间: 2009-7-5 10:16
看起来蛮好,数据库小的话很合适。
作者: cpuer    时间: 2009-7-5 10:44
原帖由 freebsd 于 2009-7-5 10:16 发表
看起来蛮好,数据库小的话很合适。


适合5MB下的小数据库,毕竟邮箱限制。
作者: samro    时间: 2009-7-6 21:54
正好需要这个,请教C大。。

那个设定自动发EMAIL的命令,假如我想更改时间怎么办?或者取消呢?
作者: cpuer    时间: 2009-7-6 22:08
原帖由 samro 于 2009-7-6 21:54 发表
正好需要这个,请教C大。。

那个设定自动发EMAIL的命令,假如我想更改时间怎么办?或者取消呢?


00 00 * * * /home/website/automysqlbackup.sh
这样就实现了每天00:00自动备份mysql数据库并发送到Email

这里就有写时间的参数。
作者: cpuer    时间: 2009-7-6 22:14
如果要删除的话,使用crontab -r 可以删除所有crontab任务。

如果要单独详细处理的话可以vi /etc/crontab编辑内容。
作者: shinko    时间: 2009-7-7 01:43
更正...理论上100M的数据库都没有。。压缩后只有30+M吧~大附件的邮箱貌似还是比较多的。。QQ邮箱支持50M?(不清楚)
作者: cpuer    时间: 2009-7-7 09:33
原帖由 shinko 于 2009-7-7 01:43 发表
更正...理论上100M的数据库都没有。。压缩后只有30+M吧~大附件的邮箱貌似还是比较多的。。QQ邮箱支持50M?(不清楚)


QQ邮箱支持50M,这么大的库还没测试过用邮箱。
作者: samro    时间: 2009-7-7 10:36
GMAIL支持20M。。对小网站来说很好啦。
作者: shinko    时间: 2009-7-7 10:52
原帖由 cpuer 于 2009-7-7 09:33 发表


QQ邮箱支持50M,这么大的库还没测试过用邮箱。


我的没压缩之前是60M左右,压缩后就只有15M..gmail邮箱刚刚好~
作者: cpuer    时间: 2009-7-7 11:10
原帖由 shinko 于 2009-7-7 10:52 发表
我的没压缩之前是60M左右,压缩后就只有15M..gmail邮箱刚刚好~


还是尽量用Gmail邮箱,国外对国外,传输速度好。
作者: bluesky    时间: 2009-9-2 17:51
没有远程FTP滴~
作者: phpwinder    时间: 2009-9-2 17:57
这个收藏了。
作者: cpuer    时间: 2009-9-2 17:57
标题: 回复 21# 的帖子
老帖被顶上来了
作者: cpuer    时间: 2009-9-2 17:57
标题: 回复 20# 的帖子
改造下即可。
作者: bluesky    时间: 2009-9-2 17:59
原帖由 cpuer 于 2009-9-2 17:57 发表
老帖被顶上来了

因为不会...所以顶上来
crontab 不知在哪插入?
远程FTP不会改造~

作者: cpuer    时间: 2009-9-2 18:01
标题: 回复 24# 的帖子
crontab命令 可以google搜下,然后来学习
作者: bluesky    时间: 2009-9-2 18:03
原帖由 cpuer 于 2009-9-2 18:01 发表
crontab命令 可以google搜下,然后来学习

这个现在不是重点 ... 先摆一旁
有空再来
作者: cpuer    时间: 2009-9-2 19:24
标题: 回复 26# 的帖子
现在在玩啥呢?
作者: vaman    时间: 2009-9-11 10:37
用记事本编辑代码,保存为automysqlbackup.sh,然后上传么
作者: cpuer    时间: 2009-9-11 10:40
原帖由 vaman 于 2009-9-11 10:37 发表
用记事本编辑代码,保存为automysqlbackup.sh,然后上传么

我一般用EditPlus编辑。
作者: qwe123    时间: 2009-9-11 10:54
得用mutt啊,mutt真强大还能发附件
作者: cpuer    时间: 2009-9-11 10:56
标题: 回复 30# 的帖子
发附件是啥意思?
作者: qwe123    时间: 2009-9-11 10:58
标题: 回复 31# 的帖子
备份文件不是以附件的形式发送的吗
作者: cpuer    时间: 2009-9-11 11:01
标题: 回复 32# 的帖子
I see,也是发送到邮箱?
作者: qwe123    时间: 2009-9-11 11:06
邮箱能收那么大的附件吗?
作者: cpuer    时间: 2009-9-11 11:07
标题: 回复 34# 的帖子
那就是ftp到某虚拟主机上咯,
作者: qwe123    时间: 2009-9-11 11:09
标题: 回复 35# 的帖子
反正是用myisam表,压缩目录是最简单,最快的方式
作者: cpuer    时间: 2009-9-11 12:17
标题: 回复 36# 的帖子

作者: phpwinder    时间: 2009-9-30 22:36
呵呵,那位再开发点更好的方法?
作者: cpuer    时间: 2009-9-30 22:45
标题: 回复 38# 的帖子
直接复制整个硬盘的办法
作者: easol    时间: 2009-9-30 23:17
收藏先
作者: 宋兵乙    时间: 2009-10-2 20:24
嘻嘻,远程ftp的还是不错的,要不我也贴个
作者: 宋兵乙    时间: 2009-10-2 20:26
[root@localhost ~]# cat lftpbak.sh

#!/bin/bash
/usr/bin/lftp -u username,password 222.xxx.xxx.222 -e "put /root/backup-$(date +%m%d%Y).sql;exit"

把这个放入crontab的命令里

0 4 * * 0 /root/lftpbak.sh >/dev/null 2>&1

/root/backup-$(date +%m%d%Y).sql 这个是我做的以日期为名的自动本分文件名,换成你的就可以。

这个利用lftp软件。
作者: skyover    时间: 2009-10-2 20:46
受用了。
作者: cpuer    时间: 2009-10-3 00:35
标题: 回复 42# 的帖子

作者: 遍地阳光    时间: 2009-10-3 23:15
原帖由 Godaddy 于 2009-10-2 20:26 发表
[root@localhost ~]# cat lftpbak.sh

#!/bin/bash
/usr/bin/lftp -u username,password 222.xxx.xxx.222 -e "put /root/backup-$(date +%m%d%Y).sql;exit"

把这个放入crontab的命令里

0 4 * * 0 /root/lftpbak.sh ...


收藏了。
作者: cpuer    时间: 2009-10-4 11:34
标题: 回复 45# 的帖子
ftp适合大文件
作者: klocal    时间: 2009-11-28 11:42
能使用ROOT权限怎么设置成 备份 所有 用户的 MYSQL数据呢?
作者: greensnow    时间: 2009-11-28 12:12
标题: 回复 47# 的帖子
mysqldump -A 是备份所有的数据库
作者: cpuer    时间: 2009-11-28 12:16
标题: 回复 47# 的帖子
你数据库数量太多了,这样导出备份不适合。
作者: klocal    时间: 2009-11-28 12:21
标题: 回复 49# 的帖子
给我推荐一个··········好的方法吧

KLOXO的自动备份数据库功能 备份出来的数据似乎是KLOXO面板的用户资料数据而已

只是用来还原KLOXO面板中用户资料数据

并不是备份用户中的MYSQL数据库
作者: omegabomb    时间: 2009-12-18 19:38
好东西,顶起
作者: wz4705    时间: 2010-1-26 12:11
DiaHosting VPS centos 5  系统
备份成功,应该是系统差别,完全照搬并不行,写下总结一下自己的。

编辑crontab命令用:crontab -e
etc/crontab 貌似系统的

crontab里要加sh,不然不执行
00 00 * * * sh /home/website/automysqlbackup.sh

tar zcf /home/website/backups/databackup.sql.tar.gz /home/website/backups/
这里如果直接在ssh里执行会出错,加个大P就好了。tar zPcf
还有个问题这个压缩会把databackup.sql.tar.gz再一次压缩进去,文件变双倍了。不解。
临时压缩到另个文件夹解决了。

mutt 未安装不能发送邮件:yum install mutt
linux上如果顺利的话安装软件真是方便,我看到C大说mutt没装,不用弄明白mutt是什么,直接命令过去,ok了。
发送的邮箱是[email protected]的,看来主机上的邮箱未设置好。以后解决。

按 Godaddy 同学的测试了一下ftp备份
yum install lftp 呵呵,真方便
/usr/bin/lftp -u username,password 222.xxx.xxx.222 -e "put /root/backup-$(date +%m%d%Y).sql;exit"
非常好用,远程目录可以直接加在 IP后面,不过ftp到国内的主机速度远不如gmail。
另外郁闷的是非21端口找不到解决的方法。

本人菜鸟,凡事都要总结一下,同学别见笑,呵呵。

[ 本帖最后由 wz4705 于 2010-1-26 12:15 编辑 ]
作者: ccp    时间: 2010-1-26 12:43
原帖由 wz4705 于 2010-1-26 12:11 发表
DiaHosting VPS centos 5  系统
备份成功,应该是系统差别,完全照搬并不行,写下总结一下自己的。

编辑crontab命令用:crontab -e
etc/crontab 貌似系统的

crontab里要加sh,不然不执行
00 00 * * * sh /home/website/autom ...


加sh是因为那个文件没有执行权限。
作者: wz4705    时间: 2010-1-26 13:10
chmod u+x automysqlbackup.sh
搞定,win过来的,搞不清状况,呵呵。
作者: cpuer    时间: 2010-1-26 14:50
标题: 回复 54# 的帖子
  搞明白就好了。
作者: GoTop    时间: 2010-5-11 02:41
原帖由 Godaddy 于 2009-10-2 20:26 发表
[root@localhost ~]# cat lftpbak.sh

#!/bin/bash
/usr/bin/lftp -u username,password 222.xxx.xxx.222 -e "put /root/backup-$(date +%m%d%Y).sql;exit"

把这个放入crontab的命令里

0 4 * * 0 /root/lftpbak.sh ...


0 4 * * 0 /root/lftpbak.sh >/dev/null 2>&1

>/dev/null 2>&1 输出到空设备....

[ 本帖最后由 GoTop 于 2010-5-11 03:20 编辑 ]
作者: GoTop    时间: 2010-5-11 02:54
原帖由 wz4705 于 2010-1-26 12:11 发表
DiaHosting VPS centos 5  系统
备份成功,应该是系统差别,完全照搬并不行,写下总结一下自己的。

编辑crontab命令用:crontab -e
etc/crontab 貌似系统的

crontab里要加sh,不然不执行
00 00 * * * sh /home/website/autom ...


"还有个问题这个压缩会把databackup.sql.tar.gz再一次压缩进去,文件变双倍了。不解。"

这个问题解决了吗?




欢迎光临 全球主机交流论坛 (https://mjj.022333.xyz/) Powered by Discuz! X3.4