SQL Server 2022 AlwaysOn新特性之包含可用性组介绍

这篇具有很好参考价值的文章主要介绍了SQL Server 2022 AlwaysOn新特性之包含可用性组介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

由于技术能力有限,文章仅能进行简要分析和说明,如有不对的地方,请指正,谢谢🙂。

SQL Server的容灾功能一直弱于Oracle和MySQL,无法自动同步元数据(用户、登录名、权限、SQL 代理作业、链接服务器),导致在对镜像库或者AlwaysOn执行切换之前,都要手动同步master、msdb里面的元数据。直到2022年11月16日发布2022版本,在AlwaysOn中增加了包含可用性组功能,解决了长久以来“无法自动同步元数据”的问题。

包含可用性组是 Always On 可用性组在SQL Server 2022版本发布的新特性,它支持:

  • 在可用性组级别以及实例级别管理元数据对象(用户、登录名、权限、SQL 代理作业等)。
  • 可用性组中的专用包含系统数据库,比如master和msdb。

SQL Server 2022 AlwaysOn新特性之包含可用性组介绍

1 如何创建包含可用性组?

包含可用性组是在普通故障转移群集(可以是工作组、也可以是域)搭建好的基础上,创建包含可用性组时,选择"Contained"或“包含”,其它操作与之前版本的一致性组无差别。

SQL Server 2022 AlwaysOn新特性之包含可用性组介绍

也可以使用命令行创建包含一致性组,在WITH中增加了CONTAINED选项

CREATE AVAILABILITY GROUP MRROBOTO   
   WITH (  
      AUTOMATED_BACKUP_PREFERENCE = SECONDARY,  
      FAILURE_CONDITION_LEVEL  =  3,   
      HEALTH_CHECK_TIMEOUT = 600000,
	  CLUSTER_TYPE = WSFC,
	  CONTAINED   --包含一致性组
       )  
  
   FOR   
      DATABASE  TEST  
   REPLICA ON   
      '2022-NODE01' WITH   
         (  
         ENDPOINT_URL = 'TCP://2022-NODE01:5022',  
         AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,  
         FAILOVER_MODE = AUTOMATIC,  
         BACKUP_PRIORITY = 30,  
         SECONDARY_ROLE (ALLOW_CONNECTIONS = NO,   
            READ_ONLY_ROUTING_URL = 'TCP://2022-NODE01:1433' ),
         PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE,   
            READ_ONLY_ROUTING_LIST = ('2022-NODE01') ),  
         SESSION_TIMEOUT = 10,
		 SEEDING_MODE = AUTOMATIC
         ),   
  
      '2022-NODE02' WITH   
         (  
         ENDPOINT_URL = 'TCP://2022-NODE02:5022',  
         AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,  
         FAILOVER_MODE = AUTOMATIC,  
         BACKUP_PRIORITY = 30,  
         SECONDARY_ROLE (ALLOW_CONNECTIONS = NO,   
            READ_ONLY_ROUTING_URL = 'TCP://2022-NODE02:1433' ),  
         PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE,   
            READ_ONLY_ROUTING_LIST = ('2022-NODE01') ),  
         SESSION_TIMEOUT = 10,
		 SEEDING_MODE = AUTOMATIC
         );
GO  
ALTER AVAILABILITY GROUP MRROBOTO
  ADD LISTENER 'MRROBOTO_LSNR' ( WITH IP ( ('192.168.1.128'),('255.255.255.0') ) , PORT = 1433 );   
GO

创建好包含一致性组后,会为该AG自动创建2个数据库:[AGNAME_master]、[AGNAME_msdb],还会创建侦听器,这看起来比普通的一致性组多了两个数据库:AGNAME_master和AGNAME_msdb。

SQL Server 2022 AlwaysOn新特性之包含可用性组介绍

2 如何使用包含可用性组?

要知道包含可用性组是在元数据的同步层面做了改进,就是我们前面所说的master和msdb两个层面做的改进,所以在使用包含可用性组进行登录名、作业此类的维护时,需要使用侦听器IP连接到包含可用性组,而不是使用主实例所在的服务器IP地址。如果使用主实例所在的服务器IP地址连接到可用性组创建登录名的话,只会保存在本地的数据库实例上,不会自动同步到包含可用性组中。

SQL Server 2022 AlwaysOn新特性之包含可用性组介绍SQL Server 2022 AlwaysOn新特性之包含可用性组介绍

3 元数据同步验证

3.1 用户、登录名和权限

1、使用包含可用性组侦听器连接到主节点,不管切换到AG01_master还是master,实际上都是使用AG01_master数据库

C:\Users\Administrator>sqlcmd -H 192.168.1.128 -U sa -Y 30
密码:
1> select @@servername;
2> go

------------------------------
2022-NODE01

(1 行受影响)
1> use AG01_master
2> go
已将数据库上下文更改为 "master"。
1> SELECT DB_ID() AS [Database ID],DB_NAME() AS [ Database Name]
2> go
Database ID  Database Name
----------- ------------------------------
          1 master

