关于数据备份方法的讨论 --By 萧月禾(300分)

  • 主题发起人 萧月禾
  • 开始时间
我做备份是用的rar.exe进行的(在程序中调用),做的是整个数据库。
关于你说的动态的进行,我是使用了数据导入、导出,使用临时表作为中间传递物;
在导入时,判断数据库的完整性,如果完整性不和要求,就不能导入!

没办法,有时候,必须让用户动起来(不然,有好多东西,我们做程序员的无法下手)!
 
forss, 我的备份是建立在业务规则上的,但是结合了简单的权限,也就是最高权限才可以进行自己部门的数据备份。
如果象你说的,结合到每个用户的权限,累死我也:(~~
 
用李颖的备份控件是否可行,我刚用过,最近很忙,又为她弄得人消瘦,还没空去研究,
我也不想去重新做一个,觉得很累,我是用在对SQL SERVER的备份上的。
 
我现在想先做一个简单的版本,实现按条件备份指定表的数据,比如按月份或季度备份
某销售表的记录,这些要备份的表和条件名及条件值并非在程序中写死,而是通过设置
另外几张专门用来设置备份信息的表的数据来表示。。。

主要的问题还是在数据恢复上,如果数据不能恢复,备份就没有意义

至于表结构和其他的一些基础数据(改动较少的),在备份整个数据库的时候备份即可
以后就只要备份增加的数据

至于权限,则是权限模块的事情(已经解决)
请问大家还有什么建议?[:)]
 
to microming:
李颖大侠的那套东西似乎不支持含键值的数据表恢复呀,比如含自增字段或外键字段的,
总是提示错误(也许是我不会用)
 
还是第一种方案更安全吧。

我再听听大侠们如何说的。
 
我认为做这种通用的备份工具不实际,因为具体数据库的结构千差万别,如果要能进行分条件备份,
必须建立很完善的数据字典。
再则不同数据库之间的备份方式也有很大的差别。
不过通过编写这种工具对了解数据库很有帮助。
 
萧大虾提出的问题我已经思考好多年了,一直没有一个适合的方法。利用数据库的备份
功能固然必要,但是对数据库按业务方式备份/还原也非常必要。但是要想用通用的方法来
实现这样的备份是有困难的,但是我们可以分模式来实现,问题就容易解决了。当已有的
模式能满足备份的需求时就可以组织出相应的备份框架,以适应某类MIS系统的应用。我现
也在思考相关的一些模式,比方说单据/明细、分类/基本资料,可惜我在建模方面的功力
还不够,尚抽象不出好的模式,需要进一步专研UML。
 
关于备份之我见,
我们备份是为了应付灾难性问题产生,如起火了,被盗了等,这时,我们用到完全备份,可以用磁带机在晚上固定的时间进行完全备份;这样,数据丢失也
只是一小部分的事(最多一天,如果超过一天的数据,则是工作的失败,我们的前前任经理,因为没有备份,丢了两个星期的数据,没有办法,只好走人),
至于按业务进行备份,我看不到有多少必要,因为,你无法在一个较短的时间精确地知道有多少相关联的数据,受到了影响,在我个人认为,要确定这个影响真的很难,
就说我们电脑部,有一个小子,很牛的那种(很会吹,我们总监很中意他),MRP系统要取消一个库位,“艺高人胆大,无知胆更大”,他大胆动手,结果。。。

于是就想到备份,你有办法分析到有多少数据受到影响?结果只有全部备份恢复,其实,我认为这个问题应从管理上解决,在技术上也许真的可行。
但意义不大.
 
关注。
没有好办法。
差异备份和增量备份。 客户端如果不能访问日志文件。 无法通过编程完全的实现
差异备份和增量备份。
 
