目标:

主机做了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_certTO 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_certTO 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_certTO FILE = 'D:HOST_W_cert.cer';
  1. 交换证书

将HOST_B_cert.cer和HOST_W_cert.cer拷贝到 08R202 机器的”D:Cert“目录;

将HOST_A_cert.cer和HOST_W_cert.cer拷贝到 08R205 机器的”D:Cert“目录;

将HOST_A_cert.cer和HOST_B_cert.cer拷贝到 08R201 机器的”D:Cert“目录;

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

--Master CREATE LOGIN HOST_B_login WITH PASSWORD = '123abc!@#'; CREATEUSER HOST_B_user FOR LOGIN HOST_B_login; CREATE CERTIFICATE HOST_B_certAUTHORIZATION HOST_B_user FROM FILE = 'D:CertHOST_B_cert.cer'; GRANTCONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login]; CREATE LOGIN HOST_W_login WITH PASSWORD = '123abc!@#'; CREATE USER HOST_W_user FORLOGIN HOST_W_login; CREATE CERTIFICATE HOST_W_cert AUTHORIZATIONHOST_W_user FROM FILE = 'D:CertHOST_W_cert.cer'; GRANT CONNECT ONENDPOINT::Endpoint_Mirroring TO [HOST_W_login];

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

--Mirror CREATE LOGIN HOST_A_login WITH PASSWORD = '123abc!@#'; CREATEUSER HOST_A_user FOR LOGIN HOST_A_login; CREATE CERTIFICATE HOST_A_certAUTHORIZATION HOST_A_user FROM FILE = 'D:CertHOST_A_cert.cer'; GRANTCONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login]; CREATE LOGIN HOST_W_login WITH PASSWORD = '123abc!@#'; CREATE USER HOST_W_user FORLOGIN HOST_W_login; CREATE CERTIFICATE HOST_W_cert AUTHORIZATIONHOST_W_user FROM FILE = 'D:CertHOST_W_cert.cer'; GRANT CONNECT ONENDPOINT::Endpoint_Mirroring TO [HOST_W_login];

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

--WITNESS CREATE LOGIN HOST_A_login WITH PASSWORD = '123abc!@#'; CREATEUSER HOST_A_user FOR LOGIN HOST_A_login; CREATE CERTIFICATE HOST_A_certAUTHORIZATION HOST_A_user FROM FILE = 'D:CertHOST_A_cert.cer'; GRANTCONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login]; CREATE LOGIN HOST_B_login WITH PASSWORD = '123abc!@#'; CREATE USER HOST_B_user FORLOGIN HOST_B_login; CREATE CERTIFICATE HOST_B_cert AUTHORIZATIONHOST_B_user FROM FILE = 'D:CertHOST_B_cert.cer'; GRANT CONNECT ONENDPOINT::Endpoint_Mirroring TO [HOST_B_login];
  1. 备份还原数据库

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

BACKUP DATABASE RepTest TO DISK='D:tempRepTest.bak' BACKUP LOG RepTestTO DISK='D:tempRepTest.trn'

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

--RESTORE RESTORE DATABASE RepTest FROM DISK = N'D:RepTest.bak' WITHFILE = 1, MOVE N'RepTest' TO N'D:DataRepTest.mdf', MOVE N'RepTest_log'TO N'D:DataRepTest_log.ldf', NORECOVERY, NOUNLOAD, STATS = 10 GORESTORE 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'; ALTERDATABASE RepTest SET WITNESS = 'TCP://192.168.56.101:5022'; ALTERDATABASE RepTest SET SAFETY FULL

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

配置Replication(事务型复制)

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

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

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

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

--配置复制故障转移参数 --查看代理配置,在分发服务器运行 execsp_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) execsp_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.  如果一起都正常,那恭喜啦,我们的测试成功。

