码迷,mamicode.com
首页 > 数据库 > 详细

SQLServer 数据库镜像+复制切换方案

时间:2018-01-26 20:44:34      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:文件   pre   ref   password   ilo   param   ade   aes   测试   

原文:SQLServer 数据库镜像+复制切换方案

目标:

      主机做了MirrorReplication,当主机出现问题时,ReplicationMirror实现自动的故障转移(Mirror Replication都切换到备机,而当主机

       重新启动后,自动充当备机的角色)。

 

环境:

          五台虚拟机,配置均为Windows2008 Enterprise + SQLServer2008R2 Enterprise

          08R201Mirror 见证机(WITNESS)           IP:192.168.56.101

          08R202:主机(Rep+Mirror                  IP:192.168.56.102

          08R203Rep分发机                               IP:192.168.56.103

          08R204Rep订阅机                               IP:192.168.56.104

          08R205:镜像机(Mirror                       IP:192.168.56.105

 

步骤:

配置有见证服务器的镜像

  1. 创建证书和Endpoint

     08R202(Master) 上运行下面的脚本:

 --主机执行:
    USE master;
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 123456abc;
    CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = HOST_A certificate , 
    START_DATE = 11/08/2010,EXPIRY_DATE = 10/31/2099;

--主机执行:
    CREATE ENDPOINT Endpoint_Mirroring 
    STATE = STARTED 
    AS 
    TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) 
    FOR 
    DATABASE_MIRRORING 
    ( AUTHENTICATION = CERTIFICATE HOST_A_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );

--主机执行:

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

      08R205(Mirror) 上运行下面的脚本:

--备机执行:
    USE master;
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 123456abc;
    CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = HOST_B certificate, 
    START_DATE = 11/08/2010,EXPIRY_DATE = 10/31/2099;

--备机执行:
    CREATE ENDPOINT Endpoint_Mirroring 
    STATE = STARTED 
    AS 
    TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) 
    FOR 
    DATABASE_MIRRORING 
    ( AUTHENTICATION = CERTIFICATE HOST_B_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );

--备机执行:
    BACKUP CERTIFICATE HOST_B_cert TO FILE = D:\HOST_B_cert.cer;

      08R201(WITNESS) 上运行下面的脚本:

--见证机执行
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 123456abc;
CREATE CERTIFICATE HOST_W_cert WITH SUBJECT = HOST_W certificate, 
START_DATE = 11/08/2010,EXPIRY_DATE = 10/31/2099;

--见证机执行
CREATE ENDPOINT Endpoint_Mirroring 
STATE = STARTED 
AS 
TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) 
FOR 
DATABASE_MIRRORING 
( AUTHENTICATION = CERTIFICATE HOST_W_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );

--见证机执行
BACKUP CERTIFICATE HOST_W_cert TO FILE = D:\HOST_W_cert.cer;
  1. 交换证书

     将HOST_B_cert.cerHOST_W_cert.cer拷贝到 08R202 机器的”D:\Cert目录;

     将HOST_A_cert.cerHOST_W_cert.cer拷贝到 08R205 机器的”D:\Cert目录;

     将HOST_A_cert.cerHOST_B_cert.cer拷贝到 08R201 机器的”D:\Cert目录;

 

     08R202(Master) 上运行下面的脚本:

--Master
CREATE LOGIN HOST_B_login WITH PASSWORD = 123abc!@#;
CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = D:\Cert\HOST_B_cert.cer;
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];
    
CREATE LOGIN HOST_W_login WITH PASSWORD = 123abc!@#;
CREATE USER HOST_W_user FOR LOGIN HOST_W_login;
CREATE CERTIFICATE HOST_W_cert AUTHORIZATION HOST_W_user FROM FILE = D:\Cert\HOST_W_cert.cer;
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_W_login];

     08R205(Mirror) 上运行下面的脚本:

--Mirror
CREATE LOGIN HOST_A_login WITH PASSWORD = 123abc!@#;
CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = D:\Cert\HOST_A_cert.cer;
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
    
