• 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)在数据库镜像方案中,数据库(主体数据库)的每次更新都在独立的、完整的数据库(镜像数据库)副本中立即重新生成。主体服务器实例立即将每个日志记录发送到镜像服务器实例,镜像服务器实例将传入的日志记录应用于镜像数据库,从而将其继续前滚。
      

  • 相关阅读:
    Wannafly 挑战赛12 E
    HIT ACM 2018春 week2 codeforces.com/gym/101652 题解
    Hihocoder [Offer收割]编程练习赛49 题目4 : 第K小先序遍历
    HDU
    ZOJ
    HYSBZ
    POJ
    HYSBZ
    POJ 2796 Feel Good 题解
    逆元基本知识
  • 原文地址:https://www.cnblogs.com/lwhkdash/p/3071658.html
Copyright © 2020-2023  润新知