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

PHPz
PHPz 原创
2018-09-28 14:14:46 1174浏览

目标: 主机做了 Mirror 和 Replication ,当主机出现问题时, Replication 和 Mirror 实现自动的故障转移( Mirror 和 Replication 都切换到备机,而当主机 重新启动后,自动充当备机的角色)。 环境: 五台虚拟机,配置均为 Windows2008 Enterprise SQLSer

目标:

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

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

环境:

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

08R201:Mirror见证机(WITNESS) IP:192.168.56.101

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

08R203:Rep分发机 IP:192.168.56.103

08R204:Rep订阅机 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)上运行下面的脚本:

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

1. 08R202和08R205都需要搭建到08R203的Distribution;

2. 08R202和08R205上的发布库的所有者必须为“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_name = N'-PublisherFailoverPartner', @parameter_value = N'WIN-08R205'--镜像服务器名称

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

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

模拟故障转移并观察结果

1. 暂停08R202的SQLServer服务;

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

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

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

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

更多相关教程请访问 MySQL视频教程

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。