草庐IT

Windows故障转移群集 和 SQLServer AlwaysOn 搭建教程

黑哥000 2023-03-28 原文

一、准备工作:

1准备域控:服务器都在同一个域控(以下假设所在域控为 AAA.COM)。

2开启服务:域控要开启Remote Procedure Call (RPC)服务。

3安装角色和服务:纳入群集节点的服务器必须先添加角色和功能 .NET3.5 和 故障转移群集,防火墙开启两个共享端口135445,和端点端口5022,要开启Remote Registry服务

4建专用域账号:在域控新建数据库服务专用账号 wsfc_sqlserver@AAA.com,密码:********

5配置仲裁共享文件夹:去域控下非数据库节点服务器上建立一个共享文件夹(如:\\10.0.XXX.XXX\WIN故障转移群集\共享仲裁盘专用),专门用于仲裁共享文件,授予wsfc_sqlserver@AAA.com所有共享权限。

6数据库相关

6.1为新建域账号授权:在各节点服务器将此wsfc_sqlserver@AAA.com加入管理员组,并在服务中将其设置为 SQLSERVER服务的登录身份,并赋予SQLSERVERsysadmin角色(后边就用这个账号登录SQLSERVER配置AlwaysOn)。

USE master
CREATE LOGIN [AAA\wsfc_sqlserver] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
ALTER SERVER ROLE [sysadmin] ADD MEMBER [AAA\wsfc_sqlserver]
go

6.2整理节点服务器数据文件夹:每台节点服务器的数据库都要放到相同的位置,文件夹路径要全部相同,副本服务器上要先按照主服务器建好文件夹。

6.3设置节点服务器数据备份共享文件夹:每台节点服务器建一个专门用于存放数据库备份及同步文件的文件夹,设置共享,并加上 管理员组 的所有共享权限(在之前wsfc_sqserever@AAA.com已加入管理员组)(注意干掉默认的EveryOne权限)。

6.4同步数据库账号:在同步之前,在辅助副本服务器数据库上先建立好与主副本数据库一样的数据库账号(用EXEC sp_help_revlogin; 进行导出导入,确保所有副本上的账号完全一致(包括SID要一致))。

  

二、搭建故障转移群集

1、选择节点服务器

 

2、下一步验证配置,选“否”。

3、定义群集名称和虚拟地址。

 

4、下面就是按你的设置进入自动配置,配置完成如图。同时域控中会自动生成一条以群集名称和IP的主机(A)记录,和计算机。

 

 

 

5、群集创建完成后,本机会自动生成一个用户CLIUSR,此用户是用来启动和运行群集服务的,千万不要动它,否则会导致群集服务中断。

 

 

 6、配置群集仲裁(右键创建好的群集 >> 更多操作 >> 配置群集仲裁设置)

 

 

 

 

  

三、搭建数据库AlwaysOn

1、做好第一节第6点的相关准备6、数据库相关)

2、建立SQL别名(32位):在每台节点服务器都加上所有节点数据库别名(实例名称+IP+端口 ),确保可以通过别名访问对应数据库。

  

3启用 AlwaysOnSQLSERVER配置管理器)

  

4、创建数据库证书(一定要配,否则 AlwaysOn可用性组建好了,但是副本会连接不上(显示一把红色的×),)

4.1、在每台节点数据库,创建并安装证书:

USE master;
GO
--创建主密钥。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '******************';
--创建证书。 把CERT_xxx_x1换成自己要的名字。
CREATE CERTIFICATE CERT_xxx_x1 WITH SUBJECT = 'CERT_xxx_x1', START_DATE = '2022-01-01',EXPIRY_DATE = '2099-12-30';
--把刚才创建的证书备份到文件。 把CERT_xxx_x1换成自己要的名字。
BACKUP CERTIFICATE CERT_xxx_x1 TO FILE = 'D:\DataBase\cert\CERT_xxx_x1.cer';
--创建终结点,设为证书验证。 把CERT_xxx_x1换成自己要的名字。
CREATE ENDPOINT [Hadr_endpoint] AUTHORIZATION [sa] STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING (ROLE = ALL,AUTHENTICATION = CERTIFICATE CERT_xxx_x1, ENCRYPTION = REQUIRED ALGORITHM AES)
GO

4.2、在每台节点数据库,载入群集内其他节点数据库的证书:

USE master;
CREATE CERTIFICATE CERT_xxx_x1 FROM FILE = 'd:\DataBase\cert\CERT_xxx_x1.cer';
CREATE CERTIFICATE CERT_xxx_x2 FROM FILE = 'd:\DataBase\cert\CERT_xxx_x2.cer';
CREATE CERTIFICATE CERT_xxx_x3 FROM FILE = 'd:\DataBase\cert\CERT_xxx_x3.cer';

