sql2000数据库备份方法 SQL Server 2000数据库备份方案

文章浏览阅读2k次。sql server数据库备份方案2008-08-05 13:15SQL Server 数据库备份方案为了保证SQL Server 数据的安全

SQL Server 数据库备份方案

为了保证SQL Server 数据的安全,数据库管理员应定期备份数据库,在不同情况下应采用不同备份数据库备份策略,一方面维持数据的安全性,另一方面也可保持SQL Server 能顺畅运行。尽最大的努力减少由于数据的损坏对客户造成的损失。

概念

1) 备份工作规划

计算机软硬件的稳定性还未达到非常稳定的状态,计算机中的数据仍有损失或毁坏的情况发生。存在于计算机内的数据不安全,即使采用容错设备,也无法保证数据库 100%安全。 计算机硬件的费用可能很高,但计算机数据更珍贵,做好数据备份,可保证在各种意外发生情况时,仍能保持有数据库的完整性。 管理员必须花时间来备份数据库,但 SQL SERVER也提供不少自动化功能。

2)备份方式

数据库——完全

就是备份整个数据库的内容。若将整个数据库的内容都备份下来,需很多的存储空间来存放备份数据,但其好处是在还原数据库时,也只要将整个数据库从一份数据库备份还原到 SQL SERVER 中就可以了。它是其他备份的基础,在做其他备份之前,必须得做此种方式的备份。

数据库——差异 (Differential)

只备份从上一次执行“完全”数据库备份后有改动的数据,因此所需要的备份时间和备份空间都比“完全” 方式少,所以此方式最适合作为经常性的备份方式。

事务日志(Transaction Log)

只备份事务记录文件的内容,由于事务日志文件只会记录我们在前一次数据库备份或事务日志记录备份之后,对数据库所做的变动过程,也就是只记录某一段时间的数据库变动情况,因此在做事务记录备份之前,必须做一次“完全”的数据库备份

文件和文件组:

如果数据库的内容分散存储于多个文件或文件组,而且数据库已非常大,大到进行一次完整的数据库备份会有时间和存储空间上的问题。这时就可以使用此方式来备份数据库的部分文件或文件组。由于每次只备份部分的文件或文件组,因此需做数次不同的备份才能完成整个数据库的备份。才用此方式备份也有个好处,就是当毁坏的数据只是数据库中的某个文件或文件组时,也只要还原坏的文件或文件组备份就可以了。

3)备份方案制订原则

规划数据库的备份策略,需要考虑备份的各项变量,必须同时考虑到还原作业的进行。在做备份时,可考虑以下几点。

(1) 有多少时间以及在那些时段可进行备份

(2) 数据库变动的频率如何

(3) 数据库大小

(4) 当数据库出问题时,用户愿意等待多久让数据库还原完毕

(5) 应采用何种备份方式,做怎样的搭配

(6) 要使用哪种存储介质

4)备份方案

(1)完全数据库备份配合事务日志备份

对于数据库数据比较大,但每天的变动的内容小,可考虑采用此方式。可定期做一次完整的数据库备份,例如:每周或每月做一次“完全”数据库备份。然后再以较段短的周期,如每天或每两天做一此事务日志备份。这样平时备份工作负担比较轻,发生以外时,可将数据还原到最近期的状态。

(2)完全数据库备份配合差异式备份

此方式是将前一种方式中的事务日志备份方式改成差异式备份。其优点是在做还原时,只需在做完最近一次数据库备份的还原后,再用前一天的差异备份来还原就可以了,不像使用事务记录备份时,需一天一天还原。缺点是在比较后的日子里,每次做差异备份所需的时间和空间会增加。

(3)三种备份方式的综合使用

由于事务记录备份和差异备份各有其优缺点,因此我们可以将两种方法结合起来使用。对于数据信息非常重要,每1、2小时备份一次,可能的损失只是1、2个小时的数据。

(4)当数据库过大,有不易备份的问题时,可以采用文件或文件组备份方式,可考虑将数据库分开存于不同的文件和文件组中,然后以文件和文件组的方式将整个数据库分数次备份。此外,如果数据库中只有部分表经常变动,另一部分很少变动,也可考虑将这两部分存于不同的文件和文件组中,然后用不同的备份频率来备份其内容。 采用此方式备份数据的缺点是:必须数次操作才能备份完数据。

(5)使用备用服务器

采用此方式是再准备一台服务器,先在原服务器上做完全的备份,再把此备份放到备份服务器上做还原,使两边的数据同步,以后可以定期对原数据库做事务日志备份,把事务日志放到备份服务器上还原。当原服务器出现问题既可使用备份服务器接上网络提供服务。

