首页 > 学技术 > 技术网文 > MySQL > 正文

[原创] 一个Mysql自动备份脚本


来源 chinaunix.net 酷勤网整理

写了一个Mysql备份的脚本,大家看看,有什么不妥地方。 

这是我写的第一个Shell脚本,大家帮忙看看, 

有谁需要的,我可以发给他。 

可以将这个脚本放进crontab,每天凌晨执行一次,自动备份 

这个脚本每天最多只执行一次,而且只保留最近五天的备份在服务器上。



#!/bin/bash 
#This is a ShellScript For Auto DB Backup 
#Powered by aspbiz 
#2004-09 

#Setting 
#设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式 
#默认情况下备份方式是tar,还可以是mysqldump,mysqldotcopy 
#默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxx.tgz 
DBName=mysql 
DBUser=root 
DBPasswd= 
BackupPath=/root/ 
LogFile=/root/db.log 
DBPath=/var/lib/mysql/ 
#BackupMethod=mysqldump 
#BackupMethod=mysqlhotcopy 
#BackupMethod=tar 
#Setting End 


NewFile="$BackupPath"db$(date +%y%m%d).tgz 
DumpFile="$BackupPath"db$(date +%y%m%d) 
OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago').tgz 

echo "-------------------------------------------" >;>; $LogFile 
echo $(date +"%y-%m-%d %H:%M:%S") >;>; $LogFile 
echo "--------------------------" >;>; $LogFile 
#Delete Old File 
if [ -f $OldFile ] 
then 
   rm -f $OldFile >;>; $LogFile 2>;&1 
   echo "[$OldFile]Delete Old File Success!" >;>; $LogFile 
else 
   echo "[$OldFile]No Old Backup File!" >;>; $LogFile 
fi 

if [ -f $NewFile ] 
then 
   echo "[$NewFile]The Backup File is exists,Can't Backup!" >;>; $LogFile 
else 
   case $BackupMethod in 
   mysqldump) 
      if [ -z $DBPasswd ] 
      then 
         mysqldump -u $DBUser --opt $DBName >; $DumpFile 
      else 
         mysqldump -u $DBUser -p$DBPasswd --opt $DBName >; $DumpFile 
      fi 
      tar czvf $NewFile $DumpFile >;>; $LogFile 2>;&1 
      echo "[$NewFile]Backup Success!" >;>; $LogFile 
      rm -rf $DumpFile 
      ;; 
   mysqlhotcopy) 
      rm -rf $DumpFile 
      mkdir $DumpFile 
      if [ -z $DBPasswd ] 
      then 
         mysqlhotcopy -u $DBUser $DBName $DumpFile >;>; $LogFile 2>;&1 
      else 
         mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >;>;$LogFile 2>;&1 
      fi 
      tar czvf $NewFile $DumpFile >;>; $LogFile 2>;&1 
      echo "[$NewFile]Backup Success!" >;>; $LogFile 
      rm -rf $DumpFile 
      ;; 
   *) 
      /etc/init.d/mysqld stop >;/dev/null 2>;&1 
      tar czvf $NewFile $DBPath$DBName >;>; $LogFile 2>;&1 
      /etc/init.d/mysqld start >;/dev/null 2>;&1 
      echo "[$NewFile]Backup Success!" >;>; $LogFile 
      ;; 
   esac 
fi 

echo "-------------------------------------------" >;>; $LogFile 






 aspbiz 回复于:2004-10-05 20:05:38

大家看看呀,

一个自动备份的脚本,支持多种备份方式,自动翻转。


 odin_free 回复于:2004-10-08 09:55:54

不错不错 比我的以前对付的好多了

以前也有不少写这个脚本的 加精


 maowei 回复于:2004-10-08 14:40:22

引用:原帖由 "aspbiz"]
 发表:


我需要。谢谢! maow@glsc.com.cn


 ssnake 回复于:2004-10-08 15:35:32

我需要...tao_jh@citiz.net,   thankx!!


 netocool 回复于:2004-10-09 00:50:48

支持

谢谢

dillon100@21cn.com


 CyrixIII 回复于:2004-10-09 01:48:06

给我发一份吧
正好我在找这样的脚本呢


 bandt 回复于:2004-10-09 08:43:58

楼主的这个咚咚真好,辛苦了 !


 greennet 回复于:2004-10-09 09:29:16

楼主,辛苦了
给我一份吧,我找了多时了,哈哈
xjxjun@126.com


 phpcool 回复于:2004-10-09 09:49:41

终于找到想要的了.来一份楼主.
ltsnet@bxemail.com


 wallace888 回复于:2004-10-09 10:20:36

