我用的是没有见证的,但找的文章里有镜像,所以都做一下补充,两个网址做的参考,

之所以在从他们那再补充一次是为了怕有一天他们的文章被删了我这还有个备用的,这两篇写的不错 其他的都不行 特别乱,这是找的最全的

主机名称为:HOST_A,IP地址为:

备机名称为:HOST_B,IP地址为:192.168.1.103

要镜像的库:test

这是已经做好的状态,左边主机,右边备机

服务器重启会镜像没了 服务器镜像有什么用_数据库

服务器重启会镜像没了 服务器镜像有什么用_网络_02

 

 


一、首先要确保两个服务器的数据库的版本为标准版、企业版或者开发版,检测版本可以用命令:


1     select@@version;


 


 


二、把数据库恢复模式改为完整模式:


1     USE master;
2     ALTER DATABASE <DatabaeName>   //<DatabaeName>既为需要配置镜像的数据库名 3 SET RECOVERY FULL;


或者:


服务器重启会镜像没了 服务器镜像有什么用_网络_03

如果是简单模式,在简历镜像的时候会报错:无法启用数据库镜像,因为'DataName'数据库在两个伙伴上都不处于完全恢复模式


 


三、在镜像服务器上建立空库。


在镜像服务器上建立和主服务器上名称一样的空数据库,为的是配置用户。


 


 


四、在镜像服务器上建立和主服务器上一样的用户,并赋予数据库


 


4.1、在主服务器上执行命令:


1     USE master;
2     select sid,name from syslogins;


 


服务器重启会镜像没了 服务器镜像有什么用_网络_04


出现如上图的结果。


 


4.2、在镜像服务器上安装这个表建立用户,大部分都是系统用户不用管,只建立我们自定义的用户。


1     USE master;
2     exec sp_addlogin 3 @loginame='<LoginName>', 4 @passwd='<Password>', 5 @sid=<sid>;


sid就是上面查询结果中的sid,复制过来。


 


 


4.3、把新建的用户付给对应数据库。


→登录名→【对应用户名】上右键。




    

服务器重启会镜像没了 服务器镜像有什么用_数据库_05


 


    


在右下方的“数据库角色成员身份”中,选择db_owner和public。 如果不能选 但只有public是默认的也可以


 


 


五、开始创建证书环境。


 


5.1、创建证书。


 


如果证书存在或者添加出错可以 删除证书:


--删除证书
  

1     DROP CERTIFICATE HOST_A_cert
2     drop master key


 


    


1     USE master;
2     CREATE MASTER KEY ENCRYPTION BY PASSWORD ='证书的密码'; 3 CREATE CERTIFICATE HOST_A_cert WITH SUBJECT ='HOST_A certificate', 4 START_DATE ='08/21/2014';


 


    


1     USE master;
2     CREATE MASTER KEY ENCRYPTION BY PASSWORD ='证书的密码'; 3 CREATE CERTIFICATE HOST_B_cert WITH SUBJECT ='HOST_B certificate', 4 START_DATE ='08/21/2014';


 


 


 


 


5.2、创建连接的端点(主备可并行执行)


 


如果期间建立出错可以删除端点


1     DROP ENDPOINT Endpoint_Mirroring


--主机执行:  


           STATE = STARTED 
                 
AS 
           
                 
5022 , LISTENER_IP = ALL ) 
5. 
            
                 
FOR 
6. 

           DATABASE_MIRRORING 
         
7. 
            
                 
AUTHENTICATION = CERTIFICATE HOST_A_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );


 

 


--备机执行:


           STATE = STARTED 
              
AS 
4. 
                
5022 , LISTENER_IP = ALL ) 
5. 
            
                 
FOR 
6. 
           DATABASE_MIRRORING 
               
AUTHENTICATION = CERTIFICATE HOST_B_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );

 

 


 


5.3、备份证书


    


    先建立一个目录:D:\SQLBackup,目录名可任意。


    


BACKUP CERTIFICATE HOST_A_cert TO FILE ='D:\SQLBackup\HOST_A_cert.cer';


BACKUP CERTIFICATE HOST_B_cert TO FILE ='D:\SQLBackup\HOST_B_cert.cer';


    5.4、互换证书


    把主机中的HOST_A_cert.cer拷贝到备机的D:\SQLBackup(5.3中建立的目录)目录中


    把备机中的HOST_B_cert.cer拷贝到主机的D:\SQLBackup目录中


 


    5.5、添加登录名、用户


 


如果期间出错可以删除登录名 用户


