对DBA而言,不需要域就可以搭建SQL Server AlwaysOn是Windows Server 2016中最令人兴奋的功能了,它不仅可以降低搭建的成本,而且还减少了部署和运维的工作量。

上篇博客已给大家分享过:要在没有域的环境中搭建AlwaysOn需要两个步骤,

1).搭建基于windows server 2016 工作组环境的故障转移集群;

2).搭建AlwaysOn;

步骤1已在上篇博客中介绍了,因此本文将分享AlwaysOn的搭建方法:

1.安装SQL Server 2016

在所有节点上安装SQL Server 2016。

2.启用AlwaysOn功能

在所有节点上启用AlwaysOn功能,方法:

打开SQL Server配置管理器,在对应的SQL Server实例属性中,勾选【启用AlwaysOn可用性组】,如下图:

3.在每个节点上创建alwaysOn的通讯端点(镜像端点)

在windows server 2016之前,配置端点的加密的方式有两种:域用户授权和证书加密,升级到windows server 2016后,如果不使用域搭建AlwaysOn,那么就只能选择证书加密的方式了。

     3.1创建一个共享目录,允许AlwaysOn的所有节点均可以读写该目录;

共享目录用来存放端点通讯的证书,在后续的步骤中将会用到。示例为:\\WIN-JBRHIAJPMG2\file

     3.2创建端点

为了方便,我把创建证书和安装证书的过程用两个存储来实现。(这个两个存储过程来自网上,不是我写的)

  3.2.1将如下两个存储过程在每个节点的SQL Server实例中执行一遍:

CREATE PROCEDURE CreateEndpointCert@ShareName SYSNAME ,@StrongPassword SYSNAME
AS BEGIN--This must be executed in the context of MasterIF (DB_NAME() <> 'master')BEGINPRINT N'This SP must be executed in master.  USE master and then retry.'RETURN (-1)ENDDECLARE @DynamicSQL varchar(1000);DECLARE @CompName varchar(250);DECLARE @HasMasterKey INT;SELECT @CompName = CONVERT(SysName, SERVERPROPERTY('MachineName'));-- Only create a master key if it doesn't already existSELECT @HasMasterKey = is_master_key_encrypted_by_server from sys.databases where name = 'master'IF (@HasMasterKey = 0)BEGIN--Create a MASTER KEY to encrypt the certificate.SET @DynamicSQL = CONCAT('CREATE MASTER KEY ENCRYPTION BY PASSWORD = ' ,  QUOTENAME(@StrongPassword, ''''));EXEC (@DynamicSQL)END--Create the certificate to authenticate the endpointSET @DynamicSQL = CONCAT('CREATE CERTIFICATE ', QUOTENAME(@CompName + '-Certificate'), ' WITH SUBJECT = ', QUOTENAME(@CompName, ''''),',EXPIRY_DATE=',QUOTENAME(20991231 ,'''') )
EXEC (@DynamicSQL);

--Create the database mirroring endpoint authenticated by the certificate.SET @DynamicSQL =CONCAT('CREATE ENDPOINT Endpoint_MirroringSTATE = STARTEDAS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)FOR DATABASE_MIRRORING (AUTHENTICATION = CERTIFICATE ',QUOTENAME(@CompName + '-Cert'), ' , ENCRYPTION = REQUIRED ALGORITHM AES, ROLE = ALL)');EXEC (@DynamicSQL);--Back up the certificate to a common network share for import into other nodes in the clusterSET @DynamicSQL = CONCAT('BACKUP CERTIFICATE ',QUOTENAME(@CompName + '-Cert'),' To FILE = ', QUOTENAME( @ShareName + '\SQL-' + @CompName + '.cer', ''''));EXEC (@DynamicSQL);
END
GO

说明:

CreateEndpointCert 接受2个参数,分别为共享路径和证书密码,其作用:创建证书,创建基于证书加密通讯的端点,备份证书到共享路径;

