草庐IT

配置SQL Server AlwaysOn

xiaosheng1989 2023-03-28 原文

数据处理是企业绝大多数应用的核心,在生产环境中,数据库总是扮演着非常重要的角色。在微软的SQL Server中主要通过四个传统的高可用性和灾难恢复技术:故障转移群集(Cluster)、日志传送(Log Shipping)、复制(Replication)、和数据库镜像(Database Mirroring)来保障业务的连续性。在SQL Server 2012中微软新增一种高可用性技术来保证生产环境下的业务连续性—SQL Server Always On。

AlwaysOn可用性组功能是一个提供替代数据库镜像的企业级方案的高可用性和灾难恢复解决方案。SQL Server 2012 中引入了AlwaysOn 可用性组功能,此功能可最大程度地提高一组用户数据库对企业的可用性。“可用性组”针对一组离散的用户数据库(称为“可用性数据库”,它们共同实现故障转移)支持故障转移环境。一个可用性组支持一组读写主数据库以及一至四组对应的辅助数据库。(可选)可使辅助数据库能进行只读访问和/或某些备份操作。

AlwaysOn利用了Windows故障转移群集的健康监测和自动故障转移的特性,因此它必须建立在Windows故障转移群集之上。但是和SQLServer群集不同的是,可用性组里的数据库并不是一定要求存放在共享存储(SharedDisk)上的,它们也可以存储在本地磁盘上。另外,可用性组是以用户数据库的集合为单位进行健康检测和故障转移的,而不像SQLServer群集那样是以整个实例为单位。

AlwaysOn 可用性组提供了一组丰富的选项来提高数据库的可用性并改进资源使用情况。

1. 支持最多五个可用性副本。 “可用性副本”是可用性组的实例化,此可用性组由特定的 SQL Server 实例承载,该实例维护属于此可用性组的每个可用性数据库的本地副本。每个可用性组支持一个主副本和最多四个辅助副本。

2. 支持替代可用性模式:

1) 异步提交模式。此可用性模式是一种灾难恢复解决方案,适合于可用性副本的分布距离较远的情况。

2) 同步提交模式。此可用性模式相对于性能而言更强调高可用性和数据保护,为此付出的代价是事务延迟时间增加。一个给定的可用性组可支持最多三个同步提交可用性副本(包括当前主副本)。

3. 支持几种形式的可用性组故障转移:自动故障转移、计划的手动故障转移(通常简称为“手动故障转移”)和强制的手动故障转移(通常简称为“强制故障转移”)。

4. 支持每个可用性组的可用性组侦听器。“可用性组侦听器”是一个服务器名称,客户端可连接到此服务器以访问 AlwaysOn 可用性组的主副本或辅助副本中的数据库。 可用性组侦听器将传入连接定向到主副本或只读辅助副本。侦听器在可用性组故障转移后提供快速应用程序故障转移。

5. 支持用于避免页损坏的自动页修复。

6. 支持灵活的故障转移策略以便更好地控制可用性组故障转移。

7. 支持加密和压缩,这提供了安全且高性能的传输方式。

8. 提供了一组集成的工具来简化部署和管理可用性组,这些工具包括:

1) 用于创建和管理可用性组的 Transact-SQL DDL 语句。

2) SQL Server Management Studio 工具:

a) 新建可用性组向导 创建和配置可用性组;

b) 将数据库添加到可用性组向导 向现有可用性组添加一个或多个主数据库。在某些环境中,此向导还可以自动准备辅助数据库并且为每个数据库启动数据同步;

c) 将副本添加到可用性组向导 向现有可用性组添加一个或多个辅助副本。在某些环境中,此向导还可以自动准备辅助数据库并且为每个数据库启动数据同步;

d) 故障转移可用性组向导 启动对可用性组的手动故障转移。根据您指定为故障转移目标的辅助副本的配置和状态,该向导可以指定计划的手动故障转移或强制手动故障转移。

3) AlwaysOn 面板 监视 AlwaysOn 可用性组、可用性副本和可用性数据库,并且评估 AlwaysOn 策略的结果。

