AlwaysOn 可用性组功能是一个提供替代数据库镜像的企业级方案的高可用性和灾难恢复解决方案。SQL Server 2012 中引入了 AlwaysOn 可用性组功能,此功能可最大程度地提高一组用户数据库对企业的可用性。 “可用性组”针对一组离散的用户数据库(称为“可用性数据库”,它们共同实现故障转移)支持故障转移环境。
一个可用性组支持一组读写主数据库以及一至四组对应的辅助数据库。可使辅助数据库能进行只读访问和/或某些备份操作。
可用性组在可用性副本级别进行故障转移。故障转移不是由诸如因数据文件丢失而使数据库成为可疑数据库、删除数据库或事务日志损坏等此类数据库问题导致的。
优点:
AlwaysOn 可用性组提供了一组丰富的选项来提高数据库的可用性并改进资源使用情况。 主要组件如下:
“可用性副本”是可用性组的实例化,此可用性组由特定的 SQL Server 实例承载,该实例维护属于此可用性组的每个可用性数据库的本地副本。 每个可用性组支持一个主副本和最多四个辅助副本。
说明:每个可用性副本都必须驻留在单个 Windows Server 故障转移群集 (WSFC) 群集的不同节点中。
自动故障转移、计划的手动故障转移(通常简称为“手动故障转移”)和强制的手动故障转移(通常简称为“强制故障转移”)。
提示:通过使用活动辅助功能,可更好地利用辅助硬件资源,从而提高 IT 效率并降低成本。 此外,通过将读意向应用程序和备份作业转移到辅助副本,有助于提高针对主副本的性能。
“可用性组侦听器”是一个服务器名称,客户端可连接到此服务器以访问 AlwaysOn 可用性组的主副本或辅助副本中的数据库。可用性组侦听器将传入连接定向到主副本或只读辅助副本。侦听器在可用性组故障转移后提供快速应用程序故障转移。
一个容器,用于一组共同实现故障转移的数据库(称为“可用性数据库”,它们共同实现故障转移)。
属于可用性组的数据库。 对于每个可用性数据库,可用性组将保留一个读写副本(“主数据库”)和一个到四个只读副本(“辅助数据库”)。
可用性数据库的读写副本。
可用性数据库的只读副本。
可用性组的实例化,该可用性组由特定的 SQL Server 实例承载,并维护属于该可用性组的每个可用性数据库的本地副本。存在两种类型的可用性副本:一个“主副本”和一至四个“辅助副本”。
可用性副本使主数据库可用于来自客户端的读写连接,还用于将每个主数据库的事务日志记录发送到每个辅助副本。
维护各可用性数据库的辅助副本的可用性副本,充当可用性组的潜在故障转移目标。 或者,辅助副本可以支持对辅助数据库进行只读访问,并支持对辅助数据库创建备份。
一个服务器名称,客户端可连接到此服务器以访问 AlwaysOn 可用性组的主副本或辅助副本中的数据库。可用性组侦听器将传入连接定向到主副本或只读辅助副本。
每个可用性组定义一个包含两个或更多故障转移伙伴(称为可用性副本)的集合。“可用性副本”是可用性组的组件。每个可用性副本都承载可用性组中的可用性数据库的一个副本。对于某个给定可用性组,可用性副本必须位于某一 WSFC 群集的不同节点上的单独 SQL Server 实例上。必须为 AlwaysOn 启用这些服务器实例中的每个实例。
对于每个可用性组,一个给定实例只能承载一个可用性副本。但是,每个实例可用于多个可用性组。给定的实例可以是独立实例或 SQL Server 故障转移群集实例 (FCI)。如果您要求服务器级别的冗余,则使用故障转移群集实例。
每个可用性副本都被分配一个初始角色(“主角色”或“辅助角色”),角色由该副本的可用性数据库继承。给定副本的角色确定它承载的是读写数据库还是只读数据库。其中一个副本(称为“主副本”)被分配主角色,它承载读写数据库(称为“主数据库”)。至少一个其他副本(称为“辅助副本”)被分配辅助角色。辅助副本承载只读数据库(称为辅助数据库)。
可用性模式是每个可用性副本的一个属性。可用性模式确定主副本是否在给定的辅助副本将事务日志记录写入磁盘(强制写入日志)之前,等待提交数据库上的事务。AlwaysOn 可用性组支持两种可用性模式:“异步提交模式”和“同步提交模式”。
使用此可用性模式的可用性副本称为“异步提交副本”。在异步提交模式下,主副本无需等待确认异步提交辅助副本已强制写入日志,便可提交事务。异步提交模式可最大限度地减少辅助数据库上的事务滞后时间,但允许它们滞后于主数据库,因此可能会导致某些数据丢失。
使用此可用性模式的可用性副本称为“同步提交副本”。在同步提交模式下,在提交事务之前,同步提交主副本要等待同步提交辅助副本确认它已完成强制写入日志。同步提交模式可确保在给定的辅助数据库与主数据库同步时,充分保护已提交的事务。这种保护的代价是延长事务滞后时间。
部署 AlwaysOn 可用性组需要一个 Windows Server 故障转移群集 (WSFC) 群集。若要启用 AlwaysOn 可用性组,一个 SQL Server 实例必须驻留在某一 WSFC 节点上,并且该 WSFC 群集和节点必须处于联机状态。 此外,给定可用性组的每个可用性副本必须位于相同 WSFC 群集的不同节点上。
AlwaysOn 可用性组依赖 Windows 故障转移群集 (WSFC) 群集来监视和管理属于某一指定可用性组的可用性副本的当前角色,并且确定故障转移事件是如何影响可用性副本的。为您创建的每个可用性组创建一个 WSFC 资源组。 WSFC 群集将监视此资源组,以便评估主副本的运行状况。
针对 AlwaysOn 可用性组的仲裁基于 WSFC 群集中的所有节点,而与某一给定群集节点是否承载任何可用性副本无关。与数据库镜像相反,在 AlwaysOn 可用性组中没有见证服务器角色。
WSFC 群集的总体运行状况是由群集中节点仲裁的投票决定。如果 WSFC 群集由于计划外灾难或由于持续的硬件或通信故障而导致脱机,则需要管理员手动干预。Windows Server 或 WSFC 群集管理员将需要“强制仲裁”,并在非容错配置中将仍有效的群集节点变为联机状态。
在主副本和辅助副本之间的对话上下文中,通过称为“故障转移”的过程,主角色和辅助角色是潜在可互换的。 在故障转移期间,目标辅助副本转换为主角色,成为新的主副本。新的主副本使其数据库作为主数据库联机,而客户端应用程序可以连接到这些数据库。如果以前的主副本可用,则它将转换为辅助角色,成为辅助副本。以前的 master 数据库成为辅助数据库,且数据同步恢复。
有三种故障转移形式:自动、手动和强制(可能造成数据丢失)。给定辅助副本支持的故障转移形式取决于其可用性模式,对于同步提交模式来说,取决于主副本和目标辅助副本的故障转移模式,如下所示。
“计划的手动故障转移”和“自动故障转移”(如果目标辅助副本当前与 avt1 同步)。对这些故障转移形式的支持取决于故障转移伙伴上的“故障转移模式属性”的设置。如果在主副本或辅助副本上将故障转移模式设置为“手动”,则对于该辅助副本仅支持手动故障转移。如果同时在主副本和辅助副本上将故障转移模式设置为“自动”,则该辅助副本同时支持自动故障转移和手动故障转移。
手动故障转移在数据库管理员发出故障转移命令之后发生,它将导致已同步的辅助副本转换为主角色(同时确保数据受到保护),而主副本转换为辅助角色。手动故障转移要求主副本和目标辅助副本都在同步提交模式下运行,并且辅助副本必须已同步。
自动故障转移是为了响应导致已同步的辅助副本转换为主角色(同时确保数据受到保护)的故障而执行的。如果以前的主副本变为可用,则它将转换为辅助角色。自动故障转移要求主副本和目标辅助副本都在同步提交模式下运行,并且故障转移模式设置为“自动”。此外,辅助副本必须已同步并具有 WSFC 仲裁,且满足由可用性组的“灵活的故障转移策略”指定的条件。
AlwaysOn 可用性组可与以下 SQL Server 功能和组件一起使用:
参考官方:https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2012/ms189852(v%3dsql.110)