数据库之高可用性组

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

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

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

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

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

可用性副本

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

主要副本

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

次要副本

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

可用性组侦听器

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

高可用性组同步方式

同步提交模式

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

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

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

异步提交模式

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

故障转移

同步提交模式的故障转移

手动

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

自动

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

异步提交模式的故障转移

异步提交模式 :

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

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

相关推荐
霑潇雨5 分钟前
题解 | 分析每个商品在不同时间段的销售情况
数据库·sql·算法·笔试
Watermelo6178 分钟前
随机扣款实现赛博共产主义,《明日方舟:终末地》公测支付事故复盘
数据库·后端·游戏程序·技术美术·用户体验·游戏策划·游戏美术
数据知道10 分钟前
PostgreSQL 实战:行级安全策略(RLS)详解
数据库·postgresql
橘子1319 分钟前
MySQL表的基本查询(六)
数据库·mysql
SJLoveIT19 分钟前
架构师视角:深度解构 Redis 底层数据结构的设计哲学
数据结构·数据库·redis
王五周八25 分钟前
从测试到执行计划:拆解 SQL 性能坑的底层逻辑
数据库·sql
Eugene Jou30 分钟前
Dinky+Flink SQL达梦数据库实时同步到Doris简单实现
数据库·sql·flink
玄同76531 分钟前
SQLAlchemy 会话管理终极指南:close、commit、refresh、rollback 的正确打开方式
数据库·人工智能·python·sql·postgresql·自然语言处理·知识图谱
【赫兹威客】浩哥32 分钟前
【赫兹威客】完全分布式HBase测试教程
数据库·分布式·hbase
一晌小贪欢33 分钟前
Python ORM 深度解析:告别繁琐 SQL,让数据操作如丝般顺滑
开发语言·数据库·python·sql·python基础·python小白