CREATE PROCEDURE InstallEndpointCert@CompName SYSNAME,@ShareName SYSNAME,@StrongPassword SYSNAME
AS BEGINDECLARE @DynamicSQL varchar(1000);DECLARE @MyCompName varchar(250);SELECT @MyCompName = CONVERT(SysName, SERVERPROPERTY('MachineName'));--Don't need to create LOGINs for the local systemIF (@MyCompName <> @CompName)BEGINSET @DynamicSQL = CONCAT('CREATE LOGIN ', QUOTENAME (@CompName + '-Login'), ' WITH PASSWORD= ', QUOTENAME( @StrongPassword, ''''));EXEC (@DynamicSQL);SET @DynamicSQL = CONCAT('CREATE USER ', QUOTENAME( @CompName + '-User'), ' FOR LOGIN ', QUOTENAME(@CompName + '-Login'));EXEC (@DynamicSQL);SET @DynamicSQL = CONCAT('CREATE CERTIFICATE ', QUOTENAME(@CompName +'-Cert'), ' AUTHORIZATION ', QUOTENAME(@CompName +'-User'), ' FROM FILE = ', QUOTENAME(@ShareName + '\SQL-' + @CompName + '.cer' , ''''));EXEC (@DynamicSQL);SET @DynamicSQL = CONCAT('GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO ', QUOTENAME(@CompName +'-Login'));EXEC (@DynamicSQL);END
END
GO

说明:

InstallEndpointCert  接受3个参数,分别为主机名、共享路径(必须跟CreateEndpointCert的共享路径相同)和密码。其作用:在SQL Server中为每个节点(除自身外)创建一个对应的登录用户和数据库用户(为了便于管理),然后利用共享路径中证书来授予该数据库用户可以访问对应节点的端点;

3.2.2 创建端点

首先依次在每个节点上执行CreateEndpointCert,创建证书,

然后在每个节点上执行InstallEndpointCert,InstallEndpointCert的第一个参数就是主机名,也就是说,除了自身外,需要将其他所有节点的主机名作为参数都执行一次InstallEndpointCert。

说明:

CreateEndpointCert 接受2个参数,分别为共享路径和证书密码,其作用:创建证书,创建基于证书加密通讯的端点,备份证书到共享路径;

InstallEndpointCert  接受3个参数,分别为主机名、共享路径(必须跟CreateEndpointCert的共享路径相同)和密码(数据库用户的密码)。

4.新建可用组

打开SSMS,登录到SQL Server,展开【AlwaysOn搞可用性】,根据向导创建AlwaysOn。

4.1指定可用组名称

4.2选择数据库

说明:在走AlwaysOn之前,数据库必须在完整模式下,且已经做过完整备份。

4.3指定副本,单击【添加副本】把所有的成员节点添加进来;

       4.3.1 添加副本

自动故障转移:运行在哪些节点间建立高可用(SQL Server 2016已经支持在3个节点了) 。

同步提交:AlwaysOn同步的模式,对应的还有异步模式,当选择了自动故障转移时,必须勾选同步提交;如想详细了解同步和异步模式的区别,可参考这个链接:http://www.cnblogs.com/i6first/p/4139670.html 。

可读辅助副本:当该节点为辅助副本时,能否接受只读请求以及以哪种方式接受只读请求(只读意向)。

4.3.2配置端点

步骤3中创建的端点在这里可以查看到:

4.3.3配置侦听器

4.4 选择数据同步的方式

我选择的是完整,指定了一个共享目录,在后面安装环节中,主副本会把数据库备份到这个位置,然后辅助副本从此位置拿到备份文件后还原,已实现数据同步。

4.5后面的【验证】、【摘要】直接选择Next(下一步)即可。

正常情况完成步骤4.5以后AlwaysOn就搭建完了,但我在两次实际验证过程中发现还需要继续后面的步骤,可能是我的环境的问题,请读者根据需要参考。

4.6将可用副本联机

在下图所示的位置,右击脱机的节点(红色向下的标记),选择联接到可用性组;

转载于:https://www.cnblogs.com/i6first/p/6047538.html

