SQLServer 数据库镜像+复制切换方案【鸡蛋】

SQLServer 数据库镜像+复制切换方案【鸡蛋】,第1张

概述摘自:http://www.cnblogs.com/fygh/archive/2012/05/25/2518416.html  飞洋过海 目标:       主机做了Mirror和Replication,当主机出现问题时,Replication和Mirror实现自动的故障转移(Mirror 和Replication都切换到备机,而当主机        重新启动后,自动充当备机的角色)。   环境:

摘自:http://www.cnblogs.com/fygh/archive/2012/05/25/2518416.HTML  飞洋过海



目标:

      主机做了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

 

步骤:

配置有见证服务器的镜像

创建证书和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',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,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',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,RolE = ALL );--见证机执行BACKUP CERTIFICATE HOST_W_cert TO file = 'D:\HOST_W_cert.cer';

交换证书

     将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) 上运行下面的脚本:

--MasterCREATE 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) 上运行下面的脚本:

--MirrorCREATE 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)上运行下面的脚本:

--WITnesSCREATE 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];

备份还原数据库

     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 = N'D:\RepTest.bak' WITH  file = 1,MOVE N'RepTest' TO N'D:\Data\RepTest.mdf',MOVE N'RepTest_log' TO N'D:\Data\RepTest_log.ldf',norECOVERY,NOUNLOAD,STATS = 10GORESTORE LOG RepTest FROM disK ='D:\RepTest.trn' WITH norECOVERY

建立镜像

      在08R205(Mirror) 上执行:

--MirrorALTER 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 = N'WIN-08R205'--镜像服务器名称        exec sp_add_agent_parameter @profile_ID = 2,@parameter_value = N'WIN-08R205'--镜像服务器名称

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

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

 

模拟故障转移并观察结果

     1.  暂停08R202sqlServer服务;

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

      

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

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

      

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

总结

以上是内存溢出为你收集整理的SQLServer 数据库镜像+复制切换方案【鸡蛋】全部内容,希望文章能够帮你解决SQLServer 数据库镜像+复制切换方案【鸡蛋】所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1177085.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存