注意:系统数据库的备份与还原是很多用户在定义数据库备份方案中容易忽略的,系统数据库中虽然不保存业务数据,但它保存了很多SQL Server的设置,如果不备份系统数据库,那么在服务器发生故障导致系统损坏时,重新配置所有的SQL Server设置将是一个噩梦DEMO

方案一 数据库备份(常用方案)

在SQL Server备份窗口,可以通过调度设置,将当前进行的备份处理设置为定时自动处理的作用。具体的步骤如下:

1. 展开一个服务器组。

2. 展开一个服务器( SQL Server实例)。

3. 展开【数据库】,右单击要备份的数据库,在弹出的菜单中选择【所有任务】—〉【备份数据库】命令。

4. 在随后打开的SQL Server备份窗口中,设置备份的相关选项。参见前面的备份方案

单击【常规】选项卡,在【调度】项中,选中【调度】复选框,然后单击【调度】复选框后的【…】按钮。在随后出现的【编辑调度】对话框中,设置时间调度安排。

5. 设置完成后,单击【确定】按钮,SQL Server将执行备份操作,同时在【SQL Server 代理】—〉【作业 】中自动建立对应的作业。

6. 在【SQL Server 代理】—〉【作业 】窗口中,可以像处理普通作业一样修改或删除数据库备份窗口中定义的备份计划。

演示

方案二 数据转换法(DTS)

具体的方案就是:

1.主服务器和备份服务器装载完全一样的操作系统和数据库软件,以及相应编制的管理软件;

2.事先选定需要定期更新的表、视图、存储过程等等,必要时可选择全部数据库更新;

3.使用SQL Server 提供的数据转换服务导入/ 导出向导(以SQL Server2000 为例) ,利用复制 SQL Server 对象任务,将 Microsoft SQL Server 对象从SQL Server 的一个实例复制到另一个SQL Server 中;

4.编辑反复出现的作业调度,确定发生的频率和具体时间,一般情况下,由于数据量较大,不提倡每日发生多次,尽量安排在网络空余时间发生。

这个方案优点是:

1.成本低、可靠性高,操作简单,较易维护;

2.系统转换时间短,备份系统替换主服务器只需几分钟。即使出现意外,备份系统很快就会恢复正常,只损失少量数据,重新输入即可;

3.本地和异地备份都是利用晚上网络空闲时间进行的,没有增加日常网络流量,不会增加网络负担。

注意选择传输对象,相同版本的SQL Server 可以相互,或者由低版本向高版本SQL Server 备份,如:

SQL Server 7.0 的实例备份到 SQLServer 2000 的实例。

SQL Server 2000 的实例备份到另一个 SQL Server 2000 的实例。

备份的操作步骤:

1.打开企业管理器,选择SQLServer 服务器的数据库,单击鼠标右键,选择“所有任务”,并点选“导入数据”或“导出数据”。 如果是在主服务器上进行操作,选导出数据;在备份服务器上进行操作,则选导入数据。

2.第一步操作后,调出“数据转换服务导入/ 导出向导”界面,单击“下一步”,进入“DTS 导入/ 导出向导”的选择数据源界面,选择“目的”,选择“制定表复制或查询”,选择要复制的对象。 弱

做选择时,首先根据具体的客户端选择数据源,如果是OLE DB客户端,选择“用于SQL Server的Microsoft提供的OLEDB 程序”。

然后选择提供数据源的服务器,接下来选择进入数据库的方式,可选择“使用Windows 身份验证”或“使用SQL Server 身份验证”。 如果选“使用SQL Server 身份验证”,须填写SQL Server 认可并对数据有修改权的用户,一般可选“SA”及其密码。最后选择要复制的数据库。

3.在“制定表复制和查询”中,选择“在SQL Server数据库之间复制对象和数据”,然后单击下一步。选择具体复制对象和相应的选项等等.。

4.通过保存调度和复制包,定制进行复制的时间和频率。

5.全部设置完成后,提示会列出源、目的、采用的方式、数据库等选项,由你确认完成。

6.如果设置结束后要进行定制时间修改,在企业管理器中,通过服务器、数据库、管理、SQL server 代理、作业,然后选择具体的作业,调出界面进行修改。

至此,你就可以在自己的中小企业环境中,轻松实现多台数据库服务器间的定时自动数据备份了。

演示

方案三 数据库维护计划+Xcopy命令(推荐使用)

1. 展开一个服务器组

2. 展开一个服务器实例(SQL Server实例)。

