SQL Server 镜像
以下是操作步骤:
-- ===========================================
-- 无论是主体服务器、镜像服务器, 还是见证服务器
-- 除特别说明外,均需要保证下面的操作在master库中执行
USE master
GO
-- ===========================================
--(1) 建立镜像主体数据库
-- 此操作主体服务器上执行
-- a. 建立测试数据库
CREATE DATABASE DB_Mirror
ON(
NAME = DB_Mirror_DATA,
FILENAME = N'C:\DB_Mirror.mdf'
)
LOG ON(
NAME = DB_Mirror_LOG,
FILENAME = N'C:\DB_Mirror.ldf'
)
ALTER DATABASE DB_Mirror SET
RECOVERY FULL
GO
-- b. 完全备份
BACKUP DATABASE DB_Mirror
TO DISK = N'C:\DB_Mirror.bak'
WITH FORMAT
GO
-- ===========================================
--(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. 用于数据库镜像端点身份验证的证书
IF NOT EXISTS( -- 使用数据库主密钥加密证书
SELECT * FROM sys.symmetric_keys
WHERE name = N'##MS_DatabaseMasterKey##')
CREATE MASTER KEY
ENCRYPTION BY PASSWORD = N'abc.123'
CREATE CERTIFICATE CT_Mirror_SrvA
WITH
SUBJECT = N'certificate for database mirror',
START_DATE = '19990101',
EXPIRY_DATE = '99991231'
GO
-- b. 备份证书, 以便在与此端点通信的另一端建立此证书
BACKUP CERTIFICATE CT_Mirror_SrvA
TO FILE = 'C:\CT_Mirror_SrvA.cer'
GO
-- c. 数据库镜像端点
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. 用于数据库镜像端点身份验证的证书
IF NOT EXISTS( -- 使用数据库主密钥加密证书
SELECT * FROM sys.symmetric_keys
WHERE name = N'##MS_DatabaseMasterKey##')
CREATE MASTER KEY
ENCRYPTION BY PASSWORD = N'abc.123'
CREATE CERTIFICATE CT_Mirror_SrvB
WITH
SUBJECT = N'certificate for database mirror',
START_DATE = '19990101',
EXPIRY_DATE = '99991231'
GO
-- b. 备份证书, 以便在与此端点通信的另一端建立此证书
BACKUP CERTIFICATE CT_Mirror_SrvB
TO FILE = 'C:\CT_Mirror_SrvB.cer'
GO
-- c. 数据库镜像端点
CREATE ENDPOINT EDP_Mirror
STATE = STARTED
AS TCP(
LISTENER_PORT = 5022, -- 镜像端点使用的通信端口
LISTENER_IP = ALL) -- 侦听的IP地址
FOR DATABASE_MIRRORING(
AUTHENTICATION = CERTIFICATE CT_Mirror_SrvB, -- 证书身份验证
ENCRYPTION = DISABLED, -- 不对传输的数据加密,如果需要加密,可以配置为 SUPPORTED 或 REQUIRED, 并可选择加密算法
ROLE = ALL) -- 端点支持所有的数据库镜像角色, 也可以设置为 WITNESS(仅见证服务器),或 PARTNER(仅镜像伙伴)
GO
-- ===========================================
--(5) 在镜像服务器上完成主体服务器数据库镜像端点的传输安全模式配置
-- 此操作镜像服务器上执行
-- a. 建立主体服务器上的证书(假设主体服务器上备份的证书已经复制到 C:\CT_Mirror_SrvA.cer)
CREATE CERTIFICATE CT_Mirror_SrvA
FROM FILE = 'C:\CT_Mirror_SrvA.cer'
-- b. 建立登录
CREATE LOGIN LOGIN_Mirror_SrvA
FROM CERTIFICATE CT_Mirror_SrvA
-- c. 授予对数据库镜像端点的 connect 权限
GRANT CONNECT ON ENDPOINT::EDP_Mirror
TO LOGIN_Mirror_SrvA
GO
-- ===========================================
--(6) 在主体服务器上完成镜像服务器数据库镜像端点的传输安全模式配置
-- 此操作主体服务器上执行
-- a. 建立主体服务器上的证书(假设镜像服务器上备份的证书已经复制到 C:\CT_Mirror_SrvB.cer)
CREATE CERTIFICATE CT_Mirror_SrvB
FROM FILE = 'C:\CT_Mirror_SrvB.cer'
-- b. 建立登录
CREATE LOGIN LOGIN_Mirror_SrvB
FROM CERTIFICATE CT_Mirror_SrvB
-- c. 授予对数据库镜像端点的 connect 权限
GRANT CONNECT ON ENDPOINT::EDP_Mirror
TO LOGIN_Mirror_SrvB
GO
-- ===========================================
--(7) 在镜像服务器上启用数据库镜像
-- 此操作镜像服务器上执行
ALTER DATABASE DB_Mirror SET
PARTNER = 'TCP://SrvA:5022'
GO
-- ===========================================
--(8) 在主体服务器上启用数据库镜像(默认为高安全性模式,所以不用进行模式设置)
-- 此操作主体服务器上执行
ALTER DATABASE DB_Mirror SET
PARTNER = 'TCP://SrvB:5022'
GO
-- ===========================================
--(9) 配置见证服务器
-- 此操作在见证服务器上执行
-- a. 完成见证服务器上数据库镜像端点的传输安全模式配置
-- (a). 用于数据库镜像端点身份验证的证书
IF NOT EXISTS( -- 使用数据库主密钥加密证书
SELECT * FROM sys.symmetric_keys
WHERE name = N'##MS_DatabaseMasterKey##')
CREATE MASTER KEY
ENCRYPTION BY PASSWORD = N'abc.123'
CREATE CERTIFICATE CT_Mirror_SrvWitness
WITH
SUBJECT = N'certificate for database mirror',
START_DATE = '19990101',
EXPIRY_DATE = '99991231'
GO
-- (b). 备份证书, 以便在与此端点通信的另一端建立此证书
BACKUP CERTIFICATE CT_Mirror_SrvWitness
TO FILE = 'C:\CT_Mirror_SrvWitness.cer'
GO
-- (c). 数据库镜像端点
CREATE ENDPOINT EDP_Mirror
STATE = STARTED
AS TCP(
LISTENER_PORT = 5022, -- 镜像端点使用的通信端口
LISTENER_IP = ALL) -- 侦听的IP地址
FOR DATABASE_MIRRORING(
AUTHENTICATION = CERTIFICATE CT_Mirror_SrvWitness, -- 证书身份验证
ENCRYPTION = DISABLED, -- 不对传输的数据加密,如果需要加密,可以配置为 SUPPORTED 或 REQUIRED, 并可选择加密算法
ROLE = ALL) -- 端点支持所有的数据库镜像角色, 也可以设置为 WITNESS(仅见证服务器),或 PARTNER(仅镜像伙伴)
GO
-- b. 完成主体服务器上数据库镜像端点的传输安全模式配置
-- (a). 建立主体服务器上的证书(假设主体服务器上备份的证书已经复制到 C:\CT_Mirror_SrvA.cer)
CREATE CERTIFICATE CT_Mirror_SrvA
FROM FILE = 'C:\CT_Mirror_SrvA.cer'
-- (b). 建立登录
CREATE LOGIN LOGIN_Mirror_SrvA
FROM CERTIFICATE CT_Mirror_SrvA
-- (c). 授予对数据库镜像端点的 connect 权限
GRANT CONNECT ON ENDPOINT::EDP_Mirror
TO LOGIN_Mirror_SrvA
GO
-- c. 完成镜像服务器上数据库镜像端点的传输安全模式配置
-- (a). 建立镜像服务器上的证书(假设镜像服务器上备份的证书已经复制到 C:\CT_Mirror_SrvB.cer)
CREATE CERTIFICATE CT_Mirror_SrvB
FROM FILE = 'C:\CT_Mirror_SrvB.cer'
-- (b). 建立登录
CREATE LOGIN LOGIN_Mirror_SrvB
FROM CERTIFICATE CT_Mirror_SrvB
-- (c). 授予对数据库镜像端点的 connect 权限
GRANT CONNECT ON ENDPOINT::EDP_Mirror
TO LOGIN_Mirror_SrvB
GO
-- ===========================================
--(10) 在镜像服务器上完成见证服务器数据库镜像端点的传输安全模式配置
-- 此操作镜像服务器上执行
-- a. 建立见证服务器上的证书(假设见证服务器上备份的证书已经复制到 C:\CT_Mirror_SrvWitness.cer)
CREATE CERTIFICATE CT_Mirror_SrvWitness
FROM FILE = 'C:\CT_Mirror_SrvWitness.cer'
-- b. 建立登录
CREATE LOGIN LOGIN_Mirror_SrvWitness
FROM CERTIFICATE CT_Mirror_SrvWitness
-- c. 授予对数据库镜像端点的 connect 权限
GRANT CONNECT ON ENDPOINT::EDP_Mirror
TO LOGIN_Mirror_SrvWitness
GO
-- ===========================================
--(11) 在主体服务器上完成见证服务器数据库镜像端点的传输安全模式配置
-- 此操作主体服务器上执行
-- a. 建立见证服务器上的证书(假设见证服务器上备份的证书已经复制到 C:\CT_Mirror_SrvWitness.cer)
CREATE CERTIFICATE CT_Mirror_SrvWitness
FROM FILE = 'C:\CT_Mirror_SrvWitness.cer'
-- b. 建立登录
CREATE LOGIN LOGIN_Mirror_SrvWitness
FROM CERTIFICATE CT_Mirror_SrvWitness
-- c. 授予对数据库镜像端点的 connect 权限
GRANT CONNECT ON ENDPOINT::EDP_Mirror
TO LOGIN_Mirror_SrvWitness
GO
-- ===========================================
--(12) 在主体服务器上为数据库镜像启用见证服务器
-- 此操作主体服务器上执行
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
-- ===========================================
-- 下面的操作用于删除此示例配置的镜像对象
-- 证书和数据库的备份需要在操作系统的资源管理器中删除
-- 1. 主体服务器上执行的操作
-- a. 停止镜像和删除主体数据库
USE master
GO
ALTER DATABASE DB_Mirror SET
PARTNER OFF
DROP DATABASE DB_Mirror
GO
-- b. 删除镜像端点
DROP ENDPOINT EDP_Mirror
GO
-- c. 删除登录及证书
DROP LOGIN LOGIN_Mirror_SrvB
DROP LOGIN LOGIN_Mirror_SrvWitness
DROP CERTIFICATE CT_Mirror_SrvA
DROP CERTIFICATE CT_Mirror_SrvB
DROP CERTIFICATE CT_Mirror_SrvWitness
GO
-- 2. 镜像服务器上执行的操作
-- a. 删除镜像数据库
USE master
GO
DROP DATABASE DB_Mirror
GO
-- b. 删除镜像端点
DROP ENDPOINT EDP_Mirror
GO
-- c. 删除登录及证书
DROP LOGIN LOGIN_Mirror_SrvA
DROP LOGIN LOGIN_Mirror_SrvWitness
DROP CERTIFICATE CT_Mirror_SrvA
DROP CERTIFICATE CT_Mirror_SrvB
DROP CERTIFICATE CT_Mirror_SrvWitness
GO
-- 3. 见证服务器上执行的操作
-- a. 删除端点
DROP ENDPOINT EDP_Mirror
GO
-- b. 删除登录及证书
DROP LOGIN LOGIN_Mirror_SrvA
DROP LOGIN LOGIN_Mirror_SrvB
DROP CERTIFICATE CT_Mirror_SrvA
DROP CERTIFICATE CT_Mirror_SrvB
DROP CERTIFICATE CT_Mirror_SrvWitness
GO
-------------------------------------------------------------------------------------------------------------------------------------------
转载自:http://www.cnblogs.com/tianyue3107/archive/2010/01/06/1640554.html
SQL Server 镜像的更多相关文章
- SQL Server镜像自动生成脚本
SQL Server镜像自动生成脚本 镜像的搭建非常繁琐,花了一点时间写了这个脚本,方便大家搭建镜像 执行完这个镜像脚本之后,最好在每台机器都绑定一下hosts文件,不然的话,镜像可能会不work 1 ...
- 第三篇——第二部分——第五文 配置SQL Server镜像——域环境SQL Server镜像日常维护
本文接上面两篇搭建镜像的文章: 第三篇--第二部分--第三文 配置SQL Server镜像--域环境:http://blog.csdn.net/dba_huangzj/article/details/ ...
- 三——第二部分——第二篇论文 计划建设SQL Server镜像
本文接着前面的章节:SQL Server镜像简单介绍 本文出处:http://blog.csdn.net/dba_huangzj/article/details/27203053 俗话说:工欲善其事必 ...
- 第三篇——第二部分——第三文 配置SQL Server镜像——域环境
原文:第三篇--第二部分--第三文 配置SQL Server镜像--域环境 原文出处:http://blog.csdn.net/dba_huangzj/article/details/28904503 ...
- 第三篇——第二部分——第四文 配置SQL Server镜像——非域环境
原文:第三篇--第二部分--第四文 配置SQL Server镜像--非域环境 本文为非域环境搭建镜像演示,对于域环境搭建,可参照上文:http://blog.csdn.net/dba_huangzj/ ...
- 第三篇——第二部分——第一文 SQL Server镜像简介
原文:第三篇--第二部分--第一文 SQL Server镜像简介 原文出处:http://blog.csdn.net/dba_huangzj/article/details/26951563 镜像是什 ...
- 第三篇——第二部分——第二文 计划搭建SQL Server镜像
原文:第三篇--第二部分--第二文 计划搭建SQL Server镜像 本文紧跟上一章:SQL Server镜像简介 本文出处:http://blog.csdn.net/dba_huangzj/arti ...
- 第三篇——第二部分——第六文 监控SQL Server镜像
原文:第三篇--第二部分--第六文 监控SQL Server镜像 原文出处:http://blog.csdn.net/dba_huangzj/article/details/26846203 要优化, ...
- SQL SERVER镜像切换
--SQL SERVER镜像切换 ------------------------------2013/11/30 切换条件 高性能 没有见证服务器的高安全性模式 具有见证服务器的高安全性模式 自 ...
- SQL Server 镜像证书过期处理
转自:https://www.cnblogs.com/trams/archive/2012/01/13/2321637.html SQL Server 镜像证书过期处理 今天镜像中的主服务器进行维护重 ...
随机推荐
- HTTP头信息(转)--2
HTTP 头部解释 ========================================================================================== ...
- CSS中的各种居中方法总结
CSS中的居中可分为水平居中和垂直居中.水平居中分为行内元素居中和块状元素居中两种情况,而块状元素又分为定宽块状元素居中和不定宽块状元素居中.下面详细介绍这几种情况. 一.水平居中 1.行内元素居中 ...
- OpenCV学习(3)--Mat矩阵的操作
CvMat的矩阵结构 typedef struct CvMat { //矩阵中元素的类型 int type; //行数据长度 int step; /* for internal use only */ ...
- JS一些小算术、1加到50、乘法口诀表、买鸡等
//从1加到50 for (var a=1,i=0;a<51; a++) {i=a+i} document.write(i);//1加到50 var num=0; for(var i=1;i&l ...
- codeforces 383C Propagating tree 线段树
http://codeforces.com/problemset/problem/383/C 题目就是说, 给一棵树,将一个节点的值+val, 那么它的子节点都会-val, 子节点的子节点+val. ...
- 几种改变Activity回退栈默认行为的Intent Flag
FLAG_与LaunchMode相比最大的不同是临时性 1.FLAG_ACTIVITY_NEW_TASK: Developer.android.com的说法: (1)在新的task中启动这个Activ ...
- java实现发送短信
本程序是通过使用中国网建提供的SMS短信平台实现的(该平台目前为注册用户提供5条免费短信,3条免费彩信,这足够用于我们测试用了.在使用前需要注册,注册地址为http://sms.webchinese. ...
- 30款javascript脚本插件 jquery插件大全
Shifty Nav - a Fully Responsive JS CSS3 Mega Menu Show Demo Shifty Nav is a fully responsive CSS3 ...
- Delphi在StatusBar上绘制ProgressBar
首先,在TForm的私有域,也就是private下设置两个变量ProgressBar.ProgressBarRect,其中ProgressBar为 TProgressBar类型,ProgressBar ...
- 从零开始学 iOS 开发的15条建议
事情困难是事实,再困难的事还是要每天努力去做是更大的事实. 因为我是一路自学过来的,并且公认没什么天赋的前提下,进步得不算太慢,所以有很多打算从零开始的朋友会问我,该怎么学iOS开发.跟粉丝群的朋友交 ...