zoukankan      html  css  js  c++  java
  • [原创]大数据库远程自动备份的实现方法

    数据库备份的重要性毋庸置疑,本地备份是不安全的,理想的方式是通过公网实现远程异地备份,这个笔者几年前已在使用。主要是在远程服务器上安装FTP服务软件如Serv-U等,而本地服务器上安装SyncBackSE 4.0软件,自动定时把数据库备份文件上传到远程FTP服务器上,当然数据库要选择压缩备份,可以极大地减少网络传输流量。

    但是最近笔者遇到了一个棘手的问题,随着数据库数据的日益增长,即使采用压缩备份方式,生成的备份文件尺寸也是很大,特别是数据库中含有图像数据时,压缩率很低,备份文件有几个G那么大,远程备份经常因为连接中断导致备份失败的情况就出现了。为此,笔者尝试了多种办法,但是一直无法解决这个问题。

    最近笔者终于想出了一个新方法,经测试有效解决了这个问题。办法如下:

    1、在SqlServer2008R2数据库中建立两个数据库备份计划,一个是完整备份方式,每月初运行一次,另一个是差异备份方式,每日运行一次,当然都要采用压缩方式。为什么要这样做呢,是因为如果每天都进行完整备份,则每天都要把整个数据量向远程FTP服务器传输一次,占用了许多流量,没有这个必要。

    2、建立一个批处理文件,输入两条命令:

    Del /q *.rar

    Rar a –m0 –v100mXXX.rar XXX*.bak

    第一条命令是把老的压缩文件先删掉,第二条命令是用rar压缩软件的命令行方式对第一步中生成的完整数据库备份文件进行分卷处理,命令a是指压缩方式,命令-m0是指零压缩率,即不再进一步压缩,因为备份文件已经是压缩方式备份的,没必要再压缩一次,这样速度就比较快,命令-v100m是指定每个分卷文件的大小是100兆,这个大小可以根据网络带宽来调整,网速快的可增大一些,网速慢就减小一些,这个要通过测试来自行调整。

    第二条命令中必须要添加好绝对路径,因为这个批处理要放到数据库作业中去自动执行的,当然还要把rar.exe这个文件从winrar软件中提取出来放到需要的文件夹中。

    3、在SqlServer2008R2数据库中建立一个作业,作业中建立一个步骤,步骤的类型选择“操作系统(CmdExec)”,命令中输入第二步建立的批处理文件名,也要输入绝对路径。这个作业不需要制订计划,可以单独先测试一下,看是否能正常执行。

    4、把第三步建立的作业挂到完整备份计划的最后一步,这样当每月初进行完整备份时能自动把备份好的文件进行分卷处理,这样大文件就变成了多个小文件,有利于通过网络传输,即使网络出现中断,也不用全部从头开始传输了。

    5、设置SyncBackSE软件进行每日自动定时远程备份,只需要把差异备份文件和经过分卷处理的完整备份文件传输到远程FTP服务器上就可以了。需要恢复时先从分卷压缩包中把完整备份文件解出来,恢复到数据库中,再把差异压缩文件选择最新的那个恢复到数据库中就能把数据库完整恢复出来了。

    以上办法希望对需要的朋友有所帮助。

  • 相关阅读:
    Qt中 .pro 文件和 .pri 文件简介
    [Android Pro] 完美Android Cursor使用例子(Android数据库操作)
    [Android Pro] Android开发实践:自定义ViewGroup的onLayout()分析
    [Android Pro] Android开发实践:为什么要继承onMeasure()
    [Android Pro] Scroller使用分析
    [Android Pro] 精确记录和恢复ListView滑动位置
    [Android Pro] Android TypedValue.applyDimension()的用法
    [Android Pro] http://blog.csdn.net/wuyinlei/article/category/5773375
    [Android Pro] 判断Uri对应的ContentProvider所操作的数据库u存在,及DownloadManager的暂停,继续
    [Android Pro] 完美解决隐藏Listview和RecyclerView去掉滚动条和滑动到边界阴影的方案
  • 原文地址:https://www.cnblogs.com/pzwsoft/p/6247892.html
Copyright © 2011-2022 走看看