3. 展开【管理】,右击【数据库维护计划】,在弹出的快捷菜单中选择【新建维护计划】命令。

4. 在随后出现的【数据库维护计划 —(Local)】对话框中,单击【下一步】按钮跳过欢迎页,在接下来的【选择数据库】步骤中,定义要备份的数据库。

5. 单击【下一步】按钮,跳过与数据库备份无关的步骤,在【指定数据库备份计划】步骤中,选择【作为维护计划的一部分来备份数据库】复选框;通过单击【磁带】或者【磁盘】单选按钮来选择备份设备;单击【调度】选项右边的【更改】按钮,可以在随后出现的【编辑反复出现的作业调度】对话框中设置维护计划的时间安排。

6. 单击【下一步】按钮,如果在步骤(5)中,备份设备选择的是【磁盘】设备,则会进入【指定备份磁盘目录】步骤,根据实际情况,设置此步骤中的内容。

7. 单击【下一步】按钮,进入【指定事务日志备份计划】步骤,如果需要进行事务日志备份,则选择【作为维护计划的一部分来备份事务日志】复选框。备份事务日志的其他设置步骤参考(5)~(6)。

8. 根据需要设置其他步骤,最后进入【正在完成数据库维护计划向导】步骤,设置好【计划名】,单击【完成】按钮完成数据库维护计划的定义。

9. 完成步骤(1)~(8)后,单击【数据库维护计划】,在企业管理器控制台右边的详细信息窗口中就可以看到定义好的数据库维护计划,同时,展开【SQL Server代理】—〉【作业】,可以【作业】右边的详细窗口中,可以看到维护计划自动建立的备份出路作业。

10. 通过有机维护计划,选择【属性】命令,可以修改已经定义的维护计划。

11. 通过右击维护计划,选择【删除】命令,可以删除已经定义的维护计划,同时【SQL Server 代理】—〉【作业】中的相关作业也会自动删除。

新建一个批文件 Copy.bat具体脚本如下:

@echo off

title 正在传输数据库备份文件到远程备份服务器上!

echo 提示:开始验证服务器上是否存在备份文件!

echo 请稍候!

if exist F:/DBback/*.bak (goto Process ) else goto UnFound

:Process

echo 提示:在服务器上找到了备份文件!

echo ——————————————————————————-

echo 提示:开始删除远程备份服务器上的原始文件!

rem 备注:下列IP地址为远程备份服务器的IP地址!

del //192.168.244.24/DBback /q /s /f

del //192.168.244.24/DBback/*.* /q /s /f

if errorlevel 0 goto success

:success

echo 提示:成功删除原始文件!

echo ——————————————————————————-

echo 提示:开始复制数据库备份文件到远程备份服务器//192.168.244.24/DBback!

echo 请稍候!

rem 备注:请具体更改//192.168.244.1/DBback为服务器备份文件存放的位置。//192.168.244.24/DBback为备份服务器上存放的位置!

xcopy //192.168.244.1/DBback //192.168.244.24/DBback /y /f

rem 备注:当Xcopy命令结束后返回的Errorlevel为4说明磁盘控件不足。当Xcopy命令返回0时说明成功完成操作!

if errorlevel 4 goto lowmemory

if errorlevel 0 goto showmessage

:lowmemory

echo 警告:请查看磁盘空间是否不足!

:UnFound

echo 警告:在服务器上找不到备份文件,批任务将要结束。服务器备份工作似乎没有正常进行,请确认服务器是否正常生成备份文件!

goto exit

:showmessage

echo 提示:批任务完成!

echo 提示:成功复制数据库备份到远程服务器//192.168.244.24/DBback!

echo 按任意键结束退出!

echo ——————————————————————————–

:exit

pause

echo 成功复制PersonnelM数据库备份到远程服务器//192.168.244.24/1上!

Pause

利用Windows 任务计划来调度批任务

1. 单击“开始”—〉“程序”—〉“附件”—〉“系统工具”—〉“任务计划”

2. 双击“新建任务计划”,弹出“任务计划向导”单击“下一步”。在选择任务窗体中选择“浏览”。我们选择要调度执行的Copy.bat文件。

3. 在接下来弹出的窗体中为我们的任务计划起个名称并且选择执行频率。这里我们选择“每天”

4. 在密码确认窗体中输入本机的密码。单击“下一步”选择“完成”。至此任务计划设置完成。(有需要的话可以单击选择“在单击完成时,打开此任务的高级属性”复选框以便对此任务进行高级设置!)

方案四 同步备份服务器(脚本)

/*该部分参考了邹建的脚本*/

