数据库实时双机备份实际应用的最佳方案

解决方案 »

  1.   

    参考:
    双机热备份安装文档
    (Ver 1.1 2002.11.26)
    下面的文档以IBM Netfinity 7600/xSeries 250为例!
    说明如何安装SQL 群集
    本方案我已经在4家医院使用,是本人在总结了多次经验教训后写出来的1. 从IBM下载,具体的地址参阅IBM手册。Server Raid Firmware软件,升级BIOS,具体升级方法参考IBM升级文档
    2. 制作驱动程序
    在其它的机器中,插入Server Guide x.x.x System Upates And Applications光盘,next->next->选择IBM Netfinity 7600/xSeries 250 System Diskettes ->next->选择Advanced System Management Device Driver Dsikette 和IBM ActivePCI Software for Microsoft windows 2000->Next->Next->插入空的软盘,系统开始自动制作驱动程序盘,共2张。
    插入ServerRaid x.xx Support CD,将光盘中Diskettes/tools/disk4w32.exe和Images/dd.img 文件拷贝到硬盘中,然后运行 dsk4w32 dd.img a: 将文件释放到一张新的软盘中。
    3. 在nt1,nt2上安装win2000 , 切记必须去掉IIS,和群集服务
    设置IP地址
    NT1:网卡1:IP 192.168.0.2,mask:255.255.255.0,Dns1:192.168.0.2,Dns2:192.168.0.3
    网卡2: IP 10.0.1.1 ,mask: 255.0.0.0, Dns1:10.0.1.1,Dns2:10.0.1.2
    Nt2:网卡1:IP 192.168.0.3,mask:255.255.255.0,Dns1:192.168.0.3,Dns2:192.168.0.2
    网卡2:IP 10.0.1.2 mask:255.0.0.0 Dns1:10.0.1.2,Dns2:10.0.1.1
    安装后需要安装必要的驱动程序
    右击我得电脑->属性->硬件->设备管理器->可以看到2个未知的设备,先卸栽第一个未知设备,然后右击计算机名,选择扫描硬件驱动,插入制作好的Advanced System Managerment软盘,安装驱动
    然后卸栽第二个未知设备,同样的方法扫描驱动,然后插入Active PCI Device软盘
    安装后,必须重新启动计算机
    最后卸栽第三个未知设备,同样地方法扫描驱动,然后插入 ServeRaid 驱动软盘或光盘
    注意:如果硬盘上有东西,必须将所有的分区全部删除,然后必须重新启动!!!
    4. 重新启动 NT2 并放入SeveRaid 光盘
    系统会首先升级Bios 和 Firmware ,升级后重新启动,然后自动进入ServeRaid Manager
    在controller1,在Arrays 右击选择Create Arrays->Express Configuration for controller1->Next->选择Raid level 为1,(不要使用1E或5) 具体的选择和磁盘的数量有关,注意不可以选择Raid Levl 5,一般2个为1,多于2个用1+0,以4个为例,首先将2个磁盘设为1个组,做成Raid0,然后再将另外两个磁盘设为1个组,也做成Raid0,最后将这个磁盘做成Raid1
    重新启动后
    右击Controller1->选择Clustering Actions-Configure for Clustering,改Controller name=Node2,Partnet name=Node1,channel1=6右击controller1->选change strip-unit size 为16KB->选择YES
    单击窗口右上方的差号,选择Reboot
    重新启动后,取出光盘,关闭NT23. 打开NT1,插入ServeRaid 光盘
    注意此时系统会出现很多的信息,不能自动启动,这是因为磁盘阵列的控制权在Nt2上,按F5,系统自动更新Raid卡的BIOS,然后进入ServeRaid Manager右击controller1选择Restore to factory default Settings,在Arrays 右击选择Create Arrays->Express Configuration for controller1->Next->选择Raid level 为1,具体的选择和磁盘的数量有关,重新启动后
    右击Controller1->选择Clustering Actions-Configure for Clustering,改Controller name=Node1,Partnet name=Node2, channel1=7 右击controller1->选change strip-unit size 为16KB->选择YES
    单击窗口右上方的差号,选择Reboot
    重新启动后,取出光盘4. 安装最新的ServicePack,你必须安装最新的更新软件,以防止病毒的发生
    5. 修改目录方式
    Nt1
    开始->程序->管理工具->配置服务器->Active Directory->向下移动点击启动->选新域的域控制器->创建一个新的域目录树,创建新的域目录林继续安装->Dns全名为医院的简写,如ZZX ->是->域的NetBios名为ZZX->以下的操作全部选择默认
    安装后,系统必须重新启动
    在NT1启动后
    重新启动NT2
    开始->程序->管理工具->配置服务器->Active Directory->向下移动点击启动->选择现有域的额外域控制器->输入用户名administrator和密码没有,域名填写Nt1的域名如ZZX->Next ->单击浏览选择ZZX,下一步->其它的操作全部按照默认设置
    重新启动计算机6. 安装ServeRaid管理程序
    首先安装NT1
    放入ServeRaid光盘,按照向导安装ServeRaid Manager程序,安装后,将光盘中programs\winnt\cluster目录中的所有文件,拷贝到 C:\cluster目录中,备用
    Nt2
    放入ServeRaid光盘,按照向导安装ServeRaid Manager程序,安装后,将光盘中programs\winnt\cluster目录中的所有文件,拷贝到 C:\cluster目录中,备用
    7. 打开NT1,插入ServeRaid 光盘
    注意此时系统会出现很多的信息,不能自动启动,这是因为磁盘阵列的控制权在Nt2上,按F5,系统自动更新Raid卡的BIOS,然后进入ServeRaid Manage
    右击Controller1->选择Clustering Actions-Configure for Clustering, 
    merge group information中logical drive1为shared, Merge group=1,点击OK
    重新启动计算机8. 安装磁盘阵列,写入签名
    首先在NT1上
    右击我的电脑->管理->磁盘管理,计算机会自动显示,将签名写入磁盘1->当出现选择要升级的磁盘时,将磁盘1前的勾去掉->下一步->完成
    这是,磁盘1已经作为基本磁盘出现,绝对不能作为动态磁盘出现,如果是需要转换为基本磁盘
    右击磁盘1,选择创建分区->下一步->主磁盘分区->下一步->下一步->选择指定驱动器号为S: ,格式化为NTFS分区->完成
    关闭我的电脑
    然后将S:的卷标改为share
    在Nt2上写入签名
    在NT2上运行c:\cluster\support\Ipshahto.exe,右击我的电脑选择管理->磁盘管理,可以看到基本磁盘share盘,并且盘符为E:,单击磁盘E: 右击选择更改驱动器名和路径,指派驱动器号为S:,确定即可
    关闭我的电脑
    11. 创建群集管理员帐户
    该帐户建立方法是:开始->程序->管理工具->Active Directory 用户计算机->点击users,,右击选择新建-用户,用户登录名为clusterAdmin,姓cluster,名为admin,下一步->输入密码->选择密码永不过期,用户不能更改密码->完成
    然后选择刚刚建立的clusterAdmin,右击选择属性->在描述中输入,一些警告信息->单击成员属于,添加所有的组->应用,确定即可
    12. 安装群集软件
    首先安装Nt1
    在Nt1上,运行c:\cluster\support\ipshahto.exe
    等待几分钟
    然后插入2000光盘,在添加和删除组件中,选择群集服务,系统开始安装群集软件,系统拷贝数据后,当系统询问是否继续安装的时候,点击取消。然后运行 c:\cluster\setup.exe
    当出现添加或删除 windows 2000组件时,选择群集服务->按照向导安装->单击我理解->下一步->然后选择群集中的第一个节点->群集的名称为Nt,如果原服务器的名为Nt,请改为其它的名称->下一步->输入群集服务使用的域帐户为clusteradmin,密码->下一步->当计算机出现网络连接时按下面配置
    3com 网卡(另外添加的100M网卡),选择只用于混合群集通讯,IBM网卡选择只用于群集通讯,选择是,在群集IP地址中IP输入虚拟服务器server的IP地址为192.168.0.4,子网:255.255.255.0
    网络为本地连接,就是IBM网卡使用的连接,完成,按向导操作当出现IBM ServeRaid Cluster Configuration wizard->下一步->选择IPSHA DISK S:->下一步->完成->finish安装NT2插入2000光盘,在添加和删除组件中,选择群集服务,系统开始安装群集软件,系统拷贝数据后,当系统询问是否继续安装的时候,点击取消。在Nt2中运行c:\cluster\setup.exe ->选择群集服务->下一步->下一步->硬件配置窗口中,选择第二个或下一个节点->下一步->在创建或加入群集中选群集中,选择用下面帐户连接到群集,用户名为clusteradmin ,输入密码->下一步->确定,输入密码->下一步->完成->确定->系统重新出现IBM SeveRaid Cluster Configuration Wizard->下一步->完成->Finish13. 在Nt2上 ,安装Dns服务
    在添加和删除程序中,选择DNS服务,安装至此,群集服务已经安装完毕
    测试方法
    两台机器:开始->程序->管理工具->群集管理器
    组-单击 IP SHA GROUP,在右边的列表中查看 IPSHA DISK S: 的所有着是NT1还是NT2,应该为Nt1
    直接关闭NT1,等几分钟,看一下,IP SHA DISK S:的资源是否自动变为NT2同时在站机中
    开始->运行-> ping server –t 可以看到开始值 192.168.1.4 有响应,在关闭Nt1计算机后,出现无响应,然后重新有响应恭喜:群集已经安装成功了,如果不能自动切换,所有的步骤都必须重新来过!更新 BIOS除外。14. 备份设置
    重新开启Nt1
    右击我的电脑->管理->磁盘管理器->创建将磁盘0的其它部分做成一个扩展分区,然后创建2个分区,一个2048M的Fat32分区,盘符为F: 其它全部作为一个NTFS分区
    在Nt2上做同样的操作然后用软盘启动NT1和NT2
    用ghost备份分区的内容到 F: 盘中。
    14.安装SQL 2000 企业版
    放入光盘->选择安装服务器->选择虚拟服务器,名称为NT,或原服务器的名称,输入序列号,在故障转移集群中输入虚拟IP地址192.168.0.1,子网255.255.255.0,在出现请选择用来防治数据文件的群集磁盘中选择IPSHA DISK S:下的S:,系统会出现警告,选择是->下一步,输入群集管理员的用户名(clusteradmin)和密码,用户名,域->下一步->安装类型选择典型->下一步->在服务帐户中,选择对每个服务使用同一帐户,在服务设置中,用户名为clusteradmin ,输入密码,选择身份验证模式中选混合模式,根据需要输入Sa 的密码
    注意:必须严格按照步骤进行,一步也不能错,否则只有重新安装!
      

  2.   

    利用日志备份实现双服务器方案的处理示例(邹老大的.)
    /*--说明:
    下面的代码演示了如何利用日志还原功能,将主数据库中的数据变化及时反馈到备用数据库中
    备用数据库的数据可以随时用于查询,但不能被更新(备用数据库只读)。
    --*/--首先,创建一个演示用的数据库(主数据库)
    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'
      

  3.   

    SQL Server 2005数据库镜像简介(itpub)自从SQL Server 2000以来,你已经能够通过使用复制来创建一个备用的服务器、传输日志,以及备份和重新存储了——但是现在微软又引入了一个内建的工具,它可以实现自动的错误恢复。数据库镜像是SQL Server 2005的一个新特性,它允许你将一个SQL Server中的数据库内容镜像到另一个SQL Server上。它还让你可以在发生错误的时候,通过镜像数据库来进行错误恢复。Edgewood Solutions 的Greg Robidoux 回答了我们一些SQL Server 2005中有关数据库镜像的常见问题,同时还解释了为什么你现在就应该开始测试这个内建的功能来看看它最终是否会给你的环境带来好处。什么是数据库镜像?Robidoux:数据库镜像是将数据库事务处理从一个SQL Server数据库移动到不同SQL Server环境中的另一个SQL Server数据库中。镜像的拷贝是一个备用的拷贝,不能直接访问;它只用在错误恢复的情况下。因为是在SQL Server 2005中新引入的特性,这个功能只能用在,这个版本的软件中。在某种程度上说,它是复制和日志传输的混合体:你所有的事物都在事物级别(复制)上移动(日志传输)到你的数据库的一个镜像拷贝上,同时减少了你在实现日志传输或者复制的时候可能会面临的问题。复制包括大量的移动部分,并且如果你的数据库计划经常改变的话,要保证你的复制运行得流畅也是困难重重。对于日志传输,为了保证同步,同样需要实现很多的处理,例如创建备份、拷贝备份,以及备份重存。如果有一个进程崩溃了,整个处理过程就崩溃了。数据库镜像的工作方式是什么?Robidoux :要进行数据库镜像所需的最小需求包括了两个不同的SQL Server运行环境。主服务器被称为“基本的”,第二个服务器被称作“镜像的”。基本数据库就是你实际用着的数据库,镜像数据库就是你的数据库的备用拷贝。当事务写入你的基本服务器的时候,他们也同样被传送到并写入你的镜像数据库中。除了基本和镜像之外,你还可以引入另一个可选的组件,名为“证人”。证人数据库是第三个SQL Server 2005运行实例,它是在判断什么时候进行错误恢复的时候,用于基本和镜像之间内部交流。只有当你想实现自动错误恢复的时候用到这个选项。它实现了2比1投票的能力,当我的一个组件不可达,并因此需要进行错误恢复的时候。证人服务器只有在你想实现自动错误恢复的时候才需要用到。实现的方式是什么?Robidoux :数据库镜像提供了三种实现的方式。根据你想要用什么方式来进行错误恢复处理来进行选择。高可用性:这个操作模式选项允许你在两台服务器上同步事务写入,并支持自动错误恢复。要使用这个选项,你必须还要使用一个证人服务器。高保护:这个选项可以让你在两台服务器上同步事物写入,但是错误恢复是手工的。因为自动的错误恢复不是这个选项的一部分,所以也不会用到证人服务器。高性能:这个选项不关心两台服务器上的写入是否是同步的,因此在性能上有所提高。当使用这个选项的时候,你只能假设镜像服务器上的所有事情都是成功完成。这个选项只允许手工的错误恢复,因此不会用到证人服务器。时刻记住将你的数据自动恢复到第二个拷贝才是数据库镜像的真正好处。因此,大多数的实现可能都是使用的高可达性方式。其他的选项仍然提供了内建的错误恢复过程,但是前提是你在发生错误的时候对进行自动的错误恢复怀有极大的兴趣。数据库镜像可以工作在哪几个版本上?Robidoux :数据库镜像只能在标准版、开发版和企业版的SQL Server 2005中找到。基本服务器和镜像服务器的SQL Server运行实例都需要是这几个版本。证人服务器可以运行在任何版本的SQL Server上。此外,还有其他的一些特性是SQL Server的开发版和企业版上特有的,但是标准版具有最基本的功能。总结现如今,SQL Server 2005的数据库镜像已经关掉了,但是所有的功能仍然存在。数据库镜像可以通过使用检索标志来打开——但是微软现在并不支持这个功能了,所以不要在你的产品环境中运行它。数据库镜像将会在本年年末完全实现并被支持。要打开这个特性并开始你的测试,你可以看看以前的专家知识解答。微软正在寻找额外的反馈,所以你可以看看它是否可以作为你的SQL Server环境的候选。
      

  4.   

    ji qun zui hao,bu guo tou zi ye da