9. “对象资源管理器详细信息”窗格显示有关现有可用性组的基本信息。

10.PowerShell cmdlet。

下演示如何配置SQL Server 2012 Always On

1. 登陆SH-SQL-01服务器,插入安装介质,双击setup.exe文件。安装模式选择基于全新SQL Server独立安装。

 

 

2. SQL Server组件安装页面,我选择全部安装,生产环境下不建议此操作

3. 服务器配置页面,点击排序规则,选择“SQL_Latin1_General_CP1_CI_AS”

 

 

 4. 关于SQL Server的安装,请参见之前写的《安装System Center 2012 R2 数据库》

 http://ericxuting.blog.51cto.com/8995534/1440305

5. 等待SQL Server安装完成

6. 为了方便测试,创建两个Database,DB01以及DB02

 

 

 7. 登陆SH-SQL-02服务器重复上述,等待SQL Serve安装完成

8. 在SH-SQL-01/02服务器中安装Windows Server Failover Cluster(WSFC)功能

 

 

 9. 新建Windows Server Failover Cluster(WSFC),命名为SH-SQL-CLU。但是此WSFC不需要配置共享磁盘。

 

 

 10.点击开始按钮,在开始屏幕中点击SQL Server配置管理器

 

 

 11.在右侧的面板中,右击SQL Server(MSSQLSERVER),然后选择属性

 

 

 12.在SQL Server(MSSQLSERVER)属性对话框中的AlwaysOn高可用性标签中,选中启用AlwaysOn可用性组(E)选项,然后点击确定

  

13.在警告的消息框中点击确定

  

14.在SQL Server配置管理器中右击SQL Server(MSSQLSERVER),然后选择重新启动

15.登陆SH-SQL-02服务器重复上述操作 

 

 16.返回SH-SQL-01服务器,使用SQL Server Management Studio登陆SQL

17.在SQL Server Management Studio中的对象资源管理器 面板中,展开AlwaysOn高可用性节点

 

 18.右键可用性组,选择新建可用性向导

 

19.新建可用性组向导页面,阅读相关信息后点击下一步 

 

 20.指定可用性组名称页面,键入可用性组名称“SH-SQL-AG” 

21.选择数据库页面,选择可用性组的用户数据库 

 

 22.要想配置AlwaysOn数据库,需要注意以下事项:是用户数据库、是读/写数据库、是多重用户数据库、不使用 AUTO_CLOSE、使用完整备份模式、拥有完整数据库备份、位于 SQL Server 实例中,在该实例中您将创建可用性组并且可以对其进行访问、不属于另外一个可用性组、没有配置过数据库镜像。

根据提示,此时需要备份数据库

23.选择DB01、DB02,点击下一步

24.指定副本页面,点击添加副本

 

 

 25.连接到服务器页面,选择连接到SH-SQL-02服务器

 

 26.根据需要指定SQL的主副本、自动故障转移数量、同步提交数量以及是否为可读辅助副本

 

 27.选择初始数据同步页面,选择仅连接

 

 

 28.验证页面,确保所有验证通过。此处的警告为检测是否已配置AlwaysOn侦听器。点击下一步

 

 29.摘要页面,确认无误后点击完成

 

 30.等待配置完成。

 

 

 31.在对象资源管理器面板中展开可用性组,展开SH-SQL-AG可用性组,然后查看可用性组的配置信息。

 

 

 32.右键可用性侦听器,选择添加侦听器

 

33.新的可用性组侦听器页面,键入侦听器DNS名称、端口以及网络

 

 

 34.等待可用性组侦听器创建完成

 

 35.登陆SH-SQL-02服务器,打开SQL管理控制台

36.右键DB01,选择还原数据库

 

 37.还原数据库页面,指定备份文件路径

 

 38.此时系统会提示正在还原数据库

 

 

 39.在可用性数据库页面,右键database选择连接到可用性组

 

 

 40.新建数据库引擎连接

 

 41.连接到服务器页面,键入SH-SQL-AG1

 

 

 42.展开数据库,查看数据库同步状态

 

 

 43.右击SH-SQL-AG,点击显示面板,查看AlwaysOn状态

 

 

 这里我选择的使用手动故障转移,在生产环境下建议配置为自动鼓掌转移

