首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AlwaysOn可用组和数据库计数限制

AlwaysOn可用组和数据库计数限制
EN

Database Administration用户
提问于 2021-12-07 22:49:42
回答 2查看 400关注 0票数 0

更新:

基本答案:我要求的东西不是AOAG设计的一部分。

在我看来,这不是一个好问题。除非这冒犯了别人,否则我会把它留在这里,以防有人和我有同样的想法。

请原谅,因为我不是DBA。

我正在咨询一个项目,很可能需要700到900之间的数据库。该软件不能使用多个SQL实例,必须以相同的SQL实例名称承载所有DB。

客户端的DBA解释了为什么在AlwaysOn可用性组上托管数百个数据库可能是不合理的,而且微软的官方文档虽然没有规定上限,但它确实说明了MS只对100个数据库进行测试。

AlwaysOn故障转移群集不是一个选项,因为数据是共享的,而不是复制的。

我的理解是,AOAG作为SQL实例是可寻址的,并且我无法在多个AOAG之间共享实例名称。

有人向我提到,可能确实可以这样做--添加一个额外的AG,并在相同的SQL实例名称下添加那些附加的do,但是我的搜索无法找到这个选项的描述。

我要么用错误的术语搜索这方面的信息,要么假设AG与SQL实例为1:1,甚至可能为1:m,但每个实例不包含多个AGs。

更新

术语I(认为我)理解:

  • 主机:运行一个或多个Server实例的服务器。
  • 实例:运行在主机上的Server进程的副本,可通过实例名称访问。
  • 实例名称:由hostname\instance组成的实例的逻辑地址
  • 数据库-实例中的数据容器。

没有AOAG的关系:

代码语言:javascript
复制
Host --1:n--> Instance --1:n--> database

我迷路的

(如果我错了,请纠正我)

  • AG --一组SQL Server实例以及用于管理在多个主机上复制的主机数据的逻辑寻址的附加服务,这些实例可以在单个逻辑实例名称下寻址。

人际关系?与AOAG:

代码语言:javascript
复制
AO Cluster (logical name AO\All)
  +-- AG
        +-- Host A
        |     +-- Instance One
        |           +-- db1
        |           +-- db2
        +-- Host B
              +-- Instance One (replica of A\Instance One)
                    +-- db1
                    +-- db2

Host A/Instance OneHost B/Instance One上的dbs可通过AlwaysOn服务的AO\All访问。

问题:

在单个DB实例中的AlwaysOn span数据库中是否可能有多个可用组?如果没有,您有建议如何有效地托管这么多的DBs并且总是开着吗?(除了像这里那样的“它应该工作”之外)

换句话说,这是一种可能的架构吗?它是否允许我服务/主持更多的星展(通过加倍的硬件?)

代码语言:javascript
复制
AO Cluster (logical name AO\All)
  +-- AG-1 (as specified above)
  |     +-- Host A
  |     |     +-- Instance One
  |     |           +-- db1
  |     |           +-- db2
  |     +-- Host B
  |           +-- Instance One (replica of A\Instance One)
  |                 +-- db1
  |                 +-- db2
  +-- AG-2 (as specified above)
        +-- Host C
        |     +-- Instance Two
        |           +-- db3
        |           +-- db4
        +-- Host D
              +-- Instance Two (replica of C\Instance Two)
                    +-- db3
                    +-- db4

使用db3db4可以使用与db1db2相同的逻辑实例名称(AO\All)访问。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2021-12-07 23:21:54

客户端的DBA解释了为什么在AlwaysOn可用性组上托管数百个DBA可能是不合理的...

这是正确的,虽然如果你有它的硬件,那么它就可以工作,但是在大多数情况下,在所有同时活动的数据库中,拥有数百到数千个数据库将是一场灾难。

...官方的微软文档,虽然它没有说明上限,但它确实指出,MS只对100个数据库进行测试。

这是对特定硬件的特定测试,并不表示一般性能水平、最大值或最小值。这只是一个数据点,测试中具有给定负载的100个数据库将在测试中的硬件上很好地工作。这意味着您的硬件将是不同的,cpus的数量,内存等,因此甚至可能无法运行100。没有最大数量(除了SQL Server的数据库数量之外,这是一个硬上限),唯一知道的方法是测试您的特定设置(包括基础结构和工作负载),以了解上限在哪里。这也可能随着时间的推移而改变,因为用户、工作负载等被添加到系统中,而不是静态的。

我的理解是,AOAG作为SQL实例是可寻址的,并且我无法在多个AOAG之间共享实例名称。

我不确定我是否完全理解这里的语句,但是一个实例( Server运行的可执行文件)可以有一个或多个AGs。这些AGs可以跨越一个或多个实例。

有人向我提到,可能确实可以这样做--添加一个额外的AG,并在相同的SQL实例名称下添加那些附加的do,但是我的搜索无法找到这个选项的描述。

有可能有多个AG,但是一个数据库只能存在于一个AG中。因此,实例承载AGs,AG是数据库的逻辑容器。当逻辑容器( AG)“移动”到可能承载AG的任何其他实例时,该逻辑容器(AG)将移动它(数据库)中的所有资源。AG逻辑容器中的所有数据库都必须在一起,不能分割,因为您不能选择和选择AG中的哪个数据库到每个副本,仅此而已。

我要么用错误的术语搜索这方面的信息,要么假设AG与SQL实例为1:1,甚至可能为1:m,但每个实例不包含多个AGs。

这取决于您如何看待它,但是一个实例可以承载1:m。AG跨越1:8实例。

在单个DB实例中的AlwaysOn span数据库中是否可能有多个可用组?

实例不是数据库,实例承载数据库。AGs是数据库资源的逻辑容器,所有这些资源都“一起”,不管它们被要求去哪里(不管SQL Server允许托管它们,数据库在物理上是可用的)。因此,AG中的单个数据库将在AG跨越的所有其他实例上拥有其自身的精确副本。

但是,您不能跨多个a获取多个数据库,并使它们看起来都像一个实例。它们都需要托管在单个实例上才能工作(这是可能的),然而,您将回到原来的问题“这是太多的数据库,硬件可以处理”。

票数 5
EN

Database Administration用户

发布于 2021-12-08 00:30:07

如果没有,您有建议如何有效地托管这么多的DBs并且总是开着吗?

从技术上讲,总是有可用性组(AGs)和始终处于故障转移群集实例中 (FCIs)。

一个FCI可以很好地处理大量的数据库。您需要共享磁盘、SMB3共享或存储空间直接复制磁盘的共享存储。

换句话说,这是一种可能的架构吗?

是。您可以跨多个服务器进行伸缩,并且每个AG只在节点的一个子集上进行,例如有3个AGs和6个集群节点:

代码语言:javascript
复制
    N1  N2  N3 N4 N5 N6
AG1  X   X
AG2          X  X
AG3                X  X

每个AG都有1/3的数据库。或有3个节点

代码语言:javascript
复制
    N1  N2  N3 
AG1  X   X
AG2      X   X
AG3  X       X  

其中,每个节点托管一个AG的主副本和一个AG的二级副本。

但是,这是一种非常复杂和昂贵的解决方案,它可以更好地扩展到大量数据库,如FCI、VM复制、存储复制,或者简单地与您的虚拟机管理程序提供的HA一起使用。

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/303655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档