MIRROR
-- ===========================================
-- 无论是主体服务器、镜像服务器, 还是见证服务器
-- 除特别说明外,均需要保证下面的操作在master库中执行
USE master
GO
-- ===========================================
--(1) 建立主体数据库
-- 此操作主体服务器上执行
-- a. 建立测试数据库
-- b. 完全备份
-- ===========================================
--(2) 初始化镜像数据库
-- 此操作镜像服务器上执行
-- 假设主体数据库的完全备份已经复制到 c:DB_Mirror.bak
RESTORE DATABASE DB_Mirror FROM DISK = N'C:DB_Mirror.bak'
WITH REPLACE , NORECOVERY
-- 如果镜像数据库文件要放在指定位置, 则启用下面的 Move 选项
-- , MOVE 'DB_Mirror_DATA' TO N'C:DB_Mirror.mdf'
-- , MOVE 'DB_Mirror_LOG' TO N'C:DB_Mirror.ldf'
GO
-- ===========================================
--(3) 数据库主密钥,证书,备份证书,端点
-- 此操作需要做三遍
-- a. 创建数据库主密钥
DROP MASTER KEY
CREATE MASTER KEY ENCRYPTION BY PASSWORD = N'abc.123'
--b. 创建证书
CREATE CERTIFICATE CT_Mirror_SrvA WITH
SUBJECT = N'certificate for database mirror',
START_DATE = '19990101',
EXPIRY_DATE = '99991231'
-- c. 备份共享证书
BACKUP CERTIFICATE CT_Mirror_SrvA TO FILE = 'C:CT_Mirror_SrvA.cer'
Net share c:=cer
-- d. 创建端点
CREATE ENDPOINT EDP_Mirror
STATE = STARTED
AS TCP(
LISTENER_PORT = 5022, -- 镜像端点使用的通信端口
LISTENER_IP = ALL) -- 侦听的IP地址
FOR DATABASE_MIRRORING(
AUTHENTICATION = CERTIFICATE CT_Mirror_SrvA, -- 证书身份验证
ENCRYPTION = DISABLED, -- 不对传输的数据加密,如果需要加密,可以配置为 SUPPORTED 或 REQUIRED, 并可选择加密算法
ROLE = ALL) -- 端点支持所有的数据库镜像角色, 也可以设置为 WITNESS(仅见证服务器),或 PARTNER(仅镜像伙伴)
GO
-- ===========================================
--(4) 配置端点安全
-- 此操作需要执行三次
-- a. 还原证书
CREATE CERTIFICATE CT_Mirror_SrvA FROM FILE = 'C:CT_Mirror_SrvA.cer'
CREATE CERTIFICATE CT_Mirror_SrvB FROM FILE = 'C:CT_Mirror_SrvB.cer'
-- b. 从还原的证书创建用户
CREATE LOGIN LOGIN_Mirror_SrvA FROM CERTIFICATE CT_Mirror_SrvA
CREATE LOGIN LOGIN_Mirror_SrvB FROM CERTIFICATE CT_Mirror_SrvB
-- c. 授予刚创建的用户连接权限
GRANT CONNECT ON ENDPOINT::EDP_Mirror TO LOGIN_Mirror_SrvA
GRANT CONNECT ON ENDPOINT::EDP_Mirror TO LOGIN_Mirror_SrvB
-- ===========================================
--(5) 在镜像服务器上启用数据库镜像
ALTER DATABASE DB_Mirror SET PARTNER = 'TCP://SrvA:5022'
GO
-- ===========================================
--(6) 在主体服务器上启用数据库镜像(默认为高安全性模式,所以不用进行模式设置)
ALTER DATABASE DB_Mirror SET PARTNER = 'TCP://SrvB:5022'
GO
===========================================
--(7) 在主体服务器上启用见证服务器
-- 此操作主体服务器上执行
ALTER DATABASE DB_Mirror SET WITNESS = 'TCP://SrvWitness:5022'
GO
======================================================================
-- 下面的操作可用于确定同步
-- 1. 查询数据库状态
-- 下面的脚本可以在主体服务器和镜像服务器上执行,执行结果为镜像的状态
SELECT
mirroring_role_desc, -- 数据库在镜像会话中当前的角色
mirroring_state_desc, -- 镜像当前状态
mirroring_safety_level_desc, -- 镜像运行模式
mirroring_witness_state_desc -- 与见证服务器的连接情况
FROM sys.database_mirroring
WHERE database_id = DB_ID(N'DB_Mirror')
GO
-- 2. 数据测试
-- b. 主体服务器上执行下面的语句以建立测试表
CREATE TABLE DB_Mirror.dbo.tb(
id int)
WAITFOR DELAY '00:00:01'
GO
-- b. 镜像服务器上, 建立镜像数据库的快昭数据库,以便可以查询当前的数据
CREATE DATABASE SNP_DB_Mirror
ON(
NAME = DB_Mirror_DATA,
FILENAME = N'C:SNP_DB_Mirror.mdf')
AS SNAPSHOT OF DB_Mirror
GO
-- c. 从快照数据库中查询测试表是否已经同步
SELECT * FROM SNP_DB_Mirror.dbo.tb
GO
-- d. 删除测试建立的快照数据库
DROP DATABASE SNP_DB_Mirror
GO
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8203566/viewspace-1018013/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8203566/viewspace-1018013/