SQL SERVER 2005 基于证书的镜像配置步骤

一:前言

  SQL SERVER数据库镜像其实是对一个数据库建立一个副本,并保持主数据库和副本数据库数据的同步。这样当主数据库遇到问题需要停止运行,就可以切换到副本数据库继续工作,保持系统的持续可用。主数据库称为"主体(principal)",而副本数据库成为"镜像(mirror)"。而主体和镜像之间互称为“伙伴(partner)”。主体和镜像相互切换这个动作称作"角色切换(role switching)",或者叫做"故障转移(failover)"。另外为了能在遇到问题后自动执行角色切换,可以加入一个见证服务器"witness"。见证服务器监视着主体和镜像,当发现主体不能访问时,则自动的执行角色切换动作,将镜像数据库切换为主体,继续提供数据服务。

  在“怎样配置数据库镜像”这个问题前,先来弄清楚一下“要配置什么”及“为什么这样配置”这两个问题。
  镜像的整个配置,其实就是解决一个“如何通信”的问题:
  1.镜像间的通信是通过端点(endpoint)进行的。端点指定了伙伴间或者伙伴与见证服务器间的通信协议,端口,验证方式和数据加密算法等等。
  2.有了端点的同时,在主体,镜像和见证服务器上还要分别添加用于对方登录的登录名和用户,并赋予这些登录名一个连接端点的权限。
  3.另外在非域环境中,需要使用证书来确保连接的安全,因此,需要创建和使用证书。
  

二:具体配置

  本次配置中,cruze为主体服务器系统名称,supra是镜像服务器系统名称,nissan-gtr是见证服务器系统名称

use master
go
--设置数据库的恢复模式为“完整恢复”
alter database test set recovery full

--****配置一:创建证书****----------
--创建主密匙
create master key encryption by password='123'

--创建证书
create certificate cruze_cer with subject='cruze_cer'

--将证书备份至文件,并且拷贝到镜像和见证服务器上
--(主体,镜像和见证服务器均要有其他任意一方的证书,以便为对方创建入站连接时能关联证书)
backup certificate cruze_cer to file='c:\cruze_cer.cer'
go
--************************----------

--******配置二:创建端点******
create endpoint endpoint_supra
state=started
as tcp(listener_port=5022,listener_ip=all)
for database_mirroring(authentication=certificate supra_cer,encryption=required algorithm aes,role=all)
go
--************************----------

--******配置三:创建端点******
--为镜像和见证服务器创建登录名和用户。
create login login_for_cruze with password='123'
create user user_for_cruze for login login_for_cruze

--以对方的证书文件创建证书,并将证书与该用户关联起来。
create certificate cert_supra authorization user_for_cruze from file='c:\cruze_cer.cer'

--不要忘记赋予该登录名连接端点的权限
grant connect on endpoint::endpoint_supra to login_for_cruze
--************************----------
--三大步骤配置完成,但以上代码仅仅是针对主体服务器的配置,另外需要在镜像和见证服务器上进行同样原理的配置



----备份主体服务器上的数据库和日志,并将备份文件拷贝到镜像服务器上
backup database test to disk='c:\test.bak'
backup log test to disk='c:test_log.bak'


--在镜像服务器上回复数据库(可能还要回复日志)。必须使用with norecovery子句,但是否覆盖(replace)则按情况而定
restore database test from disk='c:\test.bak' with norecovery,replace
restore log test from disk='c:\test_log.bak' with norecovery


--最后设置伙伴的通信地址(在主体服务器和镜像服务器上都要执行)
alter database test set partner='tcp://supra:5022'

--并在主体服务器上设置见证服务器
alter database test set witness='tcp://nissan-gtr:5022'

--停止镜像
alter database test set partner off

--故障转移(角色切换)
alter database test set partner failover

   

  在整个配置过程中,难免会出现一些错误,特别是在建立端点后,主体,镜像和见证服务器不能相互连接的错误。出现这些情况时,sql server提供的可用的信息非常少。可以查看本系统或者目标系统
上的事件日志中查看日志记录,往往能得到非常明确的错误信息。

  主题服务器是如何与镜像服务器同步数据的:(msdn)在数据库镜像方案中,数据库(主体数据库)的每次更新都在独立的、完整的数据库(镜像数据库)副本中立即重新生成。主体服务器实例立即将每个日志记录发送到镜像服务器实例,镜像服务器实例将传入的日志记录应用于镜像数据库,从而将其继续前滚。
  

posted on 2013-05-15 14:51  wyman25  阅读(674)  评论(0编辑  收藏  举报

导航