CREATE LOGIN HOST_W_login WITH PASSWORD = 123abc!@#;
CREATE USER HOST_W_user FOR LOGIN HOST_W_login;
CREATE CERTIFICATE HOST_W_cert AUTHORIZATION HOST_W_user FROM FILE = D:\Cert\HOST_W_cert.cer;
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_W_login];

     08R201(WITNESS) 上运行下面的脚本:

--WITNESS
CREATE LOGIN HOST_A_login WITH PASSWORD = 123abc!@#;
CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = D:\Cert\HOST_A_cert.cer;
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
    
CREATE LOGIN HOST_B_login WITH PASSWORD = 123abc!@#;
CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = D:\Cert\HOST_B_cert.cer;
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];
  1. 备份还原数据库

     08R202(Master) 上备份数据库:

  BACKUP DATABASE RepTest TO DISK=D:\temp\RepTest.bak
  BACKUP LOG RepTest TO DISK=D:\temp\RepTest.trn

     将备份文件拷贝到 08R205(Mirror) 上做还原(最好以SA帐号登录,使得数据库所有者为”SA“):

  --RESTORE 
RESTORE DATABASE RepTest FROM  DISK = ND:\RepTest.bak 
WITH  FILE = 1,  
MOVE NRepTest TO ND:\Data\RepTest.mdf,  
MOVE NRepTest_log TO ND:\Data\RepTest_log.ldf,   
NORECOVERY,  NOUNLOAD,  STATS = 10
GO

RESTORE LOG RepTest FROM DISK =D:\RepTest.trn WITH NORECOVERY
  1. 建立镜像

      在08R205(Mirror) 上执行:

--Mirror
ALTER DATABASE RepTest SET PARTNER = TCP://192.168.56.102:5022;

     在 08R202(Master)上执行:

ALTER DATABASE RepTest SET PARTNER = TCP://192.168.56.105:5022;

ALTER DATABASE RepTest SET WITNESS = TCP://192.168.56.101:5022;

ALTER DATABASE RepTest SET SAFETY FULL 

     到此,镜像已经建立完成。

 

配置Replication(事务型复制)

     Replicaiton不做具体的搭建过程,只做几点说明:

     1.  08R20208R205都需要搭建到08R203Distribution

      技术分享图片

     2.  08R20208R205上的发布库的所有者必须为“SA,否则切换会出现如下错误:The process could not execute ‘sp_replcmds‘ on ‘WIN-08R205‘.

     3.  08R203分发机上配置文件需要做如下修改(配置故障转移Partner):

    --配置复制故障转移参数
    --查看代理配置,在分发服务器运行
    exec sp_help_agent_profile
    --Agent_Type含义
    --1 = Snapshot Agent; 2 = Log Reader Agent; 3 = Distribution Agent; 
    --4 = Merge Agent; 9 = Queue Reader Agent.
    --对于事务复制,需查看Agent_Type=1,2的Profile_id
    
    --对于事务复制,需要配置快照代理(Snapshot Agent)和日志读取代理(Log Reader Agent)
    exec sp_add_agent_parameter @profile_id = 1, 
    @parameter_name = N-PublisherFailoverPartner, 
    @parameter_value = NWIN-08R205--镜像服务器名称
    
    exec sp_add_agent_parameter @profile_id = 2, 
    @parameter_name = N-PublisherFailoverPartner, 
    @parameter_value = NWIN-08R205--镜像服务器名称

       修改完成后,记得重启Agent服务,使之生效。

      4.  08R202创建到08R204的同步链。

 

模拟故障转移并观察结果

     1.  暂停08R202SQLServer服务;

     2.  到08R205上观察镜像和同步链是否转移过去了;

      技术分享图片

      3.  如果同步链正常,修改某个表中的数据,看是否能同步到08R204上;

      4.  重新启动08R202SQLServer服务,看其是否成为了镜像机;

      技术分享图片

       5.  如果一起都正常,那恭喜啦,我们的测试成功。

 

 

 

SQLServer 数据库镜像+复制切换方案

标签:文件   pre   ref   password   ilo   param   ade   aes   测试   

原文地址:https://www.cnblogs.com/lonelyxmas/p/8360682.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!