最近的项目,客户要求要把数据库每天做备份,并且发送的邮箱,在Linux下就不用说了,方便的很,可是,o(︶︿︶)o 唉!服务器是Windows的2003 。整吧!在网上找了点资料,东拼西凑的总算是鼓捣出来了。
第一步,定时备份。
首先是要有脚本,然后加载Windows的定时任务就好了。
核心的备份语句如下:
mysqldump -hlocalhost -uroot -p%MySql_pw% --default-character-set=utf8 -R --triggers --hex-blob --single-transaction -B %%i >%BAK_FILE%
%RAR_Dir% a %BAK_FILE:~0,-4%.rar %BAK_FILE%
DEL /F /A /Q %BAK_FILE%
echo 数据库【%%i】 已经备份到%BAK_Dir%\%BAK_Dir2%\%BAK_FILE%.rar >> %LOG_FILE%
)
另外,还有根据时间创建目录、删除自定义天以前的备份等。具体的看附件内容吧!
发送邮件是一定要设置对SMTP地址和帐号密码,文件路径要对应上。
Namespace = "http://schemas.microsoft.com/cdo/configuration/"
dtmYesterday = Date
strYear = Year(dtmYesterday )
strMonth = Month(dtmYesterday )
If Len(strMonth) = 1 Then
strMonth = "0" & strMonth
End If
strDay = Day(dtmYesterday)
If Len(strDay) = 1 Then
strDay = "0" & strDay
End If
strYMD = strYear & "-" & strMonth & "-" & strDay
Set Email = CreateObject("CDO.Message")
Email.From = "对方地址"
Email.To = "你的地址"
Email.Subject = "数据备份 " & strYMD
Email.Textbody = "OK!"
rem 这里要和之前备份的目录对应上
Email.AddAttachment "E:\\mysql_db_bak\\" & strYMD & "\\数据库名称_" & strYMD & ".rar"
With Email.Configuration.Fields
.Item(NameSpace&"sendusing") = 2
.Item(NameSpace&"smtpserver") = "SMTP对应的服务器"
.Item(NameSpace&"smtpserverport") = 25
.Item(NameSpace&"smtpauthenticate") = 1
.Item(NameSpace&"sendusername") = "你的用户名"
.Item(NameSpace&"sendpassword") = "你的密码"
.Update
End With
Email.Send