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

2015-07-24 08:08:00 · 作者: · 浏览: 6
、还原证书、创建端点): USE master GO CREATE LOGIN [KK\UserReplMirror] FROM WINDOWS; GO CREATE USER [UserReplMirror] FOR LOGIN [KK\UserReplMirror]; GO CREATE CERTIFICATE [Cert_kk_db1_mssqlserver] AUTHORIZATION [UserReplMirror] FROM FILE = 'C:\Databases\Cert_kk_db1_mssqlserver.cer'; GO CREATE CERTIFICATE [Cert_kk_db3_mssqlserver] AUTHORIZATION [UserReplMirror] FROM FILE = 'C:\Databases\Cert_kk_db3_mssqlserver.cer'; GO CREATE ENDPOINT [Endpoint_For_Mirror] AUTHORIZATION [KK\UserReplMirror] STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL) FOR DATA_MIRRORING (ROLE = PARTNER, AUTHENTICATION = CERTIFICATE Cert_kk_db2_mssqlserver, ENCRYPTION = REQUIRED ALGORITHM AES) GO --GRANT CONNECT ON ENDPOINT::Endpoint_For_Mirror TO [KK\UserReplMirror]; --GO -- 见证(创建用户、还原证书、创建端点): USE master GO CREATE LOGIN [KK\UserReplMirror] FROM WINDOWS; GO CREATE USER [UserReplMirror] FOR LOGIN [KK\UserReplMirror]; GO CREATE CERTIFICATE [Cert_kk_db1_mssqlserver] AUTHORIZATION [UserReplMirror] FROM FILE = 'C:\Databases\Cert_kk_db1_mssqlserver.cer'; GO CREATE CERTIFICATE [Cert_kk_db2_mssqlserver] AUTHORIZATION [UserReplMirror] FROM FILE = 'C:\Databases\Cert_kk_db2_mssqlserver.cer'; GO USE master; CREATE ENDPOINT [Endpoint_For_Mirror] AUTHORIZATION [KK\UserReplMirror] STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL) FOR DATA_MIRRORING (ROLE = WITNESS, AUTHENTICATION = CERTIFICATE Cert_kk_db3_mssqlserver, ENCRYPTION = REQUIRED ALGORITHM AES) GO --GRANT CONNECT ON ENDPOINT::Endpoint_For_Mirror TO [KK\UserReplMirror]; --GO --主体:备份数据库 USE master; BACKUP DATABASE [DemoDB] TO DISK = 'C:\Databases\DemoDB.BAK' WITH INIT,FORMAT GO BACKUP LOG [DemoDB] TO DISK = 'C:\Databases\DemoDB_LOG.BAK' WITH INIT,FORMAT GO --镜像:还原数据库(NORECOVERY) USE master; RESTORE DATABASE [DemoDB] FROM DISK = N'C:\Databases\DemoDB.BAK' WITH FILE = 1, MOVE N'DemoDB' TO N'C:\Databases\DemoDB.mdf', MOVE N'DemoDB_log' TO N'C:\Databases\DemoDB_log.ldf', NOUNLOAD, NORECOVERY, STATS = 10 GO RESTORE DATABASE [DemoDB] FROM DISK = N'C:\Databases\DemoDB_LOG.BAK' WITH NORECOVERY GO --开始镜像 --在【镜像】执行,PARTNER为主服务器 USE [master] GO ALTER DATABASE [DemoDB] SET PARTNER = 'TCP://192.168.2.10:5022'; GO --在【主体】执行,PARTNER为镜像服务器 USE [master] GO ALTER DATABASE [DemoDB] SET PARTNER = 'TCP://192.168.2.11:5022'; GO ALTER DATABASE [DemoDB] SET WITNESS = 'TCP://192.168.2.12:5022'; GO --在主体执行:设置为高安全模式 ALTER DATABASE [DemoDB] SET SAFETY FULL

?

\

?

EXEC [DemoDB].dbo.sp_changedbowner @loginame = N'sa', @map = false
GO
EXEC master..sp_addsrvrolemember @loginame = N'KK\UserReplMirror', @rolename = N'sysadmin'
GO


?

2. 配置分发服务器

登录到该服务器。

?

kk-db3

192.168.2.12

见证机(WITNESS)+ 分发


?

右键复制,配置分发。

\

分发服务器选择 “kk-db3” 本地服务器。添加 “KK-DB1 ” (主机)和 “KK-DB2 ” (镜像) 为发布服务器,否则连接不到该分发服务器。

\

注意:创建分发服务器时,要求数据管理密码。右键“复制”—“分发服务器属性”—“发布服务器” 可看到和设置。

\

配置用于故障转移的复制代理

可配置参数 PublisherFailoverPartner 的代理:
1 - 复制快照代理(对于所有发布)
2 - 复制日志读取器代理(对于所有事务发布)
4 - 复制合并代理(对于合并订阅)
9 - 复制队列读取器代理(对于支持排队更新订阅的事务发布)

当前为可更新订阅,只要更改1,2,9 就行(分发库执行)

?

--@parameter_value 为镜像服务
exec sp_add_agent_parameter @profile_id = 1, 
@parameter_name = N'-PublisherFailoverPartner', 
@parame