大体结构如下:
SQLServer1(发布服务器) <---数据复制同步---->SQLServer1(订阅服务器)
| |
| |
业务服务器1 业务服务器2
两个相同结构之间的数据库可以采用SQLServer2005的基于事务日志的复制来实现热备和负载均衡,但是我有一个问题想请教:两个数据库同一个表的同一条记录被不同服务器同时修改会造成冲突,SQLServer会以发布服务器为准进行冲突解决,但是这样由于订阅服务器的更改会回滚会造成业务数据不是想要得到的结果,想问下各位一般怎么来实现双机热备和负载均衡,请提供大致的思路,谢谢!
------解决方案--------------------
哇!好高深啊!
帮顶,等大牛!
两个数据库同一个表的同一条记录被不同服务器同时修改
------解决方案--------------------
两个数据库同一个表的同一条记录被不同服务器同时修改会造成冲突?
这种事情出现不了的,如果出现了,SQL SERVER早就退出江湖了。
至于双机热备份可参考如下的内容:
双机热备份安装文档
(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
重新启动后,取出光盘,关闭NT2
3. 打开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上写入签名