SQLServer 数据库镜像+复制方案的更多相关文章

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

    目标: 主机做了Mirror和Replication,当主机出现问题时,Replication和Mirror实现自动的故障转移(Mirror 和Replication都切换到备机,而当主机 重新启动后 ...

  2. SQLServer数据库镜像配置

    目录 一.目标...2 二.前提条件.限制和建议...2 三.设置概述...2 四.安装Sql Server 2008 enterprise X64.3 4.1.安装.NET3.5.3 4.2.安装时 ...

  3. 003.SQLServer数据库镜像高可用部署

    一 数据库镜像部署准备 1.1 数据库镜像支持 有关对 SQL Server 2012 中的数据库镜像的支持的信息,请参考:https://docs.microsoft.com/zh-cn/previ ...

  4. 002.SQLServer数据库镜像高可用简介

    一 数据库镜像简介 1.1 数据库镜像概述 数据库镜像维护一个数据库的两个副本,这两个副本必须驻留在不同的 SQL Server 数据库引擎服务器实例上. 通常,这些服务器实例驻留在不同位置的计算机上 ...

  5. sqlserver数据库镜像运行模式

    运行模式: 从大层面来说,SQL Server镜像只有两种模式:高安全模式和高性能模式.两种模式的主要区别在于在事务提交后的操作.可以从图1-1中查看运行模式. 在高性能模式下,主体服务器不需要等待镜 ...

  6. SQLServer 复制和数据库镜像 具体配置部署

    SQLserver 能够把镜像和复制同一时候部署,结合了两方的高可用性.能够使数据库得到更好的高可用性和容灾的保证. 关于镜像:f=255&MSPPError=-2147217396" ...

  7. 数据库热备之SQLServer的数据库镜像实施笔记

    / 最初在为公司设计SQLServer数据库镜像的时候,首先考虑的是高可用性(三台计算机,一台见证服务器,一台做主数据库,一台做镜像) 在虚拟机环境下部署成功,一切都是那么的完美.故障转移3秒之内就可 ...

  8. SQL Server复制情况下的高可用方案(一)镜像+复制

    数据库镜像可以与事务复制一起使用实现数据库整体的高可用性和高性能,其中镜像可以提供故障检测和故障转移,复制则用于实现读写分离. 数据库镜像涉及一个数据库的两个副本,这两个副本通常驻留在不同的计算机上. ...

  9. MySQL 数据库双向镜像、循环镜像(复制)

    在MySQL数据库镜像的贴子中,主数据库A 的数据镜像到从数据库B,是单向的,Zen Cart网店的数据读写都必须在数据库A进行,结果会自动镜像到数据库B中.但是对数据库B的直接操作,不会影响数据库A ...

随机推荐

  1. Android SwipeRefreshLayout 下拉刷新——Hi_博客 Android App 开发笔记

    以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有 ...

  2. opencv源码:cascadedetect

    级联分类器检测类CascadeClassifier,提供了两个重要的方法: CascadeClassifier cascade_classifier; cascade_classifier.load( ...

  3. Recurrent Neural Network系列1--RNN(循环神经网络)概述

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

  4. iOS代码规范(OC和Swift)

    下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...

  5. favicon.ioc使用以及注意事项

    1.效果 2.使用引入方法 2.1 注意事项:(把图标命名为favicon.ico,并且放在根目录下,同时使用Link标签,多重保险) 浏览器默认使用根目录下的favicon.ico 图标(如果你并没 ...

  6. Tomcat启动报错org.springframework.web.context.ContextLoaderListener类配置错误——SHH框架

    SHH框架工程,Tomcat启动报错org.springframework.web.context.ContextLoaderListener类配置错误 1.查看配置文件web.xml中是否配置.or ...

  7. UVa 122 Trees on the level

    题目的意思: 输入很多个节点,包括路径和数值,但是不一定这些全部可以构成一棵树,问题就是判断所给的能否构成一棵树,且没有多余. 网上其他大神已经给出了题目意思:比如我一直很喜欢的小白菜又菜的博客 说一 ...

  8. YII 2.x 模板文件的 beginBlock、beginContent、beginCache

    echo '-----------beginBlock--------------------- <br />'; $this->beginBlock('block1', false ...

  9. Java 程序优化 (读书笔记)

    --From : JAVA程序性能优化 (葛一鸣,清华大学出版社,2012/10第一版) 1. java性能调优概述 1.1 性能概述 程序性能: 执行速度,内存分配,启动时间, 负载承受能力. 性能 ...

  10. 信息安全-2:python之hill密码算法[原创]

    转发注明出处:http://www.cnblogs.com/0zcl/p/6106513.html 前言: hill密码算法我打算简要介绍就好,加密矩阵我用教材上的3*3矩阵,只做了加密,解密没有做, ...