如何在没有域的环境中搭建AlwaysOn(二)相关推荐

  1. ad域推送软件_如何在域管理环境中进行软件的推送安装

    如何在域管理环境中进行软件的推送安装 1, 要把你准备分发的软件制作成 .msi 软件安装包 . 在 Windows2000 安装光盘运行 x:\Valueadd\3rdparty\Mgmt\Wins ...

  2. 微服架构基础设施环境平台搭建 -(二)Docker私有仓库Harbor服务搭建

    微服架构基础设施环境平台搭建 -(二)Docker私有仓库Harbor服务搭建 通过采用微服相关架构构建一套以Kubernetes+Docker为自动化运维基础平台,以微服务为服务中心,在此基础之上构 ...

  3. ceph rbd mysql_如何在 Kubernetes 环境中搭建 MySQL(三):使用 PVC 挂接 RBD

    MySQL in Kubernetes MySQL 中的数据是关键信息,是有状态的,不可能随着 MySQL pod 的销毁而被销毁,所以数据必须要外接到一个可靠的存储系统中,目前已经有了 Ceph 系 ...

  4. k8s mysql 挂载_如何在 Kubernetes 环境中搭建 MySQL(四):使用 StorageClass 挂接 RBD...

    MySQL + Kubernetes 1. 简介 在系列文章的第三篇中,讲到了如何使用 PV 和 PVC 挂载 RBD 上建立好的块存储镜像,但这还是不足以满足 cloud native 环境下的需求 ...

  5. Flink从入门到精通100篇(十八)-CentOS环境中搭建Flink分布式集群

    一. Flink的下载 安装包下载地址:http://flink.apache.org/downloads.html  ,选择对应Hadoop的Flink版本下载 [admin@node21 soft ...

  6. J2EE环境的搭建之二—oracle的安装与详解

    在大型应用系统中,通常使用Oracle 这样的重量级数据库来作为信息系统的后 台数据管理和存储系统 1.配置Linux 内核参数: (1)配置系统在启动时内核所必须的参数: 修改内核配置文件[root ...

  7. 模拟共享单车开发之路-APP客户端开发之Qt安卓环境的搭建(二)

    今天将电脑重装了系统,将VS2019,Qt等重新安装了, 需要的开发环境如下图所示: 值得注意的是, Qt中要新增安装组件:选中有关Android这一项 然后设置QtCreator编译路径:打开QtC ...

  8. Windows Server 2012 R2单域及域森林环境搭建

    Windows Server 2012 R2单域及域森林环境搭建 文章目录 1 单域环境搭建 1 引 言 2 域控制器环境的搭建 2.1 基础配置 2.2 Windows Server 2012 R2 ...

  9. 在本地环境中利用iodine工具建立DNS隧道

    1.简介 iodine是目前比较活跃,知名度比较大的一个dns tunneling实现工具.我查阅了其他人的博客,需要用到VPS,不便于复现.为了帮助初学者学习iodine,因此在本地环境中搭建了DN ...

最新文章

  1. 亿级流量架构之服务器扩容思路及问题分析
  2. php-cgi和php-fpm,Windows环境下解决Nginx+php并发访问阻塞问题。
  3. 系统学习Linux11点建议
  4. html 01前沿-web介绍
  5. 数字图像处理系统组成 及研究内容
  6. 教你打造Silverlight超酷翻页实例
  7. 今日头条遭罚 94 万;快手、火山小视频整改「低俗」;Wi-Fi 万能钥匙被调查 | CSDN极客头条
  8. 淘宝API接口:item_cat_get - 获得淘宝商品类目
  9. JeeWx捷微管家系统
  10. MySQL之表的约束(主键、外键、唯一键、自增长、列描述、默认值、空属性)
  11. html5使用table制作表单
  12. 电视制式 NTSC PAL SECAM
  13. mac os 系统word文档批量更改图片尺寸问题汇总
  14. 宝塔linux 搭建rtmp+ffmpeg转流直播服务器
  15. mkdir -p的含义
  16. 微信小程序 用户登录界面,用户名无法切换输入法问题解决方法
  17. 烟雨PHP图床程序源码
  18. Internet Download Manager 6.37.15简体中文版
  19. java入门基础(四)
  20. AI艺术简史·未来已来,只是分布不均而已…… [ 元宇宙创作者指南 ]

热门文章

  1. Numpy的使用(4)
  2. 高光谱地物识别练习-从ENVI标准波普库中选择端元进行物质识别
  3. redis客户端mac_推荐一款神仙颜值的Redis客户端工具
  4. java自定义annotation_Java自定义annotation | 学步园
  5. 像科学家一样思考python_像计算机科学家一样思考Python (第2版) 中文pdf完整版
  6. graphpad做饼图_走进隆江糖饼老店,探秘绿豆饼制作过程
  7. python按照多个key排序
  8. java8编程开发入门 李兴华_李兴华系列--JAVA详解视频(jdk1.8)及项目实战教程
  9. Android仿人人客户端(v5.7.1)——新鲜事之下拉列表(过滤项列表)
  10. View事件机制分析