28-SQLServer带见证服务器的镜像搭建
一、注意点
1.数据库的模式要是完整模式。
2.要对数据库完整备份和事务日志备份,分别还原到镜像库上,使用NORECOVERY模式。
3.镜像数据库是不允许删除和操作,即便查看属性也不行。
4.先删除端点,再删除证书,再删除主密钥。
5.见证服务器不需要还原主体上的数据库。
6.该文档中主体服务器、镜像服务器、见证服务器都没有加入到域中。
7.主体服务器、镜像服务器、见证服务器的操作系统可以不一样,但是SQL版本得一致
二、搭建步骤
1、创建主密钥(主库、镜像库、认证服务器上都执行)
命令:
use master
go
create master key encryption by password='$a123456'
go

查看主密钥
select * from sys.key_encryptions
创建主密钥之前:

创建主密钥之后:

2、分别在主体服务器、镜像服务器、见证服务器上创建证书
命令:
主库上执行:
use master
go
create certificate mirror01_cert with subject='mirror01 certificate',expiry_date='2099-1-1'
go
镜像库上执行:
use master
go
create certificate mirror02_cert with subject='mirror02 certificate',expiry_date='2099-1-1'
go
--见证服务器上执行
use master
go
create certificate mirror_witness_cert with subject='mirrorWitness certificate',expiry_date='2099-1-1'
go



查看证书:
select * from sys.certificates

3、分别在主体服务器、镜像服务器、见证服务器上创建端点
命令:
主库上执行:
use master
go
create endpoint Endpoint_Mirroring
state=started
as tcp ( listener_port = 5022,listener_ip = all )
for database_mirroring ( authentication = certificate mirror01_cert, encryption = required algorithm aes, role = all )
go
镜像库上执行:
use master
go
create endpoint Endpoint_Mirroring
state=started
as tcp ( listener_port = 5022,listener_ip = all )
for database_mirroring ( authentication = certificate mirror02_cert, encryption = required algorithm aes, role = all )
go
--见证服务器上执行
use master
go
create endpoint Endpoint_Mirroring
state=started
as tcp ( listener_port = 5022,listener_ip = all )
for database_mirroring ( authentication = certificate mirror_witness_cert, encryption = required algorithm aes, role = all )
go

SSMS查看创建的端点

4、备份证书(主体服务器、镜像服务器、见证服务器都备份,并互相拷贝过去,保证每个服务器上都有3个证书)
命令:
主库上执行:
use master
go
backup certificate mirror01_cert to file = 'D:\cert\mirror01_cert.cer'
go
镜像库上执行:
use master
go
backup certificate mirror02_cert to file = 'D:\cert\mirror02_cert.cer'
go
--见证服务器上执行
use master
go
backup certificate mirror_witness_cert to file = 'D:\cert\mirror_witness_cert.cer'
go


5、创建登录名(这个要和证书关联,所以主体服务器、镜像服务器、见证服务器都要创建除自己以外的另外2个用户)
命令:
主库上执行:
--创建镜像库上的证书关联用户
use master
go
create login mirror02_login with password='abc@123456'
go
--创建见证库上的证书关联用户
use master
go
create login mirror_witness with password='abc@123456'
go
镜像库上执行:
--创建主库上的证书关联用户
use master
go
create login mirror01_login with password='abc@123456'
go
--创建见证库上的证书关联用户
use master
go
create login mirror_witness with password='abc@123456'
go
见证服务器执行
--创建主库上的证书关联用户
use master
go
create login mirror01_login with password='abc@123456'
go
--创建镜像库上的证书关联用户
use master
go
create login mirror02_login with password='abc@123456'
go

6、创建使用该登录名的用户(主体服务器、镜像服务器、见证服务器都要创建)
命令:
主库上执行
--创建镜像库上的证书关联用户
use master
go
create user mirror02_user for login mirror02_login
go
--创建见证库上的证书关联用户
use master
go
create user mirror_witness_user for login mirror_witness
go
镜像库上执行
--创建主库上的证书关联用户
use master
go
create user mirror01_user for login mirror01_login
go
--创建见证库上的证书关联用户
use master
go
create user mirror_witness_user for login mirror_witness
go
见证服务器执行
--创建主库上的证书关联用户
use master
go
create user mirror01_user for login mirror01_login
go
--创建镜像库上的证书关联用户
use master
go
create user mirror02_user for login mirror02_login
go