兄弟给我来一份好吗?wallice_cn@hotmail.com谢谢了


 spring2spring 回复于:2004-10-09 10:21:23

终于找到想要的了.来一份楼主. 
shouchun_w@163.com
shouchun_w@126.com


 iotigod 回复于:2004-10-09 11:10:39

请给我一份,谢谢igodsbackup@163.com


 kanzone 回复于:2004-10-09 22:48:07

请给我一份
kan@3key.net


 aspbiz 回复于:2004-10-09 23:04:33

几天没来,这么多兄弟要,

我发给大家吧。


 aspbiz 回复于:2004-10-09 23:07:23

比较多人,不好一个一个发,

我上传到这里,

不过,文件后缀是.jpg,大家另存为后,改过名来就可以了。

DBBackup.jpg


 ni 回复于:2004-10-10 17:12:52

好的script,会有很多人拿去用。特别好的代码,不仅CU的朋友在用,国内外的朋友也都会在用。这个时候,代码固然得写得好,也不要被别人在一些细枝末节的地方笑话。代码中间有一些字符串用来书写Log,请不要随便写写,尽量避免语法上的错误,要么就干脆写中文更好些。多花一点时间,让代码更完美一点。


 yuxiang116 回复于:2004-10-10 22:07:26

请给我来份!
shenyong@keynic.com
谢谢! :em02:


 aspbiz 回复于:2004-10-10 23:26:13

大家自己下载,一个一个发可能有点麻烦。


 simonlm 回复于:2004-10-13 09:53:26

下不了呀


 caidao 回复于:2004-10-14 00:19:09

在此感谢
debian@126.com


 panafrio 回复于:2004-10-15 09:53:14

請給我 rolito@lungfung.net


 aspbiz 回复于:2004-10-15 11:34:11

以上的都发了。


 yzcdf 回复于:2004-10-18 16:06:34

楼主,您好!小的是新手,我想问一下,我的mysql是装在SQL SERVER 2000系统上,能用如上代码吗?我应该如何实现数据库的自动备份呢?谢谢~~~


 aspbiz 回复于:2004-10-18 17:57:27

还有Mysql装在Sql server上的呀??

真是厉害。

你肯定搞错概念了。


 hancher 回复于:2004-10-19 13:13:44

goodgoodstudy(); 
daydayup(); 
哥们太搞笑了吧!!
应该是:
studay hard and progress everyday !


 freelin18 回复于:2004-10-19 15:12:13

我也要一份,谢
freelin18@126.com


 iboys 回复于:2004-10-20 15:07:49

今天才看到,能不能给我发一份?先谢谢了!…
chenhao5188@163.com


 raullpq 回复于:2004-10-20 15:41:58

麻烦给我一份,多谢
linux.lu@tom.com


 hehongtai 回复于:2004-10-21 09:13:12

麻烦给我一份,谢谢 hehongtai@vip.sina.com


 zxw_xuewei 回复于:2004-10-22 09:53:28

zxw_xuewei@yahoo.com.cn


 blues1205 回复于:2004-10-22 14:29:08

yanwu_liu@tom.com

谢谢楼主了,你贴的那个东东真的下不了呀。


 cooljia 回复于:2004-10-26 12:15:59

这帮家伙太偷懒,怎么就不能下了那?
右键点->;属性->;copy url->;paste in IE
看到了么?


 thinpig 回复于:2004-10-26 22:25:46

我需要。谢谢! kevin2sa@gmail.com


 bapala 回复于:2004-10-27 00:22:42

chaosyude@126.com

PLS give me the copy


 mengjia 回复于:2004-10-28 16:01:37

偶也要一份,谢谢楼主!!!
hhlmy@163.com


 kkk_ssa 回复于:2004-10-30 07:44:21

kkk_ssa@163.com

俺也要,谢谢您!


 bst 回复于:2004-10-30 10:54:07

可以下载的,不要那么懒吗.. 楼主不是已经上传上去了吗..

不会下载的 cooljia兄也已经告诉你们方法了...呵呵 :)  :)


 shadow8424 回复于:2004-11-01 10:40:35

我也要一份!
wind8424@sina.com
多谢了!


 aspbiz 回复于:2004-11-01 17:28:23

下载地址:

http://bbs.chinaunix.net/forum/uploadfile/dbbackup.jpg


 cbwcbj 回复于:2004-11-10 13:22:47

请给我一份,谢谢michael@doer.cn


 bigbighd604 回复于:2004-11-13 11:26:42