/*–说明:

下面的代码演示了如何利用日志还原功能,将主数据库中的数据变化及时反馈到备用数据库中

备用数据库的数据可以随时用于查询,但不能被更新(备用数据库只读)。

–*/

–首先,创建一个演示用的数据库(主数据库)

CREATE DATABASE Db_test

ON

( NAME = Db_test_DATA,

FILENAME = 'c:/Db_test.mdf' )

LOG ON

( NAME = Db_test_LOG,

FILENAME = 'c:/Db_test.ldf')

GO

–对数据库进行备份

BACKUP DATABASE Db_test TO DISK='c:/test_data.bak' WITH FORMAT

GO

–把数据库还原成备用数据库(演示主数据库与这个备用数据库之间的同步)

RESTORE DATABASE Db_test_bak FROM DISK='c:/test_data.bak'

WITH REPLACE,STANDBY='c:/db_test_bak.ldf'

,MOVE 'Db_test_DATA' TO 'c:/Db_test_data.mdf'

,MOVE 'Db_test_LOG' TO 'c:/Db_test_log.ldf'

GO

–启动 SQL Agent 服务

EXEC master..xp_cmdshell 'net start sqlserveragent',no_output

GO

–创建主服务器数据训与备用服务器数据库之间同步的作业

DECLARE @jogid uniqueidentifier

EXEC msdb..sp_add_job

@job_id = @jogid OUTPUT,

@job_name = N'数据同步处理'

–创建同步处理步骤

EXEC msdb..sp_add_jobstep

@job_id = @jogid,

@step_name = N'数据同步',

@subsystem = 'TSQL',

@command = N''

–主数据库中进行日志备份

BACKUP LOG Db_test TO DISK=”c:/test_log.bak” WITH FORMAT

–备用数据库中还原主数据库的日志备份(应用主数据库中的最新变化

–实际应该时主数据库备份与备用数据库的还原作业应该分别在主服务器和备用服务器上建立,并且备份文件应该放在主服务器和备用都能访问的共享目录中

RESTORE LOG Db_test_bak FROM DISK='c:/test_log.bak' WITH STANDBY='c:/test_log.ldf',

@retry_attempts = 5,

@retry_interval = 5

–创建调度(每分钟执行一次)

EXEC msdb..sp_add_jobschedule

@job_id = @jogid,

@name = N'时间安排',

@freq_type=4,

@freq_interval=1,

@freq_subday_type=0x4,

@freq_subday_interval=1,

@freq_recurrence_factor=1

— 添加目标服务器

EXEC msdb.dbo.sp_add_jobserver

@job_id = @jogid,

@server_name = N'(local)'

GO

–通过上述处理,主数据库与备用数据库之间的同步关系已经设置完成

–下面开始测试是否能实现同步

–在主数据库中创建一个测试用的表

CREATE TABLE Db_test.dbo.TB_test(ID int)

GO

–等待1分钟30秒(由于同步的时间间隔设置为1分钟,所以要延时才能看到效果)

WAITFOR DELAY '00:01:30'

GO

–查询一下备用数据库,看看同步是否成功

SELECT * FROM Db_test_bak.dbo.TB_test

/*–结果:

ID

———–

(所影响的行数为 0 行)

–*/

–测试成功

GO

–最后删除所有的测试

DROP DATABASE Db_test,Db_test_bak

EXEC msdb..sp_delete_job @job_name=N'数据同步处理'

GO

/*===========================================================*/

/*–服务器宕机处理说明

使用这种方式建立的数据库同步,当主数据库不可用时(例如,主数据库损坏或者停机检修)

可以使用以下两种方法使备用数据库可用。

–*/

–1. 如果主数据库损坏,无法备份出最新的日志,可以直接使用下面的语句使备用数据库可读写(丢失最近一次日志还原后的所有数据)。

RESTORE LOG Db_test_bak WITH RECOVERY

–2. 如果主数据库可以备份出最新日志,则可以使用下面的语句。

–先备份主数据库的最新的事务日志

BACKUP LOG Db_test TO DISK=''c:/test_log.bak'' WITH FORMAT

–再在备用数据库中恢复最新的事务日志,并且使备用数据库可读写(升级为主数据库)

RESTORE LOG Db_test_bak FROM DISK='c:/test_log.bak'

原创文章,作者:筱凯,如若转载,请注明出处:https://www.jingyueyun.com/ask/416.html

(0)
筱凯筱凯
上一篇 2024 年 7 月 11 日
下一篇 2024 年 7 月 11 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

云产品限时秒杀。精选云产品高防服务器,500M大带宽限量抢购  >>点击进入