7、证书与用户关联
命令:
主库上执行
--使镜像库上的证书与用户关联
use master
go
create certificate mirror02_cert
authorization mirror02_user
from file='D:\cert\mirror02_cert.cer'
go
--使见证库上的证书与用户关联
use master
go
create certificate mirror_witness_cert
authorization mirror_witness_user
from file='D:\cert\mirror_witness_cert.cer'
go
镜像库上执行
--使主库上的证书与用户关联
use master
go
create certificate mirror01_cert
authorization mirror01_user
from file='D:\cert\mirror01_cert.cer'
go
--使见证库上的证书与用户关联
use master
go
create certificate mirror_witness_cert
authorization mirror_witness_user
from file='D:\cert\mirror_witness_cert.cer'
go
见证服务器执行
--使主库上的证书与用户关联
use master
go
create certificate mirror01_cert
authorization mirror01_user
from file='D:\cert\mirror01_cert.cer'
go
--使镜像库上的证书与用户关联
use master
go
create certificate mirror02_cert
authorization mirror02_user
from file='D:\cert\mirror02_cert.cer'
go

8、授予对远程数据库端点的登录名的CONNECT权限(每个上面2个用户都要有端点的权限)
命令:
主库上执行
use master
go
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [mirror02_login];
go
use master
go
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [mirror_witness];
go
镜像库上执行
use master
go
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [mirror01_login];
go
use master
go
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [mirror_witness];
go
见证服务器执行
use master
go
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [mirror01_login];
go
use master
go
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [mirror02_login];
go

9、对需要做镜像的数据库做完整备份和事务日志备份,然后在镜像库上做还原(先还原完整备份,再还原事务日志),使用NORECOVERY模式,这里不做阐述,最后还原后的数据库状态如下:

10.连接镜像(先在镜像库上操作,然后在主库上操作,不需要在见证数据库上操作)
注:CCAS21、CCAS22、JF-RLZY-DB1是3台机器的机器名
命令:
镜像库上执行 (做完这个操作后,数据库的状态:正在恢复)
use master
go
ALTER DATABASE test SET PARTNER = 'TCP://CCAS21:5022';
go

主库上执行
--连接镜像库
use master
go
ALTER DATABASE test SET PARTNER = 'TCP://CCAS22:5022';
go
--连接见证服务器
use master
go
ALTER DATABASE test SET WITNESS = 'TCP://JF-RLZY-DB1:5022';
go

11.查看数据库的状态
(1)主库的状态


(2)镜像库的状态

三、用到的SQL
--1.删除端点
drop endpoint Endpoint_Mirroring
--2.删除证书(所有证书都删除)
drop certificate mirror01_cert
--3.查看证书
select * from sys.certificates
--4.删除主秘钥
drop master key
--5.查询数据库的状态
命令:
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'test')
主库上执行

镜像库上执行

