可靠且0成本的异地远程自动数据库备份技术介绍
本站是在服务器硬盘损坏,造成一定的数据丢失后把数据自动备份或数据冗余提到极为优先的位置的,一开始考虑的方案是用二块硬盘做RAID,这样除非二块硬盘同时坏掉,否则数据是比较保险的。联系了我们的服务商serverpoint, 他们给答复是,无法加RAID功能,因为机架没有相应的位置。他们建议用他们的数据保护服务,aresoft , 35G好象是每月40美元。 (本站或本店: 指www.usidc5.cn, bbs.usidc5.net, www.usidc5.net和淘宝店铺 http://shop35937626.taobao.com/ )我们经过考虑和征询合租客户的意见,感觉35G无法做到数据的完全备份,软件的每小时备份一次对我们来说也是多余的功能。 不如自己动手,寻求更廉价的更容易控制的远程异地每日自动数据库备份方式。
我们所作的方案如下:
1 ms sqlserver数据库备份
采用的是数据库系统自带的数据库维护计划,可定时,每日自动备份所有用户数据库到磁盘文件中。文件扩展名定义为.bak文件。
2mysql 数据库备份
采用的是mysql数据库自带的msqldump,可支持备份所有数据库。 备份文件扩展名定义为.sql 。
3 文件传送到远程
采用的是ftp命令行方式,考虑到美国到美国FTP上传速度非常快,故无需考虑断点续传问题。数据备份的服务器是另外一家美国服务商。
4每日定时的问题
在系统计划任务里添加了一个定时的任务, 执行体为一个dos下的bat文件。 在sqlserver数据库备份完成后,windows计划任务将启动这个任务,由这个bat执行一系列的命令来完成备份过程。
5速度优化
我们把所有的文件全部进行用RAR进行压缩,节约上传时间。
让我们具体看下实现:
bat文件内容:
del d:\xxxxx\mysqlbak.sql
mysqldump --all-databases -u root -ppassword >"d:\xxxxx\mysqlbak.sql"
del d:\xxxxx\*.rar
"C:\Program Files\WinRAR\rar.exe"a"d:\xxxxx\mysqlbak.sql.rar""d:\xxxxx\mysqlbak.sql"
"C:\Program Files\WinRAR\rar.exe"a"d:\xxxxx\sqlserverbak.rar""d:\xxxxx\*.bak"
del d:\xxxxx\*.bak
ftp -s:"d:\xxxxx\ftp.txt"
ftp.txt文件内容
open x.x.x.x
username
password
binary
prompt
mput d:\xxxxx\*.rar
bye
这样,无需任何外部软件,全部由系统自带软件,完成了远程异地每日自动备份,目前运转情况良好,最大限度地保障了用户的数据安全。
首发于: http://bbs.usidc5.net/read.php?tid=114 这样的备份太不安全 sftp, rsynch is better than ftp
putting username/password in plain text file is asking for trouble. Try to setup trust relationship between accounts... If you run *nix on both side. Windows for server ... is looking for trouble. 密码明文保存在文件里,安全性是不高,但是对于我现在这种应用,是可以接受的。
bat ,ftp.txt 这2个文件的权限我们都已经设置成只有管理员才能读和写。 其他合租用户如果取不到管理员权限,都是白给,如果取到了,人家就放木马,加黑链了,什么都能做,对这2个文件也不会感兴趣。 国内的应用还是以windows为主, 在代购的印象中,win : linux要达到5:1 至少。 服务器换了一次机器名,然后sqlserver里就运行维护计划失败,手工执行也是失败,想删除了重建都不行。可能是sqlserver本身有点问题,换了机器名后连不上数据库。
因此,又想了一个办法,使用sqlserver 命令行执行sql 语句进行备份。
在BAT文件里加了如下一条命令。
sqlcmd -i d:\aaa.sql -o d:\bbb.txt
在增加一个aaa.sql文件,内容从企业管理器中取出T-SQL语句即可。
sqlcmd默认是用windows当前用户授权连接本机默认实例,因此无须输入sa密码或系统管理员密码。
如果有知道如何解决sqlserver换机器名后维护计划不能用的问题,请告诉我。 感谢。
页:
[1]