一、注意点

1.数据库的模式要是完整模式。

2.要对数据库完整备份和事务日志备份,分别还原到镜像库上,使用NORECOVERY模式。

3.镜像数据库是不允许删除和操作,即便查看属性也不行。

4.先删除端点,再删除证书,再删除主密钥。

二、搭建步骤

1、创建主密钥(主库和镜像库上都执行)

命令:

use master
go
create master key encryption by password='$a123456'
go

查看主密钥

创建主密钥之前:

创建主密钥之后:

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

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

SSMS查看创建的端点

4、备份证书(主库和镜像的库的都备份,并互相拷贝过去,保证每个服务器上都有2个证书)

命令:

主库上执行:

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

5、创建登录名(这个要和证书关联,所以1创建2的,2创建1的)

命令:

主库上执行:

use master
go
create login mirror02_login with password='abc@123456'
go

镜像库上执行:

use master
go
create login mirror01_login with password='abc@123456'
go

6、创建使用该登录名的用户

命令:

主库上执行:

use master
go
create user mirror02_user for login mirror02_login
go

镜像库上执行:

use master
go
create user mirror01_user for login mirror01_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 mirror01_cert
authorization mirror01_user
from file='D:\cert\mirror01_cert.cer'
go

8、授予对远程数据库端点的登录名的CONNECT权限

命令:

主库上执行:

use master
go
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [mirror02_login];
go

镜像库上执行:

use master
go
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [mirror01_login];
go

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

10.连接镜像(先在镜像库上操作,然后在主库上操作)

注:sqlmirror01和sqlmirror02是2台机器的机器名

命令:

镜像库上执行:(做完这个操作后,数据库的状态:正在恢复)

use master
go
ALTER DATABASE test SET PARTNER = 'TCP://sqlmirror01:5022';
go

主库上执行:(做完这个操作,镜像就搭建好了)

use master
go
ALTER DATABASE test SET PARTNER = 'TCP://sqlmirror02:5022';
go

此时主库的状态:

镜像库的状态:

镜像的状态:(只能在主库上右键-->属性查看)

注:如果状态不对,先刷新一下SSMS

11.查看的选项

(1)启用数据库监视器查看镜像是否正常(主库上查看)

(2)查看镜像服务器是否授权主库服务器

12 .主库宕机后,怎么恢复镜像库为可用状态

--第一步:脱离镜像
alter database test set partner off

--第二步;修改数据库的状态为recovery
restore database test with recovery

三、涉及到的系统SQL

--1.查看所有的主秘钥
select * from sys.key_encryptions

--删除主秘钥(要先删除使用秘钥的证书)
drop master key

--2.查看所有的证书
select * from sys.certificates

--删除证书(要先删除使用证书的端点)
drop certificate sqlmirror02_cert

--3.查看所有的端点(endpoint)
select * from sys.endpoints

--删除端点
drop endpoint Endpoint_Mirroring

17-SQLServer使用证书认证的方式搭建数据库镜像的更多相关文章

  1. 单点登录(二)----实战------简单搭建CAS---测试认证方式搭建CAS

    我们在上一篇文章中已经介绍了cas以及它的工作流程. 单点登录(一)-----理论-----单点登录SSO的介绍和CAS+选型 本章我们开始动手搭建一个完整的cas服务实现2个web之间的单点登录. ...

  2. APK安装时的过滤方式:包名白名单、证书认证

    1.定义一些全局变量,文件位置: Build.java (frameworks\base\core\java\android\os) /** * 包管理方式名称<br> * whiteli ...

  3. MongoDB 副本集+分片 认证方式搭建

    MongoDB 副本集+分片 认证方式搭建 参考资料: https://www.cnblogs.com/ityouknow/p/7344005.htmlhttps://jorwen-fang.itey ...

  4. 不同服务器之间使用svn钩子post-commit同步代码遇到的证书认证问题.md

    遇到的问题,以下其他问题都是因解决这个问题引申出来的问题 VisualSVN hooks自动同步更新到web服务器 错误信息如下: Error validating server certificat ...

  5. Https握手协议以及证书认证

    1. 什么是https Https = http + 加密 + 认证 https是对http的安全强化,在http的基础上引入了加密和认证过程.通过加密和认证构建一条安全的传输通道.所以https可以 ...

  6. JAVA配置&注解方式搭建简单的SpringMVC前后台交互系统

    前面两篇文章介绍了 基于XML方式搭建SpringMVC前后台交互系统的方法,博文链接如下: http://www.cnblogs.com/hunterCecil/p/8252060.html htt ...

  7. SSL通信-忽略证书认证错误

    .NET的SSL通信过程中,使用的证书可能存在各种问题,某种情况下可以忽略证书的错误继续访问.可以用下面的方式跳过服务器证书验证,完成正常通信. 1.设置回调属性ServicePointManager ...

  8. https的证书认证 iOS版

    一.证书链 SecTrustRef: SecTrustRef trust = challenge.protectionSpace.serverTrust; 需要先拿出一个 SecTrustRef 对象 ...

  9. HTTPS协议、TLS协议、证书认证过程解析

    一.HTTPS 协议 HTTPS协议其实就是HTTP over TSL,TSL(Transport Layer Security) 传输层安全协议是https协议的核心. TSL可以理解为SSL (S ...

随机推荐

  1. Linux上,最常用的一批命令解析(10年精选)

    Linux这么多命令,通常会让初学者望而生畏.下面是我结合日常工作,以及在公司的内部培训中,针对对Linux不是很熟悉的同学,精选的一批必须要搞懂的命令集合.任何一个命令其实都是可以深入的,比如tai ...

  2. jquery设置input不可编辑,背景变灰,鼠标变禁止

    先看效果 $("#id").attr("onfocus", "this.blur()"); $("#id").css(& ...

  3. 《鸟哥的Linux私房菜:基础学习篇》读书笔记之第一部分

    一.如何学习Linux 1. Linux基础知识 (1) 计算机概论与硬件相关知识. (2) 先从Linux的安装与命令学起. (3) Linux操作系统的基础技能.如用户/用户组.权限.程序等概念. ...

  4. mysql 不支持group by的解决方案

    进入mysql命令行 执行如下两句语句 set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_ ...

  5. 飞腾1500A 上面银河麒麟操作系统 进行远程以及添加用户的方法 linux xrdp

    1. 安装远程用的软件: sudo apt-get install xrdp vnc4server xbase-clients systemctl enable xrdp systemctl star ...

  6. 【青橙商城-管理后台开发】3. web模块搭建

    [青橙商城-管理后台开发]3. web模块搭建 1.创建qingcheng_web_manager模块 pom.xml <?xml version="1.0" encodin ...

  7. Kubernetes---资源控制器之ReplicationController、ReplicaSet和Deployment

    1.ReplicationController和ReplicaSet介绍 RC(ReplicationController)主要的作用就是用来确保容器应用的副本数始终保持在用户定义的副本数.即如果有容 ...

  8. spark调优篇-oom 优化(汇总)

    spark 之所以需要调优,一是代码执行效率低,二是经常 OOM 内存溢出 内存溢出无非两点: 1. Driver 内存不够 2. Executor 内存不够 Driver 内存不够无非两点: 1. ...

  9. 牛客 26E 珂学送分2 (状压dp)

    珂...珂...珂朵莉给你出了一道送分题: 给你一个长为n的序列{vi},和一个数a,你可以从里面选出最多m个数 一个合法的选择的分数定义为选中的这些数的和加上额外规则的加分: 有b个额外的规则,第i ...

  10. 工作单元 — Unit Of Work

    在进行数据库添加.修改.删除时,为了保证事务的一致性,即操作要么全部成功,要么全部失败.例如银行A.B两个账户的转账业务.一方失败都会导致事务的不完整性,从而事务回滚.而工作单元模式可以跟踪事务,在操 ...