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

目标:

主机做了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) 上运行下面的脚本:

--见证机执行 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.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 = ‘[email protected]#‘; 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 = ‘[email protected]#‘; 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 = ‘[email protected]#‘; 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 = ‘[email protected]#‘; 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 = ‘[email protected]#‘; 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;

数据库镜像+复制切换方案" src="http://pic002.cnblogs.com/images/2012/142465/2012052517295243.jpg">

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上观察镜像和同步链是否转移过去了;

数据库镜像+复制切换方案" src="http://pic002.cnblogs.com/images/2012/142465/2012052517344040.jpg">

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

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

数据库镜像+复制切换方案" src="http://pic002.cnblogs.com/images/2012/142465/2012052517350339.jpg">

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

SQLServer 数据库镜像+复制切换方案,布布扣,bubuko.com

时间: 2024-10-12 23:25:58

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

SQLServer 数据库镜像+复制方案

目标: 主机做了Mirror和Replication,当主机出现问题时,Replication和Mirror实现自动的故障转移(Mirror 和Replication都切换到备机,而当主机 重新启动后,自动充当备机的角色). 环境: 五台虚拟机,配置均为Windows2008 Enterprise + SQLServer2008R2 Enterprise 08R201:Mirror 见证机(WITNESS)           IP:192.168.56.101 08R202:主机(Rep+Mi

SQLServer 数据库镜像(二)域环境中完整镜像脚本配置

SQLServer 数据库镜像(一)单服务器无见证的镜像脚本配置 断断续续弄了几天,搭建了域,服务器加入域后再测试另一种情况. 测试环境: 主服务器:   IP = 192.168.2.10 InstanceName = MSSQLSERVER LISTENER_PORT = 5022 镜像服务器:    IP = 192.168.2.10 InstanceName = MSSQLSERVERA LISTENER_PORT = 5023 见证服务器: IP = 192.168.2.11 Inst

SQLServer数据库镜像高性能模式下维护

概述: 最近公司业务说不需要见证服务器那么高配置,所以打算降配置 降低配置阿里云这边需要关闭实例服务器,所以这边做了个本地测试会不会影响镜像 目录: 1.(高性能模式)测试把见证服务器关闭是否影响镜像使用 2.(高性能模式)测试把镜像服务器关闭,保留主库和见证是否影响镜像使用 3.(高性能模式)测试把主库服务器关闭,保留镜像和见证服务器查看镜像状态 4.(高性能模式)镜像服务器和见证服务器关闭,查看主库服务器数据库是否能访问 5.(高性能模式)主库服务器和见证服务器关闭,查看镜像服务器数据库是否

SqlServer 数据库镜像 从库故障

数据库镜像同步失败 提示从库5022无法访问或不存在 在做数据库镜像最多的错误时在最后一个步骤中,进行镜像同步时,需要在每一台SQL08R2服务器上启用"Remote DAC",否则可能会收到错误提[数据库镜像同步失败 提示从库5022无法访问或不存在 错误1418] 开启办法: 1. 右击服务器节点,选择"方面"     2. 打开"查看方面"窗口,在"方面"下拉菜单中选择"外围应用配置器",指定&quo

SqlServer 数据库镜像 随笔

2.建立数据库镜像. A)确保环境稳定:在备份主数据库前,需保证主数据库没有大量的读写操作,让主数据库处于尽量稳定的状态下.如果条件允许,在镜像建立好之前,最好关闭所有会大量读写数据库的服务.下面假设主数据库的名称为"Brandwisdom_v9". B)建立完整备份:为主库建立一个备份类型为"完整"的数据库备份,假设备份的文件名为"bw_v9_20130813.bak",为了减少拷贝备份文件的时间,可以在备份选项中,设置备份压缩为"压

SqlServer数据库本地灾备方案

如果你曾经有那么一个不经意的心跳来自于数据库数据损坏:错误的新增.更新.删除 .那么下面的方案一定能抚平你的创伤! 对于一个数据库小白来说,数据库的任何闪失带来的打击可说都是致命的.最初,我们让一个叫做"数据库"的小孩任性的在服务器上裸奔(没有任何数据备份),倡导自由与开放.突然有一天,这孩子生病了(数据篡改),病得很突然,很厉害,他不能和你描述他的任何感受(差异数据),那么你将苦于诊断病症.如果你现在有小孩以前的行为习惯数据(完备.差备.日志备份.尾日志备份),那么这无疑可以很快的针

sqlserver数据库镜像运行模式

运行模式: 从大层面来说,SQL Server镜像只有两种模式:高安全模式和高性能模式.两种模式的主要区别在于在事务提交后的操作.可以从图1-1中查看运行模式. 在高性能模式下,主体服务器不需要等待镜像服务器响应即可提交事务. 在高安全性模式,需要把事务同步到镜像并得到响应后才最终提交主体服务器的事务 这种模式是同步模式,可以细分为带有自动故障转移(即有见证服务器)的高安全模式和不带自动故障转移(即没有见证服务器)的高安全性模式.如果没有配置见证服务器,那么[带自动故障转移功能的高安全性(同步)

SQLServer 复制和数据库镜像 详细配置部署

SQLserver 可以把镜像和复制同时部署,结合了双方的高可用性,可以使数据库得到更好的高可用性和容灾的保证. 关于镜像:数据库镜像 关于复制:数据库镜像 本章的复制为事务可更新订阅:事务复制的可更新订阅 关于复制和数据库镜像:复制和数据库镜像 理论的东西参考官方文档吧,这里主要是部署配置过程. 下图为本章参考部署的架构图: 本章模拟的服务器: kk-ad 192.168.2.1 DC(域控) kk-db1 192.168.2.10 主机(Replication + Mirror) kk-db

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

转载自:http://kb.cnblogs.com/page/45937/ 最初在为公司设计SQLServer数据库镜像的时候,首先考虑的是高可用性(三台计算机,一台见证服务器,一台做主数据库,一台做镜像) 在虚拟机环境下部署成功,一切都是那么的完美.故障转移3秒之内就可以顺利完成. 1.高可用性的实施代码: /******************************************************** 此脚本在主体服务器执行 ************************