SQL2008双机热备方案Question0Sign in to vote公司要上一套系统,DB用SQL2008,怎么实现双机热备?一种方案是用windows的故障转移群集搭配SQL自己的群集功能,这种方案需要有共享存储,我现在在虚拟测试环境没办法做实验,所以暂时先不考虑这个。
另外一种是用镜像的方式做双机热备,DB都放在服务器上,不用外接存储,主节点服务器DB实时复制到备用节点中,主节点故障后自动跳到备用节点,不会出现服务中断的问题。
这种方式能否实现,该如何操作?因为没做过这种,所以思路有些乱,需要高手们给点指引,谢谢啦。
Friday, November 09, 2012 7:42 AMReply|Quote Rik1012 10 PointsAnswers0Sign in to vote你好,你的方法是不是要有3台服务器安装SQL,一台主机,一台备机,一台做见证,安装完SQL 后,打开SQL输入你提供的命令,来实现镜像功能?因为以前没做过这块,所以比较小白,想细致了解一下,高手有空来指点指点,谢谢了。
你好,那个见证服务器是可选的,你可以选择安装也可以不安装,见证服务器的作用就是,如果主机出错,那见证服务器就会自动地实现故障转移,然后使备机转化成主机,代替主机继续工作,如果你不安装的就只好出错的时候,自己手动转移了。
也不是说要输入命令,SSMS 里这些都有的,你直接点击就可以了,因为我配置的时候也不愿意敲代码,不过这里有现成的你可以直接复制就好。
这篇文档可以手把手教你如果配置,不用写命令,请参考:/p-690922020761.html 。
有什么不清楚的,在问我们,大家相互学习啦。
Thanks,Amy Peng立刻免费下载TechNet论坛好帮手Marked as answer by Rik1012Tuesday, November 13, 2012 1:50 AMMonday, November 12, 2012 2:52 AMReply|Quote Amy Peng - MSFT 20,055 PointsAll replies0Sign in to vote你说的故障转移群集和共享存储是HA,微软集群不是个什么好东西,个人看法只热备的话应该部署镜像Try SQL Server 2008QQ:********************************,November09, 2012 9:56 AMReply|Quote dgdba OEM制造行业1,480 Points0Sign in to voteAgree, books online tells you how to set db mirroring step by step.Friday, November 09, 2012 1:47 PMReply|Quote rmiao News 32,240 Points0Sign in to vote微软集群不是个什么好东西,dgdba大侠你也太偏激了吧我做过SQL2005的镜像,不过步骤跟2008应该差不多,给你一些示例代码,网上找的,自己亲自测试成功数据库:S_C_SC网段:192.168.1.X--SQL2005数据库镜像的步骤--1、检查SQL Server 2005数据库--只有SQL Server 2005 标准版、企业版和开发版才可以建立数据镜像。
--其他版本即Express只能作为见证服务器--要保证打上SP2补丁SELECTSERVERPROPERTY('productlevel')--2、主备实例互通--实现互通可以使用域或证书来实现,考虑实现的简单,以下选取证书的方式实现。
注意:实现“主备数据库实例互通”的操作只需要做一次,每一对主备实例(不是数据库)做一次互通。
-------------------------------------------------------------1、设置镜像数据库为完整恢复模式alter DATABASE S_C_SC set recovery FULL--2、创建证书(主备可并行执行)--主机执行USE master;CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'joe'; CREATE CERTIFICATE HOST_A_cert WITH SUBJECT ='HOST_A certificate' ,START_DATE = '2012-09-25';--备机执行USE master;CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'joe'; CREATE CERTIFICATE HOST_B_cert WITH SUBJECT ='HOST_B certificate' ,START_DATE = '2012-09-25';--见证执行USE master;CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'joe';CREATE CERTIFICATE HOST_C_cert WITH SUBJECT ='HOST_C certificate' ,START_DATE = '2012-09-25';--3、创建连接的端点(主备可并行执行)--主机执行:USE masterCREATE ENDPOINT Endpoint_MirroringSTATE = STARTEDASTCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL )FORDATABASE_MIRRORING( AUTHENTICATION = CERTIFICATE HOST_A_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );--备机执行:USE masterCREATE ENDPOINT Endpoint_MirroringSTATE = STARTEDASTCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL )FORDATABASE_MIRRORING( AUTHENTICATION = CERTIFICATE HOST_B_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );--见证执行:USE masterCREATE ENDPOINT Endpoint_MirroringSTATE = STARTEDASTCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL )FORDATABASE_MIRRORING( AUTHENTICATION = CERTIFICATE HOST_C_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = WITNESS );--4、备份证书以备建立互联(主备可并行执行)--主机执行:USE master--BACKUP CERTIFICATE HOST_A_cert TO FILE ='D:\SQLBackup\HOST_A_cert.cer';BACKUP CERTIFICATE HOST_A_cert TO FILE ='D:\HOST_A_cert.cer';--备机执行:USE masterBACKUP CERTIFICATE HOST_B_cert TO FILE ='D:\SQLBackup\HOST_B_cert.cer';--见证执行:USE masterBACKUP CERTIFICATE HOST_C_cert TO FILE ='D:\SQLBackup\HOST_C_cert.cer';--5、互换证书----将备份到D:\SQLBackup\的证书进行互换,即HOST_A_cert.cer复制(是复制不是剪切)--到备机的D:\SQLBackup\。
HOST_B_cert.cer复制(是复制不是剪切)到主机的D:\SQLBackup--见证的证书HOST_C_cert.cer复制到主机和备机,主机和备机复制到见证--6、添加登陆名、用户(主备见证可并行执行)--以下操作只能通过命令行运行,通过图形界面无法完成。
(截至文档编写结束,SQL Server2005的版本号为SP2)--主机执行:USE masterCREATE LOGIN HOST_B_login WITH PASSWORD = 'test'; CREATE USER HOST_B_user FOR LOGIN HOST_B_login;--CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE ='D:\SQLBackup\HOST_B_cert.cer';CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'D:\HOST_B_cert.cer';GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login]USE masterCREATE LOGIN HOST_C_login WITH PASSWORD = 'test'; CREATE USER HOST_C_user FOR LOGIN HOST_C_login; CREATE CERTIFICATE HOST_C_cert AUTHORIZATION HOST_C_user FROM FILE = 'D:\HOST_C_cert.cer'; GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_C_login];GO--HOST_B_cert是第一步创建的证书--备机执行:USE masterCREATE LOGIN HOST_A_login WITH PASSWORD = 'test'; CREATE USER HOST_A_user FOR LOGIN HOST_A_login; --CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE ='D:\SQLBackup\HOST_A_cert.cer';CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'D:\HOST_A_cert.cer'; GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];USE masterCREATE LOGIN HOST_C_login WITH PASSWORD = 'test'; CREATE USER HOST_C_user FOR LOGIN HOST_C_login; CREATE CERTIFICATE HOST_C_cert AUTHORIZATION HOST_C_user FROM FILE = 'D:\HOST_C_cert.cer'; GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO[HOST_C_login];GO--见证执行:USE masterCREATE LOGIN HOST_A_login WITH PASSWORD = 'test'; CREATE USER HOST_A_user FOR LOGIN HOST_A_login; --CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE ='D:\SQLBackup\HOST_A_cert.cer';CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'D:\HOST_A_cert.cer'; GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];USE masterCREATE LOGIN HOST_B_login WITH PASSWORD = 'test'; CREATE USER HOST_B_user FOR LOGIN HOST_B_login;--CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE ='D:\SQLBackup\HOST_B_cert.cer';CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'D:\HOST_B_cert.cer';GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];--注意: 这里添加的登录名和用户是添加在master数据库里的不是要做镜像的那个数据库--这里添加的登录名和用户是用来做连接的,下面建立镜像关系才是修复孤立用户才是--修复要做镜像的那个数据库的孤立用户--建立镜像关系------------------------------------------------以下步骤是针对每个数据库进行的,例如:如果主机中有5个数据库以下过程就要执行5次。