SQL 2008 镜像配置

SQL 2008 配置有证书镜像的步聚共有四步:

1.      配置出站连接: 创建主秘钥、证书和端点,备份证书并拷贝到另一台服务器

2.      配置入站连接: 分配登陆用户、赋予登陆用户 connect 本机端点的权限

3.      创建镜像数据: 备主数据库,还原镜像数据库

4.      配置镜像伙伴关系: 顺序:镜像 ---- 主体

5.      测试镜像: 切换镜像

测试环境:

             主数据库服务器:     192.168.10.91

             镜像数据库服务器:   192.168.10.95

 

以下是测试的详细脚本:

============================================================================

一.配置出站: 配置完证书后,分别互存到各数据库服务器的对应路径,注意端口

============================================================================

配置 HOST_91 出站

 
 
 
  
  1. USE master;  
  2. CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'mo%123';  
  3. GO  
  4. CREATE CERTIFICATE HOST_91_cert   
  5.    WITH SUBJECT = 'HOST_91 certificate for database mirroring';  
  6. GO  
  7. CREATE ENDPOINT Endpoint_Mirroring  
  8.    STATE = STARTED  
  9.    AS TCP (  
  10.       LISTENER_PORT=7024  
  11.       , LISTENER_IP = ALL 
  12.    )   
  13.    FOR DATABASE_MIRRORING (   
  14.       AUTHENTICATION = CERTIFICATE HOST_91_cert  
  15.       , ENCRYPTION = REQUIRED ALGORITHM AES  
  16.       , ROLE = ALL 
  17.    );  
  18. GO  
  19. BACKUP CERTIFICATE HOST_91_cert TO FILE = 'C:\HOST_91_cert.cer';  
  20. GO   

 

配置 HOST_95 出站

 
 
 
  
  1. USE master;  
  2.    
  3. CREATE MASTER KEY ENCRYPTION BY PASSWORD = mo%123';  
  4. GO  
  5.    
  6. CREATE CERTIFICATE HOST_95_cert   
  7.    WITH SUBJECT = 'HOST_95 certificate for database mirroring';  
  8. GO  
  9.    
  10. CREATE ENDPOINT Endpoint_Mirroring  
  11.    STATE = STARTED  
  12.    AS TCP (  
  13.       LISTENER_PORT=7024  
  14.       , LISTENER_IP = ALL 
  15.    )   
  16.    FOR DATABASE_MIRRORING (   
  17.       AUTHENTICATION = CERTIFICATE HOST_95_cert  
  18.       , ENCRYPTION = REQUIRED ALGORITHM AES  
  19.       , ROLE = ALL 
  20.    );  
  21. GO  
  22.    
  23. BACKUP CERTIFICATE HOST_95_cert TO FILE = 'C:\HOST_95_cert.cer';  
  24. GO   

 

=============================================================================

二.入站镜像连接配置服务器: 注意证书的路径,登录账户的命名

=============================================================================

 

HOST_91 的入站配置:

 
 
 
  
  1. USE master;  
  2. CREATE LOGIN HOST_95_LOGIN   
  3.    WITH PASSWORD = 'mo%123';                   
  4. GO  
  5. USE master;  
  6. CREATE USER HOST_95_USER FOR LOGIN HOST_95_LOGIN;  
  7. GO  
  8. CREATE CERTIFICATE HOST_95_cert  
  9.    AUTHORIZATION HOST_95_USER   
  10.    FROM FILE = 'C:\HOST_95_cert.cer';  
  11. GO  
  12. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO HOST_95_LOGIN  
  13. GO  

 

==============================================================

HOST_95 的入站配置:

 
 
  
  1. USE master;  
  2. CREATE LOGIN HOST_91_LOGIN   
  3.    WITH PASSWORD = 'mo%123';  
  4. GO  
  5. USE master;  
  6. CREATE USER HOST_91_USER FOR LOGIN HOST_91_LOGIN;  
  7. GO  
  8. CREATE CERTIFICATE HOST_91_cert  
  9.    AUTHORIZATION HOST_91_USER  
  10.    FROM FILE = 'C:\HOST_91_cert.cer';  
  11. GO  
  12. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO HOST_91_LOGIN  
  13. GO  
====================================================================

三.配置数据库: 备份包括数据库和日志

=====================================================================

备份主数据库 HOST_91

 
  
  1. USE master;  
  2. GO  
  3. ALTER DATABASE livechat   
  4. SET RECOVERY FULL;  
  5. GO  
  6. BACKUP DATABASE  livechat  
  7.     TO DISK = 'e:\livechat.bak'   
  8.     WITH FORMAT  
  9. GO  
  10. BACKUP LOG  livechat  
  11.     TO DISK = 'e:\livechat_log.bak'   
  12. GO  

 

还原镜像数据库 HOST_95
 
 
 
   
  1. RESTORE DATABASE  livechat  
  2.     FROM DISK = 'C:\livechat.bak'   
  3.     WITH NORECOVERY  
  4. GO  
  5. RESTORE LOG  livechat  
  6.     FROM DISK = 'C:\livechat_log.bak'   
  7.     WITH FILE=1, NORECOVERY  
  8. GO  

 

这里经常会出问题,经常性的被恢复的服务器上是没有数据库的,通过恢复必须使用强制覆盖(REPLACE)形式的恢复,可是镜像要求的是NORECOVERY,因此覆盖恢复之后必须先备份下日志,BACKUP LOG livechat TO DISK = 'e:\livechat _log_Again.bak'    WITH NORECOVERY
,然后执行上面的两个Restore,数据文件和日志都必须恢复。然后才能执行SET PARTNER镜像。

===========================================================================

四.配置镜像: 顺序:镜像 ---- 主体
===========================================================================

先执行 HOST_95 服务器:

 
 
  
  1. ALTER DATABASE  livechat  
  2.     SET PARTNER = 'TCP://192.168.10.91:7024';  
  3. GO  
再执行 HOST_91 服务器:

 
  
  1. ALTER DATABASE  livechat  
  2.     SET PARTNER = 'TCP://192.168.10.95:7024';  
  3. GO  

 

====================================================================

五.测试镜像: 在主数据库上执行以下代码可以强制将镜像数据库启用为主数据库,可以查看数据同步的完整性。

=============================================================================

主数据库HOST_91 执行 :

 
  
  1. USE master;   
  2. ALTER DATABASE  livechat   
  3. SET PARTNER FAILOVER  
  4. GO  

 

 

    总结:以上是在没有验证服务器的情况下,两台数据库做的镜像,经测试在强制切换后数据完整,符合镜像数据的要求。

 

删除数据库镜像

  1. 在数据库镜像会话期间,连接到主体服务器实例,然后在对象资源管理器中,单击服务器名称以展开服务器树。

  2. 展开“数据库”并选择数据库。

  3. 右键单击数据库,选择“任务”,再单击“镜像”。这样便可打开“数据库属性”对话框的“镜像”页。

  4. “选择页”窗格中,单击“镜像”

  5. 若要删除镜像,请单击“删除镜像”。此时,将显示一个提示,要求您进行确认。如果单击“是”,会话将停止,并从数据库中删除镜像。

    有关删除镜像的影响的详细信息,请参阅删除数据库镜像

  6. 或者,可以恢复以前的镜像数据库。在作为镜像服务器的服务器实例上,使用以下 Transact-SQL 语句:

    other 
    RESTORE DATABASE <database_name> WITH RECOVERY;
    
    重要说明重要提示

    如果恢复此数据库,则两个同名的不同数据库处于联机状态。因此,必须确保客户端仅可访问其中一个数据库,通常为最新的主体数据库。