使用批处理实现mysql数据库备份与上传-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

使用批处理实现mysql数据库备份与上传

简介:
使用批处理实现mysql数据库备份与上传
 
需求:
有一台windows服务器上跑着mysql的一些应用,现在需要将mysql的数据每天备份,并通过ftp上传到指定的存储服务器上
 
要是在linux,shell 脚本很容易就搞定了,windows上习惯了点鼠标,哪里来的脚本,一时还真不知道该怎么弄.baidu,google得知可以通过批处理或者vbs脚本实现.
 
批处理是比较简单的,毕竟dos的常用命令还是知道的
 
解决思路:
使用批处理文件,实现备份和上传的功能
将批处理文件加到计划任务中实现每日定时执行脚本
 
完整的批处理文件如下 文件名dbbk.bat
@echo off
:: this batch is to backup the db files on windows to linux server
:: created by yahoon
:: 2008.4.9
 
::backup the mysql db
mysqldump -uroot –pxxxx demo>c:\demo %date:~0,10%.sql
 
::pause
:: wait press any key to continue
:: ready to delete
 
::form the ftp command file
echo open 服务器ip>c:\ftpdemo.txt
echo ftp用户名>>c:\ftpdemo.txt
echo ftp密码>>c:\ftpdemo.txt
echo put c:\ demo %date:~0,10%.sql >>c:\ftpdemo.txt
echo bye>>c:\ftpdemo.txt
 
::transfer the file to server via ftp
ftp -i -s:c:\ftpdemo.txt
 
::pause
 
::clean the tmp files
del c:\ftpdemo.txt
del c:\ demo %date:~0,10%.sql
说明:
1. 双冒号::后面的内容为注释,不会执行
2. 两处pause语句是调试的时候用的,运行pause的结果是屏幕上显示按任意键继续”,脚本等着用户按键才会往下执行
3. demo %date:~0,10%.sql 是备份的文件名,最后的结果是demo20080409.sql ,其中%date:~0,10%表示的是date命令输出的字符串中从第0个开始的10个字符.这点很重要,因为我在英文的OS,执行这个脚本在备份的时候报文件名错误.这是因为当你执行date命令的时候结果是
Tue 04/08/2008
要达到demo20080409.sql这样的效果文件名就要这么写demo%date:~10,4%%date:~4,2%%date:~7,2%.sql
 
最后提一下写的过程中解决的一个问题
由于脚本的思路是做备份,然后通过ftp上传
所以最开始写的时候没有::form the ftp command file 这一段.而是写好一个ftpdemo.txt放在那
这就出现了一个问题,由于生成的sql文件名每天都变,这样ftp命令也得改.写死的ftpdemo.txt文件肯定就实现不了.
想出了个笨主意是批处理文件里面生成的sql文件就定义死文件名为demo.sql,这样ftpdemo.txt文件也可以写死.然后等上传以后,再通过linux的脚本通过crontab来每天改名.

本文转自yahoon 51CTO博客,原文链接:http://blog.51cto.com/yahoon/70711,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: