sqlserver2005数据库备份方式有哪几种?能否实现同一个数据库用户下的数据根据日期分块备份?不同实例下同名数据库数据实时同步?

0
已邀请:
2

Gabriel - 茕茕白兔 东走西顾 衣不如新 人不如故 2013-07-23 回答

楼上的同学已经介绍了MSSQL的几种常用备份方式。

我来说说关于其他2点
1.按日期分块备份
解决方案:MSSQL可以采用数据分区,将数据跟据日期定义进行分区,然后根据文件组进行备份可以实现。
2.不同实例下同名数据的实时同步。
解决方案:单独的服务器上多个实例之间同名数据库进行同步,意义不大,多数情况的不同实例的数据同步,建立与2台以上的服务器,多用于数据灾备,或者分析查询,常见的方式如下:
A:订阅发布,从A服务器发布后,B订阅,向B服务器推送。
B:订阅发布,从A服务器发布后,B请求,从B服务器拉取。
C:日志传送,将事物的日志从A服务器定时向B服务器传送。
D:同步镜像,A服务器接收数据后,同时立即向B服务器发送数据,保证数据一致性。
E:异步镜像,A服务器接收数据后,向B服务器发送数据,允许有延时,保证A服务的性能。

F:还有一些特殊的手段,比如我们可以采用类似触发器的形式,通过作业方式,将数据传送到指定的机器上库中,当然这个需要相当熟悉数据库语法和内部运作机制以及相关的数据库数据,曾有老师讲解到这点,无奈功力尚浅,有待进取。

以上几点是简介,后面有机会我们在逐步讲解每个应用的场景,个人理解,也不知道对不对,欢迎老师拍砖。

另外从我个人角度来讲MSSQL的同步,微软目前自有的同步方案,从严格的技术角度来讲,都存在延时,也就是我们的所说的异步问题,比如同步镜像,还有2012的AlwaysOn高性能组件,我们可以初略来看MSSQL的同步,都是从第一台DB接收数据后,然后同步到第二台DB上,从这个原理上来看,他们是高级版本的订阅发布和日志传送的功能,让延时减少到更低,来实现数据的可靠性。为什么这么讲,因为从MSSQL的集群配置上来看,他需要多台机器配置,默认生产数据的程序是指定到其中一台DB上的,而不是指到集群的仲裁机器上,仲裁只是来管理集群数据库的,而不是数据接收的中间件,它的原理上来讲已经不是同步,是生产数据程序向A服务器生产数据,然后A服务器再向其他服务器发送数据,这个过程是需要时间的,不能算真正意义上的实时同步。

欢迎指正。
1

wufeng4552 - IT男 2013-07-22 回答

SQL2005的主要备份方式有以下几种
1)完全备份
2)差异备份
3)日志备份
4)文件及文件组备份

没有太明白楼主的意图,不妨说的仔细点
如果是想把一些特定的对象备份可以选择文件及文件组备份
1)建立特定的文件组
2)将特定的对象建立在该文件组上
3)备份特定文件组
1

TravyLee - 尼玛!这哪是下雨,分明就是有人在泼水! 2013-07-23 回答