(1 行受影响)
1> use master
2> go
已将数据库上下文更改为 "master"。
1> SELECT DB_ID() AS [Database ID],DB_NAME() AS [ Database Name]
2> go
Database ID  Database Name
----------- ------------------------------
          1 master

(1 行受影响)

2、创建test数据库的登录名

1> CREATE LOGIN [test_admin] WITH PASSWORD=N'test.123', DEFAULT_DATABASE=[test], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
2> GO
1> USE [test]
2> GO
已将数据库上下文更改为 "test"。
1> CREATE USER [test_admin] FOR LOGIN [test_admin]
2> GO
1> USE [test]
2> GO
已将数据库上下文更改为 "test"。
1> ALTER ROLE [db_owner] ADD MEMBER [test_admin]
2> GO
1> select name,dbname,sid,createdate from sys.syslogins where loginname='test_admin'
2> go
name                           dbname                         sid                            createdate
------------------------------ ------------------------------ ------------------------------ -----------------------
test_admin                     test                           0x8CEFB4D480A8E54F97C86ADF9E6934FD 2022-10-18 14:40:02.913

3、连接到辅助节点,检查包含一致性组中的元数据是否已同步(此处建议使用SSMS工具查询,sqlcmd需要使用-Q参数提前写好语句)

  • 使用SSMS工具

SQL Server 2022 AlwaysOn新特性之包含可用性组介绍

  • 使用sqlcmd带-Q参数
C:\Users\Administrator>sqlcmd -S 192.168.1.128 -U sa -d AG01_master -Y 30 -K ReadOnly -Q "select @@servername;select name,dbname,sid,createdate from AG01_master.sys.syslogins where loginname='test_admin'"
密码:
------------------------------
2022-NODE02

(1 行受影响)
name                           dbname                         sid                            createdate
------------------------------ ------------------------------ ------------------------------ -----------------------
test_admin                     test                           0x8CEFB4D480A8E54F97C86ADF9E6934FD 2022-10-18 14:40:02.913

(1 行受影响)

也可以使用test_admin用户直接登录到辅助节点来验证元数据是否已同步到辅助节点。

C:\Users\Administrator>sqlcmd -S 192.168.1.128 -U test_admin -d test -Y 30 -K readonly
密码:
1> select @@servername
2> go

------------------------------
2022-NODE02

(1 行受影响)
1> select * from Foo
2> go
Bar
-----------
          1

(1 行受影响)
1> insert into Foo values(2)
2> go
消息 3906,级别 16,状态 2,服务器 2022-NODE02,第 1 行
无法更新数据库 "test",因为数据库是只读的。

元数据:用户、登录名、权限正常同步

3.2 链接服务器

1、通过ssms工具在包含可用性组的主节点中创建了一个链接服务器

SQL Server 2022 AlwaysOn新特性之包含可用性组介绍

2、查询辅助节点的链接服务器情况,从视图中看到该链接服务器已经同步,并且可用
C:\Users\Administrator>sqlcmd -S 192.168.1.128 -U sa -Y 30 -d AG01_master  -K ReadOnly -Q "select @@servername;select name,data_source from AG01_master.sys.servers where is_linked=1;SELECT Bar FROM [NODE02-FROM125].test.dbo.Foo"
密码:
------------------------------
2022-NODE02

(1 行受影响)
name                           data_source
------------------------------ ------------------------------
NODE02-FROM125                 192.168.1.126

(1 行受影响)
Bar
-----------
          1

(1 行受影响)

3、故障转移包含可用性组切换到辅助节点,使用SSMS工具连接到包含可用性组,确定数据是正常同步的。

C:\Users\Administrator>sqlcmd -S 192.168.1.126 -U sa -Y 30 -Q "ALTER AVAILABILITY GROUP [AG01] FAILOVER"
密码:输入密码

SQL Server 2022 AlwaysOn新特性之包含可用性组介绍

元数据:链接服务器正常同步

3.3 SQL代理作业

将两个节点的代理服务更改为自动启动模式,在主节点创建作业,验证是否自动同步作业到辅助节点

1、主节点创建作业,每间隔10秒钟往test数据库的msdb_test表插入当前服务器名和时间戳。

SQL Server 2022 AlwaysOn新特性之包含可用性组介绍

2、辅助节点检查作业同步情况:辅助节点自动同步作业,作业id一致,但其originating_server(初始服务器)为所在节点的主机名

SQL Server 2022 AlwaysOn新特性之包含可用性组介绍

3、测试主节点故障转移到辅助节点,验证作业能否正常执行,如果能够正常执行,msdb_test表的server列会改为故障转移后的节点主机名:此处由2022-NODE01自动更改为2022-NODE02

SQL Server 2022 AlwaysOn新特性之包含可用性组介绍

4、将AlwaysOn主节点切换后,作业仅在主节点运行,不会在辅助节点执行。