我也想要,给我一份吧,谢谢了
bigbighd604@163.com


 hscsq 回复于:2004-11-16 15:48:17

hs.csq@163.com


 klark 回复于:2004-11-20 15:21:59

多谢 houjue18@sina.com


 qtview 回复于:2004-11-23 01:01:42

搂主的想法是好的,但实现稍复杂了点,直接cp数据库文件就行了,干嘛每天去折磨数据库一次。如果害怕备份文件太大,打下包就ok啦。
程序处理有大量(就说2G以上吧)记录的数据库的时候,得出的备份文件还原也成了难事。


 歪把梨 回复于:2004-11-25 11:15:34

:em02: 谢谢


 yukunzcn 回复于:2004-11-30 13:19:07

老兄,我也需要,也送给俺一份吧!谢了先!


 Red_Crow 回复于:2004-11-30 13:32:50

楼主辛苦了


 cbrooks 回复于:2004-12-04 14:26:02

我也要一个呀
chenb882@nenu.edu.cn
先谢谢了


 mango2008 回复于:2004-12-05 22:08:05

:shock: good!!!


 mbgmbg 回复于:2004-12-09 09:13:33

请问linux下的脚本是放到什么地方的,怎么才能运行起来呢


 水若寒 回复于:2004-12-10 00:16:41

引用:原帖由 "qtview" 发表:
搂主的想法是好的,但实现稍复杂了点,直接cp数据库文件就行了,干嘛每天去折磨数据库一次。如果害怕备份文件太大,打下包就ok啦。
程序处理有大量(就说2G以上吧)记录的数据库的时候,得出的备份文件还原也成了难事..........



对,我也是这样想的!!


 wing-qiang 回复于:2004-12-21 15:27:43

我也要一个!xeon@21cn.net


 stevenhxm 回复于:2004-12-23 09:45:43

楼主,也给我发一份吧,stevenhxm@163.com
3X!


 moonnight 回复于:2004-12-27 11:01:03

引用:原帖由 "aspbiz"]
 发表:


楼主,我也想要一份,webmaster@moonnight.org
谢谢!!


 jiaxirui 回复于:2005-01-02 15:26:24

楼主,辛苦了 
给我一份吧,谢谢。


 taowjyan 回复于:2005-01-04 12:01:23

taonjyan@yahoo.com.cn


 wolfstar 回复于:2005-01-07 09:45:50

也给我一份吧,太谢谢了。
big_wolfstar@yahoo.com.cn


 daliwa 回复于:2005-01-11 11:04:04

虽然偶不用mysql,
谢谢


 yzcdf 回复于:2005-01-11 16:43:16

代码已得到!谢谢楼主!
但我的mysql是装在win 2000 server上的,经常做些cgi的程序,
不知道如何让这些代码发挥作用,
还请楼主指教如何使用!十分谢谢!


 levinzhang 回复于:2005-01-14 11:40:28

现在我也在做MYSQL 方面的事情。有空可以多交流请教一下。


 saneryee 回复于:2005-01-19 09:37:56

急需急需
楼主还提供么?谢谢先。
saneryee@gmcc.com.cn


 xiaohe83 回复于:2005-01-19 09:40:44

不错的说.


 njblue2004 回复于:2005-01-19 20:16:01

楼主辛苦


 zxr1018 回复于:2005-02-17 13:59:45

我也需要xrzhu@tom.com


 剑心通明 回复于:2005-02-22 19:29:28

谁有啊?给我一份,多谢!wuming122@eyou.com


 kimc13 回复于:2005-03-17 10:53:28

grand~
厲害厲害~~多謝大大


 bowbow.rain 回复于:2005-03-21 12:57:29

超级需要呀!发给我!谢谢


 blueaut 回复于:2005-03-31 16:26:27

楼主不是都把代码贴了出来了吗?为什么大家都还叫楼主发到自己邮箱的??万二分不解?????


 jamesbang2003 回复于:2005-08-25 13:35:22

wangdbang@hotmail.com,谢谢得非常!


 tassel 回复于:2005-08-30 11:48:17

顶!楼主,我也需要一份.mail:51100222@sina.com


 windychan 回复于:2005-08-30 18:45:10

也给我一份吧.windy.chan@163.com


 haoyufu 回复于:2005-08-30 19:39:54

兄弟也给我发一份吧

我那个脚本写的比较简单

haoyufu@163.com

多谢


 edenCC 回复于:2005-09-14 19:43:23

楼上的人真够懒,寡人实在是佩服!!

脚本就在那里,你拷过来不就行了


 ipaddr 回复于:2005-09-14 20:33:16