SQL备份
---------------
1、SQL数据库恢复模型
----------------------------------------------------------------------
1)完全恢复模型
-----------------
(1)备份时要备份数据库的数据文件和日志文件
(2)还原时使用数据库的备份的数据文件副本和全部日志信息来恢复数据库。
(3)能还原全部数据,并可以将数据库恢复到任意指定的时刻。
(4)为保证实现即时点恢复,对数据库的所有*作都将完整地记入日志,这样,日志占用空间较大,对性能也有所影响。
------------------
(2)大容量日志记录恢复模型
------------------
(1)备份时要备份数据库的数据文件和日志文件
(2)还原时使用数据库的备份的数据文件副本和全部日志信息来恢复数据库。
(3)日志中不记录[i]作细节(如select into、create index等),而只记录[/i]作的最终结果,因此占用日志空间小。
(4)只支持将数据库还原到事务日志备份的时刻,而不支持即时点恢复,因此可能产生数据丢失。
-------------------
(3)简单恢复模型
-------------------
(1)备份时只备份数据文件,还原时也用备份的数据文件恢复数据库。
(2)只能将数据恢复到数据文件备份的时刻,可能产生最多的数据丢失。
(3)不适于生产系统和大规模*作环境下选用。
-----------------------------------------
alter database d1 set recovery simple --设置数据库恢复模型
alter database d1 set recovery bulk_logged
alter database d1 set recovery full
----------------------------------------------------------------------
2、备份设备
----------------------------------------------------------------------
1)物理设备
---------------------------
disk:支持本地磁盘或者网络备份
tape:支持磁带机备份
name pipe:支持第三方备份软件
---------------------------
2)逻辑设备
---------------------------
永久备份文件:可以重复使用,应该在备份前创建。
临时备份文件:用于一次性备份,在备份时创建。
-------------------------------------------------
exec sp_addumpdevice 'disk','bak2','e:\back_device\bak2.bak' --创建永久磁盘备份设备
exec sp_addumpdevice 'disk','bak3','e:\back_device\bak3.bak'
----------------------------------------------------------------------
exec sp_addumpdevice 'disk','bak4','\\sv2\backup\bak4.bak' --创建网络永久磁盘备份设备
exec sp_addumpdevice 'disk','bak5','\\sv2\backup\bak5.bak'
----------------------------------------------------------------------
exec sp_dropdevice 'bak5' --删除备份设备
----------------------------------------------------------------------
backup database d3 to bak3 --将数据库备份到备份设备
backup database d4 to bak4
----------------------------------------------------------------------
restore headeronly from bak2 --查看备份设备中的内容
----------------------------------------------------------------------
backup database d3 to disk='e:\back_file\d3.bak' --将数据库备份到临时备份文件
backup database d4 to disk='e:\back_file\d4.bak'
----------------------------------------------------------------------
restore database d3 from bak3 --从备份设备还原数据库
restore database d4 from disk='e:\back_file\d4.bak' --从备份文件还原数据库
----------------------------------------------------------------------
3、使用多个备份文件存储备份
----------------------------------------------------------------------
1)SQL可同时向多个备份文件进行写*作。如果把这些文件放到多个磁带机或磁盘中,则可提高备份速度。
2)这多个备份文件必须用同业型的媒体,并放到一个媒体集中。
3)媒体集中的文件必须同时使用,而不能单独使用。
4)可以通过format命令将媒体集重新划分,但原备份集中的数据不能再使用。
--------------------------------------------------------------------
backup database d4 to bak4,bak5,bak6 with medianame='bak456',format --备份D4并形成Media Set
backup database d3 to bak4 --失败,因Media set中文件必须同时使用
backup database d3 to bak4,bak5,bak6 --成功,将D3也备份到Media Set中
restore headeronly from bak4,bak5,bak6--查看Media Set中的备份内容
----------------------------------------------------------------------
backup database d4 to bak4 with medianame='bak4',format --重新划分Media Set
backup database d3 to bak5,bak6 with medianame='bak56',format
----------------------------------------------------------------------
backup database d1 to bak1 with init --with init重写备份设备中内容
backup database d2 to bak1 with noinit --with noinit将内容追加到备份设备中
restore headeronly from bak1
----------------------------------------------------------------------
0

凉菜小妹 2013-07-23 回答

多谢各位达人!
1.如二楼所说,如果一个数据库文件太大,而我前台查询数据又不需要查看全部历史数据,而是查询最近三个月的数据,对于三个月以上的历史属于查询次数很少,为了提高.net查询效率,我希望把数据库中的历史数据截取掉单独保存,只保留最近三个月的数据,这就是我所说的数据库分块备份。
    []还有一点不懂得地方是,如果我想把恢复全部数据,如何对分块备份的数据文件进行操作?[/]

要回复问题请先登录注册