点击蓝色字关注“SQL数据库运维”,回复“SQL”获取2TB学习资源!
适用于:SQL Server
可用性数据库
若要将数据库添加到可用性组,该数据库必须是联机的读写数据库,它位于承载主副本的服务器实例上。当您添加一个数据库时,它将作为主数据库加入可用性组,同时保持可用于客户端。除非新的主数据库的备份还原到承载辅助副本(使用 RESTORE WITH NORECOVERY)的服务器实例,否则不存在对应的辅助数据库。新的辅助数据库处于 RESTORING 状态,直至其加入可用性组。
注意:
可用性数据库在 Transact-SQL、PowerShell 和 SQL Server 管理对象 (SMO) 名称中有时候被称作“数据库副本”。例如,“数据库副本”一词用于返回与可用性数据库有关的信息的 AlwaysOn 动态管理视图的名称中:sys.dm_hadr_database_replica_states
和 sys.dm_hadr_database_replica_cluster_states
。但在 SQL Server 联机丛书中,“副本”一词通常表示可用性副本。例如,“主副本”和“辅助副本”始终表示可用性副本。
可用性副本
每个可用性组定义一个包含两个或更多故障转移伙伴(称为可用性副本)的集合。“可用性副本”是可用性组的组件。每个可用性副本都承载可用性组中的可用性数据库的一个副本。对于某个给定可用性组,可用性副本必须位于某一 WSFC 群集的不同节点上的单独 SQL Server 实例上。必须为 AlwaysOn 启用这些服务器实例中的每个实例。
SQL Server 2019 (15.x) 将同步副本的最大数目从 SQL Server 2017 (14.x) 中的 3 增加到了 5。可以配置此组的 5 个副本在该组中进行自动故障转移。有 1 个主要副本以及 4 个同步的次要副本。
对于每个可用性组,一个给定实例只能承载一个可用性副本。但是,每个实例可用于多个可用性组。给定的实例可以是独立实例或 SQL Server 故障转移群集实例 (FCI)。如果您要求服务器级别的冗余,则使用故障转移群集实例。
注意:
如果可用性副本的角色是不确定的(如在故障转移过程中),则其数据库将临时处于 NOT SYNCHRONIZING 状态。其角色设置为 RESOLVING,直至可用性副本的角色已解析。如果可用性副本解析为主角色,则其数据库将成为主数据库。如果可用性副本解析为辅助角色,则其数据库将成为辅助数据库。
可用性模式
可用性模式是每个可用性副本的一个属性。可用性模式确定主要副本是否在给定的次要副本将事务日志记录写入磁盘(强制写入日志)之前,等待提交数据库上的事务。Always On 可用性组支持两种可用性模式:异步提交模式和同步提交模式。
异步提交模式
使用此可用性模式的可用性副本称为“异步提交副本”。在异步提交模式下,主要副本无需等待确认异步提交次要副本硬化事务日志,便可提交事务。异步提交模式可最大限度地减少辅助数据库上的事务滞后时间,但允许它们滞后于主数据库,因此可能会导致某些数据丢失。
同步提交模式
使用此可用性模式的可用性副本称为“同步提交副本”。在同步提交模式下,在提交事务之前,同步提交主副本要等待同步提交辅助副本确认它已完成硬化日志。同步提交模式可确保在给定的辅助数据库与主数据库同步时,充分保护已提交的事务。这种保护的代价是延长事务滞后时间。SQL Server 2017 选择性地引入了“要求同步的次要副本”功能,以便在需要时进一步提高安全性,但代价是延迟时间延长。可以启用 REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT 功能,从而要求将指定数量的同步副本提交给事务后,才允许主要副本提交。
点击关注“SQL数据库运维”,后台或浏览至公众号文章底部点击“发消息”回复关键字:进群,带你进入高手如云的技术交流群。后台回复关键字:SQL,获取学习资料。
动动小手点击加关注呦☟☟☟