是呀,自己拷过来就行了.


 tomsxu7926 回复于:2005-09-15 08:45:33

你好,楼主,辛苦、辛苦!也给我来一份!
tomsxu7926@sina.com


 dbl2 回复于:2005-09-28 09:22:23

dbl2@tom.com
谢谢了。


 bst 回复于:2005-09-28 11:19:07

献给那些没时间自己去找的"懒人":


#!/bin/bash
#This is a ShellScript For Auto DB Backup
#Powered by aspbiz@163.com
#2004-09

#Setting
DBName=mysql
DBUser=root
DBPasswd=
BackupPath=/root/
LogFile=/root/db.log
DBPath=/var/lib/mysql/
#BackupMethod=mysqldump
#BackupMethod=mysqlhotcopy
#BackupMethod=tar
#Setting End


NewFile="$BackupPath"db$(date +%y%m%d).tgz
DumpFile="$BackupPath"db$(date +%y%m%d)
OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago').tgz

echo "-------------------------------------------" >;>; $LogFile
echo $(date +"%y-%m-%d %H:%M:%S") >;>; $LogFile
echo "--------------------------" >;>; $LogFile
#Delete Old File
if [ -f $OldFile ]
then
rm -f $OldFile >;>; $LogFile 2>;&1
echo "[$OldFile]Delete Old File Success!" >;>; $LogFile
else
echo "[$OldFile]No Old Backup File!" >;>; $LogFile
fi

if [ -f $NewFile ]
then
echo "[$NewFile]The Backup File is exists,Can't Backup!" >;>; $LogFile
else
case $BackupMethod in
mysqldump)
if [ -z $DBPasswd ]
then
mysqldump -u $DBUser --opt $DBName >; $DumpFile
else
mysqldump -u $DBUser -p$DBPasswd --opt $DBName >; $DumpFile
fi
tar czvf $NewFile $DumpFile >;>; $LogFile 2>;&1
echo "[$NewFile]Backup Success!" >;>; $LogFile
rm -rf $DumpFile
;;
mysqlhotcopy)
rm -rf $DumpFile
mkdir $DumpFile
if [ -z $DBPasswd ]
then
mysqlhotcopy -u $DBUser $DBName $DumpFile >;>; $LogFile 2>;&1
else
mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >;>;$LogFile 2>;&1
fi
tar czvf $NewFile $DumpFile >;>; $LogFile 2>;&1
echo "[$NewFile]Backup Success!" >;>; $LogFile
rm -rf $DumpFile
;;
*)
/etc/init.d/mysqld stop >;/dev/null 2>;&1
tar czvf $NewFile $DBPath$DBName >;>; $LogFile 2>;&1
/etc/init.d/mysqld start >;/dev/null 2>;&1
echo "[$NewFile]Backup Success!" >;>; $LogFile
;;
esac
fi

echo "-------------------------------------------" >;>; $LogFile


 leiting 回复于:2005-11-28 11:16:40

给我一份好吗?cz_leiting@126.com


 syjn_ye 回复于:2005-12-01 21:27:48

小弟正在找这个东东,[email]granty@mfun.com.cn[/email]给我发一份吧!谢谢!


 limitdd 回复于:2005-12-01 22:24:59

给我也发一个吧,[email]icemanw@sina.com[/email]


 itbbs 回复于:2005-12-09 10:18:11

谢谢,给我来一个。[email]downreg@gmail.com[/email]


 bugkill 回复于:2005-12-24 15:07:01

给俺也发一份吧谢谢

[email]haoyufu@163.com[/email]


 ipaddr 回复于:2005-12-26 22:18:39

兄弟们,自己找找,

楼主不可能再给你们发了吧。

也提供了下载。

直接google.com

mysql 备份 aspbiz

就能搜到的。


 phoenixatsh 回复于:2005-12-31 15:27:02

谢谢,我也想要 [email]phoenixatsh@gmail.com[/email]


 macrodba 回复于:2005-12-31 17:16:58

bu cuo good


 重来 回复于:2006-01-17 13:58:09

不错,正需要!谢谢!


 zengqh 回复于:2006-01-17 17:47:47

迟来的人,能要一份吗?


 weizhen_2000 回复于:2006-02-23 10:23:37

楼主来一份,谢谢,[email]weizhen_2000@163.com[/email]


 fanstone169 回复于:2006-04-04 17:27:57

奇怪的是,为什么我备份出来的只有45k大小?


 xxjoyjn 回复于:2006-04-04 17:45:49