5、创建AlwaysOn高可用组(数据库 >>  Always On高可用性 >> 可用性组 >> 右键新建)

5.1、指定主副本&辅助副本

 

5.2、端点(不用配置,默认即可)

 

5.3、侦听器

 

5.4、只读路由

 

只读路由的使用

同一个域AAA:可以使用AG23013,8887 AG23013.AAA.COM,8887 进行访问。

不同域BBB:可以在BBB域建立一条记录指向侦听器的IP进行访问。

连接字符串默认访问主副本,可读写。如果要只读,就在连接字符串中添加 ApplicationIntent=ReadOnly;MultiSubnetFailover=true,指定访问只读副本实现读写分离。

 

5.5、设置数据同步方式

 

5.6、再下一步下一步直到完成就行了,就可以在主副本所在数据库和辅助副本所在数据库分别看到下图:

 

5.7、数据库里面的“AlwaysOn高可用组”创建成功后会有如下变化:

5.7.1、在故障转移群集内会自动产生一个以“可用性组名”命名的角色,角色内已包含侦听器,如下图:

 

5.7.2、域控会根据“侦听器名称”自动产生一条计算机记录 和一条主机(A)记录:

 

 

 

 

四、过程中可能遇到的问题

1、如果要分离数据库,出现错误“无法对数据库‘XXX‘执行删除,因为它正用于复制”

解决:先 sp_removedbreplication 'DBNAME';   然后再分离。

2、数据库“正在还原”

解决:如果后续还要将此数据库加入到可用性组,就使用:RESTORE DATABASE DBNAME WITH NORECOVERY; 反之使用 WITH RECOVERY

PS:使用WITH RECOVERY后,还要从新添加到可用性组时可能会出现如下错误:

  

解决办法(右键数据库>>所有任务>>还原>>数据库>>选项菜单>>恢复状态>>选择RESTORE WITH NORECOVERY),操作完成后,再去可用性组里边的可用性数据库,右键>>联机:

 

3、执行手动故障转移后,副本数据库可能状态为“未同步”,且无法连接。

解决:在“未同步”的数据库执行:ALTER DATABASE DBNAME SET HADR RESUME;

4、销毁群集时,没有先逐出节点,直接删群集,导致这个节点加入新的群集时失败“计算机已加入群集”。

解决:进入注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClusSvcStart项的值应该是2,改为4。

5、在数据库创建可用性组时,缺少选项“Windows Server 故障转移群集”,只有两个选项(EXTERNAL 和 NONE)。

解决:重启SQLSERVER服务。

6、更改数据的所有者。

解决:ALTER AUTHORIZATION ON DATABASE::DBNAME TO [账户]

 

End.  

有关Windows故障转移群集 和 SQLServer AlwaysOn 搭建教程的更多相关文章

  1. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  2. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  3. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  4. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  5. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  6. 在VMware16虚拟机安装Ubuntu详细教程 - 2

    在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

  7. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  8. ruby - 如何在 Ruby 中执行 Windows CLI 命令? - 2

    我在目录“C:\DocumentsandSettings\test.exe”中有一个文件,但是当我用单引号编写命令时`C:\DocumentsandSettings\test.exe(我无法在此框中显示),用于在Ruby中执行命令,我无法这样做,我收到的错误是找不到文件或目录。我尝试用“//”和“\”替换“\”,但似乎没有任何效果。我也使用过系统、IO.popen和exec命令,但所有的努力都是徒劳的。exec命令还使程序退出,这是我不想发生的。提前致谢。 最佳答案 反引号环境就像双引号,所以反斜杠用于转义。此外,Ruby会将空格解

  9. ruby - 在 RUBY 上的 PADRINO 框架上使用 RSPEC 进行测试的教程 - 2

    我是Ruby新手,并被要求在我们的新项目中使用它。我们还被要求使用Padrino(Sinatra)作为后端/框架。我们被要求使用Rspec进行测试。我一直在寻找可以指导在Padrino上使用RspecforRuby的教程。我得到的主要是引用RoR。但是,我需要RubyonPadrino。请在任何入门/指南/引用/讨论等方面指导我。如有不妥之处请指正。可能是我没有针对我的问题搜索正确的词/短语组合。我正在使用Ruby1.9.3和Padrinov.0.10.6。注意:我还提到了SOquestion,但它没有帮助。 最佳答案 我没用过Pa

  10. 区块链入门教程(6)--WeBASE-Front节点前置服务安装 - 2

    文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定

随机推荐