44.右键SH-SQL-AG,选择故障转移,将启动SQL故障转移向导

 

 

 

 

 


-----------------------------------
©著作权归作者所有:来自51CTO博客作者365vCloud的原创作品,请联系作者获取转载授权,否则将追究法律责任
配置SQL Server AlwaysOn
https://blog.51cto.com/365vCloud/1619897

有关配置SQL Server AlwaysOn的更多相关文章

  1. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  2. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

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

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

  4. 神州数码无线产品(AC+AP)配置 - 2

    注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配

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

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

  6. Ruby 默认将 IRB 配置为 Pretty_Inspect - 2

    我是ruby​​的新手,正在配置IRB。我喜欢pretty-print(需要'pp'),但总是输入pp来漂亮地打印它似乎很麻烦。我想做的是默认情况下让它漂亮地打印出来,所以如果我有一个var,比如说,'myvar',然后键入myvar,它会自动调用pretty_inspect而不是常规检查。我从哪里开始?理想情况下,我将能够向我的.irbrc文件添加一个自动调用的方法。有什么想法吗?谢谢! 最佳答案 irb中默认pretty-print对象正是hirb被迫去做。Theseposts解释hirb如何将几乎所有内容转换为ascii表。虽

  7. ruby - 是否可以将 IRB 提示配置为动态更改? - 2

    我想在IRB中浏览文件系统并让提示更改以反射(reflect)当前工作目录,但我不知道如何在每个命令后进行提示更新。最终,我想在日常工作中更多地使用IRB,让bash溜走。我在我的.irbrc中试过这个:require'fileutils'includeFileUtilsIRB.conf[:PROMPT][:CUSTOM]={:PROMPT_N=>"\e[1m:\e[m",:PROMPT_I=>"\e[1m#{pwd}>\e[m",:PROMPT_S=>"FOO",:PROMPT_C=>"\e[1m#{pwd}>\e[m",:RETURN=>""}IRB.conf[:PROMPT_MO

  8. ruby - 如何配置 Ruby Mechanize 代理以通过 Charles Web 代理工作? - 2

    我正在使用Ruby/Mechanize编写一个“自动填写表格”应用程序。它几乎可以工作。我可以使用精彩CharlesWeb代理以查看服务器和我的Firefox浏览器之间的交换。现在我想使用Charles查看服务器和我的应用程序之间的交换。Charles在端口8888上代理。假设服务器位于https://my.host.com。.一件不起作用的事情是:@agent||=Mechanize.newdo|agent|agent.set_proxy("my.host.com",8888)end这会导致Net::HTTP::Persistent::Error:...lib/net/http/pe

  9. ruby-on-rails - 如果特定语言环境中缺少翻译,如何配置 i18n 以使用 en 语言环境? - 2

    如果特定语言环境中缺少翻译,如何配置i18n以使用en语言环境翻译?当前已插入翻译缺失消息。我正在使用RoR3.1。 最佳答案 找到相似的question这里是答案:#application.rb#railswillfallbacktoconfig.i18n.default_localetranslationconfig.i18n.fallbacks=true#railswillfallbacktoen,nomatterwhatissetasconfig.i18n.default_localeconfig.i18n.fallback

  10. ruby-on-rails - 在 Rails 中存储(结构化)配置数据的位置 - 2

    对于我正在编写的Rails3应用程序,我正在考虑从本地文件系统上的XML、YAML或JSON文件中读取一些配置数据。重点是:我应该把这些文件放在哪里?Rails应用程序中是否有用于存储此类内容的默认位置?附带说明一下,我的应用程序部署在Heroku上。 最佳答案 我经常做的是:如果文件是通用配置文件:我在目录/config中创建一个YAML文件,每个环境有一个上层key如果我为每个环境(大项目)创建一个文件:我为每个环境创建一个YAML并将它们存储在/config/environments/然后我在加载YAML的地方创建了一个初始化

随机推荐