SQL Server 2022 AlwaysOn新特性之包含可用性组介绍

元数据:SQL代理作业正常同步,切换后作业仅在主节点执行

4 包含可用性组总结

1、对于包含可用性组来说,它的元数据全部都存放在​可用性组名称_master​​和​可用性组名称_msdb​​这两个数据库中。

2、对于数据库实例来说,包含可用性组的​可用性组名称_master​​和​可用性组名称_msdb​​这两个数据库就是普通的用户数据库,可读可写,但不建议存放用户的生产数据;

3、要连接到包含可用性组,必须使用​包含可用性组的侦听器​​连接,其他连接参数与旧版本一样。

这种设计就解决了SQL Server一直以来被诟病的元数据对象同步问题。使得用户、登录名、链接服务器和作业都能够在包含一致性组中的主节点和辅助节点同步。​文章来源地址https://www.toymoban.com/news/detail-427125.html

到了这里,关于SQL Server 2022 AlwaysOn新特性之包含可用性组介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 高可用性架构:云计算和高可用性

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 随着互联网业务的快速发展,云计算已经成为了企业构建和部署应用的基本手段。云计算带来了便利、灵活性和可伸缩性,极大地推动了数字化时代的到来。然而,如何保障云上应用的高可用性,让云计算更好地为企业服务

    2024年02月15日
    浏览(50)
  • 服务可用性设计

    一、统计指标 根据普罗米修斯Prometheus中的up指标,按照分钟记录服务不可用的记录数 up指标:up{application=“agr-ecos.admin”,instance=“30.79.8.41:43950”,job=“agr-ecos”} 当实例下线时为0,实例上线时为1 1、判断服务不可用逻辑 服务在某个分钟里,所有实例的up指标全为0,如果满足条

    2024年02月07日
    浏览(38)
  • 什么是可用性测试?

    可用性测试(Usability Testing)是一种软件测试方法,旨在评估一个产品(如软件、网站、移动应用等)的易用性和用户体验。该测试方法通过让真实的用户执行特定任务,观察和记录他们的行为、反应和满意度,来评估产品的可用性和用户友好程度。 可用性测试的主要目标是

    2024年02月11日
    浏览(48)
  • Elasticsearch的高可用性与容错

    Elasticsearch是一个分布式、实时的搜索和分析引擎,它可以处理大量数据并提供快速、准确的搜索结果。在现实应用中,Elasticsearch的高可用性和容错性是非常重要的,因为它可以确保系统的稳定运行和数据的安全性。 在本文中,我们将深入探讨Elasticsearch的高可用性与容错,包

    2024年02月21日
    浏览(41)
  • 软件的可用性改善:善用帮助信息

    当我们吭哧吭哧的开发功能性模块的时候,也需要回头思考一下软件的可用性。今天的主题就是使用帮助信息来改善软件的可用性,让软件不仅”能用”,也更”好用”。 帮助信息,也叫工具提示(Tooltip)。当用户的鼠标悬停在一段文字或者控件上时,会自动显示相关的帮助信

    2024年02月10日
    浏览(43)
  • selenium代理ip可用性测试

    测试代理ip是否工作正常,将正常的代理ip提取出来 测试结果

    2024年01月20日
    浏览(50)
  • 14.RocketMQ之高可用性机制

    RocketMQ分布式集群是通过Master和Slave的配合达到高可用性的。 Master和Slave的区别:在Broker的配置文件中,参数 brokerId的值为0表明这个Broker是Master,大于0表明这个Broker是 Slave,同时brokerRole参数也会说明这个Broker是Master还是Slave。 Master角色的Broker支持读和写,Slave角色的Broker仅支

    2024年02月11日
    浏览(46)
  • 聊一聊医疗器械的可用性

    很抱歉由于各种因素这个号拖更了好久了,最近呢也有几个公众号做的挺好的,比如包总的 MD SRE 、丁总的 医械安全 、 饽饽糕的叨逼叨 ,而且更新也都比较频繁,大家可以 关注 一下; 好久没登录,当我上来看到已经有 5000多 的关注者,说实话,有 感动 ,有 自豪 ,也有

    2024年02月07日
    浏览(47)
  • 让Zookeeper更高效:高可用性扩展策略

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 随着分布式系统的广泛应用,Zookeeper作为一致性系统的核心组件,在分布式系统中发挥着越来越重要的作用。Zookeeper作为一个分布式协调服务,负责协调分布式系统中的各个组件,保证系统的一致性和可用性。 1.2. 文章目的

    2024年02月14日
    浏览(35)
  • 兼容性测试如何提高网站的可用性?

    兼容性测试如何提高网站的可用性? 在现代社会,网站已经成为了人们获取信息、进行交流的主要渠道之一。但是,在网站的设计和开发中,往往会存在兼容性问题,导致不同浏览器或设备的用户无法顺利地访问和使用网站,降低了网站的可用性。因此,进行兼容性测试是提

    2024年02月09日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包