28-SQLServer带见证服务器的镜像搭建的更多相关文章
- SQL Server 2008 数据库镜像部署实例之三 配置见证服务器
SQL Server 2008 数据库镜像部署实例之三 配置见证服务器 前面已经完成了镜像数据库的配置,并进行那个了故障转移测试.接下来将部署见证服务器,实现自动故障转移. 一.关于见证服务器 1.若 ...
- 基于证书的MS SQL2005数据库镜像搭建
一.准备工作: 3台服务器同版本,硬盘分区大小相同,安装相同版本数据库软件. host中分别标注3台服务器IP和主机名称. 主体服务器上创建数据库,并进行完整备份数据库和数据库事务. 拷贝备份文件给镜 ...
- sql2008R2sp1局域网镜像环境实操(无见证服务器)
环境介绍: 我的电脑:sql2008r2sp1_32 129.186.110.37 OS win2003 SP2 Enterprise 做主体服务器, 暂叫ServerA 服务器: sq ...
- SQL SERVER镜像配置(包含见证服务器)
镜像简介 重要说明:保持数据库镜像运行.如果您关闭数据库镜像,则必须执行完全备份并还原数据库以重建数据库镜像. 一. 简介 SQL SERVER 2005镜像基于日志同步,可良好实现故障转移. ...
- 阿里云服务器SQLSERVER 2019 远程服务器环境搭建【原创】【转载请注明出处】
之前做过本地服务器SQLSERVER环境搭建.局域网环境SQLSERVER搭建.一直没有尝试自己完成一个云端服务器的环境搭建.今天就根据一个成功的例子给大家分享一下. 一.云端数据库安装与搭建 我的服 ...
- Sqlserver通过链接服务器访问Oracle的那些事儿
前言: 1.不经历风雨,怎能见彩虹. 2.充分利用BaiDu.google等搜索引擎查找资料并整合分析! 3.世上无难事只怕有心人! 本文由来:笔者在研究SQLSERVER链接服务器到oracle并使 ...
- 阿里云(ECS)Centos服务器LNMP环境搭建
阿里云( ECS ) Centos7 服务器 LNMP 环境搭建 前言 第一次接触阿里云是大四的时候,当时在校外公司做兼职,关于智能家居项目的,话说当时俺就只有一个月左右的 php 后台开发经验(还是 ...
- 【转】Sqlserver通过链接服务器访问Oracle的那些事儿!
原文:http://blog.sina.com.cn/s/blog_614b6f210100t80r.html 前言:1.不经历风雨,怎能见彩虹.2.充分利用BaiDu.google等搜索引擎查找资料 ...
- Sqlserver通过链接服务器访问Oracle的解决办法
转自http://blog.sina.com.cn/s/blog_614b6f210100t80r.html 一.创建sqlserver链接服务(sqlserver链接oracle) 首先sqlse ...
随机推荐
- 微信小程序之一:动态添加view(view包含picker,input)
<view wx:for="{{array}}" wx:key="this" class="borderContainer"> ...
- 介绍几款常用的在线API管理工具
在项目开发过程中,总会涉及到接口文档的设计编写,之前使用的都是ms office工具,不够漂亮也不直观,变更频繁的话维护成本也更高,及时性也是大问题.基于这个背景,下面介绍几个常用的API管理工具,方 ...
- Python24之递归和迭代
一.递归的含义及一些用途 递归就是函数通过return语句实现自己调用自己的过程,基本上所有的程序语言都有递归算法,常有人说(’一般程序员使用迭代,天才程序员使用递归‘),汉诺塔游戏.谢尔宾斯基三角形 ...
- 【HC89S003F4开发板】 7ASM&C混合编程
HC89S003F4开发板ASM&C混合编程 一.前言 在配套资料里有实现ASM&C混合编程的说明文档,这里来实现这个功能. 二.实现ASM&C混合编程 1.打开 Keil 工 ...
- 【并发】9、借助redis 实现生产消费,消息订阅发布模式队列
这个就是一个消息可以被多次消费的范例了 其实这个实现的方式可以参考我之前的设计模式,观察者模式 https://www.cnblogs.com/cutter-point/p/5249780.html ...
- 使用 react 的 hooks 进行全局的状态管理
使用 react 的 hooks 进行全局的状态管理 React 最新正式版已经支持了 Hooks API,先快速过一下新的 API 和大概的用法. // useState,简单粗暴,setState ...
- ES与关系型数据库的通俗比较
1.在Elasticsearch中,文档归属于一种类型(type),而这些类型存在于索引(index)中,我们可以画一些简单的对比图来类比传统关系型数据库: Relational DB -> D ...
- Eclipse上安装websphere
Eclipse上安装websphere 参考:https://blog.csdn.net/qq_26264237/article/details/90107508 安装websphere插件 WebS ...
- Web编程规范之三层架构设计规范
本篇是我对Web开发规范中关于三层架构设计规范的一些浅见.虽然三层架构是比较普通,也比较简单的架构设计模式.但是随着业务的增长,涉及到的对象越来越多,处理的逻辑越来越复杂.这其中难免会出现设计不当,从 ...
- Oracle查看占用表空间最大的表(排序)
场景:在做数据库巡检时,检查大表是必不可少的操作,可以查看各表占用表空间的大小 代码: as sizes,q.num_rows,t.segment_type from dba_segments t l ...