数据库之高可用性组

高可用性组:是一组SQL Server实例,由一个或多个主数据库和多个辅助数据库构成。

高可用性组之间数据是同步的,有两种方式同步数据:同步提交模式和异步提交模式。

可用性数据库:属于可用性组的数据库。 对于每个可用性数据库,可用性组将保留一个读写副本("主数据库" )和一个到八个只读副本("辅助数据库" )。

主数据库:可用性数据库的读写副本。

辅助数据库:可用性数据库的只读副本。

可用性副本

可用性组的实例化,该可用性组由特定的 SQL Server 实例承载,并维护属于该可用性组的每个可用性数据库的本地副本。 存在两种类型的可用性副本:一个 主副本 和一至八个 辅助副本。

主要副本

使主数据库可用于来自客户端的读写连接并用于将每个主数据库的事务日志记录发送到每个辅助副本的可用性副本。

次要副本

维护各可用性数据库的辅助副本的可用性副本,充当可用性组的潜在故障转移目标。 或者,辅助副本可以支持对辅助数据库进行只读访问,并支持对辅助数据库创建备份。

可用性组侦听器

一个服务器名称,客户端可连接到此服务器以访问 AlwaysOn 可用性组的主要副本或次要副本中的数据库。 可用性组侦听器将传入连接定向到主副本或只读辅助副本。

高可用性组同步方式

同步提交模式

当向主数据库写入数据时,主数据库会将事务日志记录发送到每个辅助数据库,并且主数据库会等辅助数据库完成事务日志同步。可能会导致事务的滞后。

同步操作按下列方式维护:

  1. 从客户端收到事务后,主副本会将事务的日志写入事务日志,同时将该日志记录发送到辅助副本。
  2. 日志记录写入主数据库的事务日志后,事务将不能撤消,除非在此时故障转移到尚未收到该日志的辅助副本。 主副本将等待来自同步提交辅助副本的确认。
  3. 辅助副本将强制写入日志,并将确认消息返回给主副本。
  4. 收到来自辅助副本的确认后,主副本将完成提交处理并向客户端发送一条确认消息。

异步提交模式

与同步提交方式不同的是,主数据库不会等辅助数据库完成事务日志同步。可能会导致辅助数据库数据丢失。

故障转移

同步提交模式的故障转移

手动

手动故障转移在数据库管理员发出故障转移命令之后发生,它将导致已同步的辅助副本转换为主角色(同时确保数据受到保护),而主副本转换为辅助角色。 手动故障转移要求主副本和目标辅助副本都在同步提交模式下运行,并且辅助副本必须已同步

自动

自动故障转移是为了响应导致已同步的辅助副本转换为主角色(同时确保数据受到保护)的故障而执行的。 如果以前的主副本变为可用,则它将转换为辅助角色。 自动故障转移要求主副本和目标辅助副本都在同步提交模式下运行,并且故障转移模式设置为"自动"。 此外,次要副本必须已同步并具有 WSFC 仲裁,且满足由可用性组的灵活故障转移策略指定的条件。

异步提交模式的故障转移

异步提交模式 :

强制手动:强制故障转移是一个灾难恢复选项。 当目标辅助副本与主副本不同步时,强制故障转移是唯一可能的故障转移形式。

异步提交的强制故障转移方式可能导致数据丢失

相关推荐
知识分享小能手19 分钟前
Redis入门学习教程,从入门到精通,Redis 概述:知识点详解(1)
数据库·redis·学习
xixihaha13242 小时前
将Python Web应用部署到服务器(Docker + Nginx)
jvm·数据库·python
夕除2 小时前
Mysql--07
数据库·mysql
数据最前线2 小时前
5个瞬间,盘点国产数据库的2025年
数据库
jiankeljx2 小时前
Redis-配置文件
数据库·redis·oracle
xixihaha13242 小时前
Python游戏中的碰撞检测实现
jvm·数据库·python
Schengshuo3 小时前
SQL 中 COUNT 的用法详解
数据库·sql
顶点多余3 小时前
Mysql--后端与前端关系
数据库·mysql
mygljx3 小时前
【MySQL 的 ONLY_FULL_GROUP_BY 模式】
android·数据库·mysql
sunwenjian8863 小时前
Springboot项目本地连接并操作MySQL数据库
数据库·spring boot·mysql