sql 镜像--高性能模式

网上已经有人写得很详细,但我第一次看得实在是头痛,这里简单简化了一下[@more@]

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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值