--删除登录名
   DROP LOGIN HOST_B_login

     --删除用户
   DROP USER HOST_B_user

     --删除证书
   DROP CERTIFICATE HOST_B_cert


 


    


    


CREATE LOGIN HOST_B_login WITH PASSWORD ='证书的密码'; 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'; GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];


 


    备机执行:


    


CREATE LOGIN HOST_A_login WITH PASSWORD ='证书的密码'; 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'; GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];


 


执行成功后再主机中的登录名中会看到:


    

服务器重启会镜像没了 服务器镜像有什么用_Endpoint_06


 


    对应的备机中也有一个用户:HOST_A_login


 


    到此证书环境建立完毕,就是一堆命令,其实并不太复杂。


 


六、建立镜像


    


    6.1、备份主机中的数据库。


→备份,备份类型现在“完整”。


 




 


→还原→数据库


    

服务器重启会镜像没了 服务器镜像有什么用_服务器重启会镜像没了_07


 


    

服务器重启会镜像没了 服务器镜像有什么用_网络_08


 


    选项中一定要选择:不对数据库执行任何操作,不会滚未提交的事物。


    


    点击确定,备机的数据库会显示:

服务器重启会镜像没了 服务器镜像有什么用_服务器重启会镜像没了_09


 


    这时候前期准备就已经完成,可以建立镜像了。


 


七、建立镜像


 


    


ALTER DATABASE NewDB
    SET PARTNER = N'TCP://hostA:5022'-- boat主机名 GO


 


    


ALTER DATABASE NewDB
    SET PARTNER = N'TCP://hostB:5022'-- boat主机名 GO


 


    执行成功后会如下图所示(图片来自上文提到的blog中):


    

服务器重启会镜像没了 服务器镜像有什么用_服务器重启会镜像没了_10


 


 


 


 


       测试操作


 


1、主备互换

--主机执行:


              
                       
ALTER DATABASE <DatabaseName> SET PARTNER FAILOVER;

2、主服务器Down掉,备机紧急启动并且开始服务

--备机执行:


                     
USE master; 2.


ALTER DATABASE <DatabaseName> SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS;


3、原来的主服务器恢复,可以继续工作,需要重新设定镜像

--备机执行:

    1. 
                   
                           
    USE master; 2. 
                   
                           
    ALTER DATABASE <DatabaseName> SET PARTNER RESUME; --恢复镜像 
    3. 
                   
                           
    ALTER DATABASE <DatabaseName> SET PARTNER FAILOVER; --切换主备

    4、原来的主服务器恢复,可以继续工作

    --默认情况下,事务安全级别的设置为 FULL,即同步运行模式,而且SQL Server 2005 标准版只支持同步模式。

    --关闭事务安全可将会话切换到异步运行模式,该模式可使性能达到最佳。

      1. 
                     
                             
      USE master; 2. 
                     
                             
      ALTER DATABASE <DatabaseName> SET PARTNER SAFETY FULL; --事务安全,同步模式 
      3. 
                     
                             
      ALTER DATABASE <DatabaseName> SET PARTNER SAFETY OFF; --事务不安全,异步模式


       


       


       


          八、可能遇到的问题。


          镜像一路顺风其实很快,但是各种各样的 问题都会出现,记录下我遇到的问题。


         


          


      无法启用数据库镜像,因为'NewDB'数据库在两个伙伴上都不处于完全恢复模式


       


          这个上文已经提到过,把数据库的恢复模式设为完整即可。


       


          


      镜像数据库"pqsys_config"包含的事务日志数据不足,无法保留主体数据库的日志备份链。如果没有从主体数据库进行日志备份或者没有在镜像数据库上还原日志备份,则可能会出现这种情况。


          这个是步骤6.1中备份完数据库后,主机数据库要有了新的操作,这时候重新备份一下,再还原即可。一般是在主机中备份事务日志而不是完整。


          

      服务器重启会镜像没了 服务器镜像有什么用_数据库_11


       


          在备机上还原的时候也选择还原事务日志。


       


          注:如果备机的数据库的状态不是“正在还原”,还原的时候“事务日志”不可选,所以要保证备机的数据库的状态,一次不成功多试几次。这个错话最有可能遇到。


       


          8.3、在第七步的时候,如果主机和备机的执行顺序反了,也会报一个错,大意是镜像服务器为准备好之类的。


       


       


       


       整理的sql


       


       


       


      服务器重启会镜像没了 服务器镜像有什么用_Endpoint_12

      服务器重启会镜像没了 服务器镜像有什么用_服务器_13

       

       

      服务器重启会镜像没了 服务器镜像有什么用_服务器_14