如果只是考虑部门级的应用需求,C/S方式的局域网环境,可能没有必要按业务方式包装数据。
但是企业的应用要求是发展的,迟早要求按业务要求重新分布/组织数据库;另外,从效率上
讲,活动业务数据的应该精简,动态地把历史数据转移到数据仓库中。这样,既保持业务操作
的快捷,又能为企业的支持决策提供数据支持。这就要求我们从业务的观点组织数据,为备份/
分发/重新组织数据库提供必要的支持手段。可惜,要做到这点并不容易,需要相当的系统分析
功底。
 
当初考虑的细节问题过多
打个比方
某区教育局下有若干中小学
通过软件系统统一管理
数据分别从每个学校提交上来

当其中一所学校的数据出了问题,如人为破坏等
则恢复的时候只需恢复这个学校的数据
不影响其他学校
这就是按条件备份的一种:按所在学校备份

如果采用整体备份来备份数据
则恢复时将每个学校的数据都恢复
这样就会导致每个学校从上次备份到现在还原的这段时间的数据都丢失

但如果采用按条件备份
可以使还原数据时数据丢失情况减少
但又会导致备份文件过多,难以管理

权衡之后
现在我打算采用在最开始备份整个数据库
然后每天自动进行增量备份的方案
关于增量备份我还不太了解
书上所说也不太详细
还望对这方面比较了解的朋友多多指点[:)]
 
增量备份和差异备份其实一个意思。 都是SERVER通过一个操作时段内的日志文件记录
完成的。
日志的生成: 在SERVER上, 每次更新事务的开始和中间执行过程。 都在服务器的高速
缓冲中完成。 在COMMIT事务的时候(这个点叫检查点) ,服务器将事务对各表的修改
内容和时间保存到日志中。
服务器处理增量备份和差异备份 是依靠日志记录找到具体各表被如何操作的。
 
感谢王大侠指点,我再研究下[:)]
 
研究结果出来了吗? 呵呵。 我已经想过好几年了。 对于复杂系统
实在没什么好办法。 所以我现在备份SQL SERVER数据库就是简单的 COPY 他的数据文件
然后备份起来
 
《SQLServer2000编程员指南》的第15章提到关于数据备份的方法。除了直接使用其
企业管理器操作外,用Sql命令Backup Database和Restore Database也可以实现增量
备份(以前只用它们来做整体备份),只要设置其参数,我还要再试试,特别是数据
恢复。。。
 
死土豆,最近你的qq号是多少,很想红烧土豆,快给qq号码,我的是31481622。给你常用的哪个
 
学习,顺便帮忙up一下:)
 
^_^,土豆阿,我原来在公司不是做了一个吗?虽然比较烂但是核心还是都有了吗??
难道我人走了我做的东西也全给删???

如果是只对MS SQL SERVER的话,呵呵用MS SQL SERVER提供的SQLDMO.DLL是一个不错的选择
而且编程简单
 
> 对于数据库相关的应用系统,常有需要对业务数据进行备份的功能。
这是事实,但如果说要备份功能要做在应用系统里面,说明这是个小系统,一个大的数据库
系统必然有其专门的DBA,备份、恢复及数据库系统管理是由专人或专门的DBA小组来完成的
在这个前提下,要做的也就是小系统(相对数据量而言)的备份。正如你说,有两个办法进
行备份与恢复,一是数据库级的,即利用数据库的一些工具进行操作,如是文件型数据库例
如Access,DBIMS,Paradox等,直接在没有数据访问的情况下进行操作系统级备份即可。这
样没必要做所谓的通用,可以根据具体的数据库系统来做方案;二是业务级,即利用SQL把
需要备份的数据进行导出操作,需要备份时再用SQL插入即可。由于各种数据库系统可能有
自己专门的SQL扩展,所以你要做成通用的话可能就要牺牲性能,只用标准的SQL语句来完成
操作。当你数据量大到一定程度的时候,你可能就会发现通用所带来的性能损失不可忍受了
呵呵,可能你又会为具体的数据库写代码。
 
顶部