我也想要也,[email]xuxianjin@guoxinad.com.cn[/email]


 gaoxin 回复于:2006-04-05 15:00:42

要........................

[email]david.star.scorpio@163.com[/email]

楼上大哥.缘分那!!!!


 rardge 回复于:2006-04-05 15:45:16

奇怪,你们要什么啊?脚本不是已经贴出来了么?


 sickcat2004 回复于:2006-04-25 09:32:00

引用:原帖由 aspbiz 于 2004-10-4 01:00 发表
写了一个Mysql备份的脚本,大家看看,有什么不妥地方。 

这是我写的第一个Shell脚本,大家帮忙看看, 

有谁需要的,我可以发给他。 

可以将这个脚本放进crontab,每天凌晨执行一次,自动备份 

这个脚 ... 


syntax error near unexpected token `in
case $BackupMethod in
我执行后出现这个错误,老大们看看阿,我是新手


 cxm.cm 回复于:2006-04-26 11:55:04

我也要一个:
[email]dragonchencm@gmail.com[/email]
多谢啦!


 linux_admin 回复于:2006-07-17 09:28:21

我碰碰运气,看能不能在给我发一份,现在急需

[email]Lipg@tqidc.cn[/email]


 audiotech 回复于:2006-07-17 16:54:56

好东西哦~难得啊


 ipaddr 回复于:2006-07-17 21:06:23

网上大把,

搜一下:

mysql 自动备份 aspbiz
就是这个了。


 北京野狼 回复于:2006-07-18 17:38:57

这个帖子充分体现了,搞IT的。。。。。。。。。。。。

服了


 yanweihao 回复于:2006-07-19 01:47:07

DBName=mysql
如果备份多个库 应该怎么写呢 哥们!


 windlike 回复于:2006-07-20 10:10:15

楼主发的备份脚本的确很好, 我以后要好好学一下. 不过我用win2000系统,  不在shell界面备份.

我是这样备份数据库的: 编写一个简单的批处理程序, 每天早上早上执行这个文件.

文件名: db_backup.bat
代码如下:
mysqldump --opt -u root -pxxx google > backup/google.sql
mysqldump --opt -u root -pxxx yahoo > backup/yahoo.sql
mysqldump --opt -u root -pxxx msn > backup/msn.sql

备份前提: 
把db_backup.bat文件拷到mysql/bin目录下.

备份方法: 
开始->运行->cmd
cd c:\
cd mysql/bin
db_backup.bat


我只是一个初学者, 不知道这里面有没有错误, 请大家帮忙指点.

[ 本帖最后由 windlike 于 2006-7-20 10:13 编辑 ]


 zhanghome 回复于:2006-07-20 16:42:47

如果能加上错误后重备的功能就更好了^_^


 xiaochong 回复于:2006-11-15 17:31:47

给我一份吧,一起分享下。
谢谢。
[email]jiangpo@polytele.com[/email]


 lingy 回复于:2006-12-04 11:44:09

innodb的表好像不能备份


 Jeff_z 回复于:2006-12-04 23:04:41

Very Cool~~~~
真好,我也想来一份,谢谢楼主
[email]zwj_51321@163.com[/email]


 qiubowinter 回复于:2007-01-30 16:27:23

我也非常需要[email]qiubowinter@vip.sohu.net[/email]


 滴水见阳光 回复于:2007-02-02 16:33:03

楼主辛苦了,我也在学习中,也想学习一下,给我发一份吧,happiness20052163.com,谢谢


 北京野狼 回复于:2007-02-04 19:33:14

如果搞IT的,都是回帖的人。 真是IT的末日。

想看看笨蛋,就来这里


 holycn 回复于:2007-02-08 12:03:42

太感谢了,我需要一份;[email]caohq@163.com[/email]


 jgcjsw 回复于:2007-02-09 08:00:00

楼主,谢谢,请也给我一份吧,很需要的。
[email]jgcjsw@163.com[/email]


 lzjcf 回复于:2007-02-10 14:12:35

我也要
[email]lzj@deangi.com[/email]


 zhy1899 回复于:2007-03-08 11:37:02

楼主,能给我一份吗?
[email]zhy1899@163.com[/email]


 mdjhaitao 回复于:2007-04-09 09:56:19

楼主能给我一份吗?

[email]mdjhaitao@163.com[/email]

谢谢


 colz 回复于:2007-04-11 09:25:19

谢谢楼主 非常有用。给我发一份吧! [email]colz@163.com[/email]


 james_yan 回复于:2007-04-12 13:05:27

不错,辛苦了,我也要一份 [email]yan.0045@163.com[/email]




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=418474

收藏到: