基于上次的文章搭建的环境,可以在这里:http://www.cnblogs.com/DragonStart/p/8275182.html看到上次的文章.


演示环境

1. 配置一览

Key Value
系统版本 Win2016
数据库版本 SQLServer 2016
群集IP 10.22.20.201
数据库侦听器IP 10.22.20.202

2. 连接

3. 写点初始数据

这个只需要在其中一个写就行,不用全部写

4. 备份数据库

如果不做备份的话,后面会失败.进入后不用改什么,直接备份即可.

5. 给SQLServer服务打开高可用性组支持

操作完记得重启数据库服务:


创建与分享证书

1. 在服务器上建立目录

创建证书过程中会生成证书文件,所以每个服务器准备个文件夹用于存放证书文件:

记得给everyone读写权限

2. 创建证书

每一个服务器上,执行如下SQL代码,注意:每一个服务器执行之前要做小改动,要改的地方写在注释里:

USE master;
GO
--创建主密钥
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Abc123';
--创建证书 这里有两个"CERT1",建议每台机器都改成不同的名称以作区分
CREATE CERTIFICATE CERT1 WITH SUBJECT = 'CERT1', START_DATE = '2017-01-01',EXPIRY_DATE = '2099-12-30';
--把刚才创建的证书备份到文件 这里也有两个CERT1要改
BACKUP CERTIFICATE CERT1 TO FILE = 'D:\share\CERT1.cer';
--创建终结点,设为证书验证 这里第二行有1个CERT1要改
CREATE ENDPOINT [group0_endpoint] AUTHORIZATION [sa] STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING (ROLE = ALL,AUTHENTICATION = CERTIFICATE CERT1, ENCRYPTION = REQUIRED ALGORITHM AES)
GO

如果创建证书过程中有失败的,可以用这个回退一些操作:

--删除终结点
drop ENDPOINT [group0_endpoint];
go
--删除证书
DROP CERTIFICATE CERT1;
--删除主密钥
drop master key
go

3. 把证书文件发到每台设备

随便用什么方法,把证书文件发到每台服务器:

4. 在每台服务器的SQL里,安装其它服务器的证书:

--载入其它节点证书
--不用载入自己的证书!
--不用载入自己的证书!
--不用载入自己的证书!
--CREATE CERTIFICATE CERT1 FROM FILE = 'D:\share\CERT1.cer';
CREATE CERTIFICATE CERT2 FROM FILE = 'D:\share\CERT2.cer';
CREATE CERTIFICATE CERT3 FROM FILE = 'D:\share\CERT3.cer';
GO

5. 查看证书与终结点

现在在每台设备执行如下指令应该都能看到所有证书,以及终结点.group0_endpoint,如果没有,需要根据以上操作创建.

select * from sys.certificates
select * from sys.endpoints

创建可用性组

1. 新建可用性组向导

2. 根据向导走流程

名称随意

如果你之前没备份数据库,这里会过不了

把所有节点添加进来,注意还要配置些选项

默认过过过~







3. 数据同步成功



到这里,数据同步就成功了,我们可以看到每台服务器都同步了这个数据库

根据之前的配置,我们有1个可读写的主节点,和2个只读的备用节点.当客户端要连接的时候,如何知道主节点与备用节点呢?接下来需要配置一个侦听器,让客户端通过侦听器自动连接到主节点.


创建侦听器

我们需要给可用性组创建一个侦听器,该侦听器会自动把侦听器IP指向主库服务器.

1. 点这里

2. 填写侦听器IP和端口

3. 完成


简单测试

1. 使用侦听器连接

我们刚才创建了侦听器,现在可以用这个侦听器的IP去连接当前主数据库节点.



成功!

2. 尝试手工切换主节点

点这里



选D2节点切换



连接一下



后面都是默认配置即可.



刷新下连接,可以看到当前还是连着"主要"节点:



3. 尝试自动切换

接着试试以关机的方式,让数据库自己去切换节点.

强行关闭该服务器:



再次刷新客户端:



可以看到主库自动切换到D1去了.

4. 写入数据



在切换过的库写数据会出现这样的情形:写入的数据自增长字段多了1000,所以,在设计业务的时候,最好对此有所准备.

结束~

基于无域故障转移群集 配置高可用SQLServer 2016数据库的更多相关文章

  1. Windows 2016 无域故障转移群集部署方法 超详细图文教程 (一)

    故障转移群集是一个很实用的功能,而windows在2016版本开始,终于支持不用域做故障转移群集. 在群集中,我们可以设定一个"群集IP" 而客户端只需要根据这个"群集I ...

  2. Windows 2016 无域故障转移群集部署方法 超详细图文教程 (二)

    上一章我们配置了一台设备,接着根据那个配置,配置其它设备.这里我配置了三台设备: 创建故障转移群集,并添加设备. 之前的操作都是每台服务器都要做的,而这个操作,只需要任选一台去做即可,我这里选d1 1 ...

  3. Windows Azure 故障转移模式及高可用个模式探讨!

     眼下国内非常多用户对于云服务的可用性存在误解,什么样子的误解呢?比方某云服务商,在华南某地有一个机房,在华东有一个机房. 这个客户就提到一个需求,你提供的99%可用性的概念是什么意思呢?是不是我 ...

  4. 搭建iSCSI文件服务器故障转移群集

    故障转移群集(Failover Cluster)可以提供一个高可用性应用程序或服务的网络环境,本章将接受如何搭建iSCSI SAN文件服务器故障转移群集. 故障转移群集概述 我们可以将多台服务器组成一 ...

  5. Hyper-V故障转移群集

    Hyper-V故障转移群集配置完成后,在故障转移群集管理器中新建虚机:角色-虚拟机-新建虚拟机 如果直接在Hyper-V管理器中新建虚机,则不是高可用,需要在故障转移群集管理器中将其添加进来使其成为高 ...

  6. SQLServer 2012异常问题(一)--故障转移群集+镜像环境导致作业执行失败

    原文:SQLServer 2012异常问题(一)--故障转移群集+镜像环境导致作业执行失败 先感谢一下我的同事们最先发现此问题,鸣谢:向飞.志刚.海云 最近在生产环境发现一个诡异的问题: 环境:WIN ...

  7. SQL Server ->> 高可用与灾难恢复(HADR)技术 -- AlwaysOn(实战篇)之建立活动目录域、DNS服务器和Windows故障转移群集(准备工作)

    因为篇幅原因,AlwaysOn可用性组被拆成了两部分:理论部分和实战部分.而实战部分又被拆成了准备工作和AlwaysOn可用性组搭建. 三篇文章各自的链接: SQL Server ->> ...

  8. SQL Server ->> 高可用与灾难恢复(HADR)技术之 -- Windows故障转移群集

    WSFC 群集 (WSFC cluster)“Windows Server 故障转移群集”(WSFC) 群集是一组独立的服务器,它们共同协作以提高应用程序和服务的可用性. 故障转移群集实例 (Fail ...

  9. Hyper-V 2012 R2 故障转移群集

    和终端用户相比,企业用户对于业务的连续性和可靠性更为在意.相对而言,企业一般不会将追逐单一硬件的性能排在第一位. 如何衡量业务是否持续可用,一般使用"x 个 9"这种方式来定义.如 ...

随机推荐

  1. 搭建ssm框架,可实现登录和数据展示以及增删改查

    需求: 后台使用ssm(spring-springMVC-mybatis)进行整合 前台使用bootstrap框架 前后台交互使用Ajax进行发送 表结构: 登录页面后显示所有用户信息,可对每条进行增 ...

  2. ssm框架找不到mysql驱动类WARN DriverManagerDataSource:107 - Could not load driverClass com.mysql.jdbc.Driver

    找了很久错误,检查了配置文件,和spring配置数据源,都没有发现问题,最后上网查询了下,发现是由于配置文件后面有空格. 去除掉配置文件后面的空格就可以正常运行了.

  3. Python 爬虫性能相关

    性能相关 在编写爬虫时,性能的消耗主要在IO请求中,当单进程单线程模式下请求URL时必然会引起等待,从而使得请求整体变慢. import requests def fetch_async(url): ...

  4. SpringMVC(十):SpringMVC 处理输出模型数据之Map及Model

    Spring MVC提供了以下几种途径输出模型数据: 1)ModelAndView:处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据: 2)Map及Model:处理方法 ...

  5. [翻译] Tensorflow中name scope和variable scope的区别是什么

    翻译自:https://stackoverflow.com/questions/35919020/whats-the-difference-of-name-scope-and-a-variable-s ...

  6. JavaScript splice() 、slice() 方法

    定义和用法 splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目. slice() 方法可从已有的数组中返回选定的元素. 注释:该方法会改变原始数组. 语法 arrayObject. ...

  7. 招募:Wiki 文档翻译小伙伴招募

    https://github.com/dotnetcore/CAP/issues/93 为了推进 CAP 的国际化工作,为全球其他 .NET 开发者提供更加良好的文档阅读体验,现在需要对CAP wik ...

  8. [LeetCode] Valid Parenthesis String 验证括号字符串

    Given a string containing only three types of characters: '(', ')' and '*', write a function to chec ...

  9. 手写简单的jq雪花飘落

    闲来无事,准备写个雪花飘落的效果,没有写太牛逼的特效,极大的简化了代码量,这样容易读取代码,用起来也很简单,对于那些小白简直是福利啊,简单易读易学.先直接上代码吧,然后再一一讲解,直接复制粘贴就可以拿 ...

  10. day 1——ST表练习

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 43893   Accepted: 20585 ...