AlwaysOn可用组基础知识
AlwaysOn可用组概念
AlwaysOn作为SQL Server2012新功能,其目的主要为了替代镜像功能。
AlwaysOn拥有镜像的同步和异地容灾功能,并能在镜像的基础上实现一对多的镜像副本同步,最多支持一个主副本和四个辅助副本,实现多个辅助副本可读取和备份操作,以提高硬件使用率。在异步和同步的提交模式下,实现手动和自动的故障转移。
alwaysOn高可用基础是Windows群集环境,也就说AlwaysOn相关的主备服务器都需要属于同一个windows群集的节点。
AlwaysOn、Cluster、Mirror比较
|
AlwaysOn |
Cluster |
Mirror |
|
基于Windows Cluster |
基于Windows Cluster |
不基于Windows Cluster |
|
节点数>=2 |
节点数>=2 |
节点数=2 |
|
Failover条件: |
Failover条件: |
Failover条件: |
|
数据访问: |
数据访问: |
数据访问: |
|
数据库实例类型: |
数据库实例类型: |
数据库实例类型: |
|
数据存储及保护级别 |
数据存储及保护级别 |
数据存储及保护级别 |
|
应用程序连接字符串: |
应用程序连接字符串: |
应用程序连接字符串: |
|
数据同步方式: |
数据同步方式: |
数据同步方式: |
AlwaysOn对维护/应用的帮助
1. 实现一对多的镜像关系。更好的提高存储保护级别。
2. 提供统一的访问IP。对于我们的应用,镜像切换后,不再需要更改域名指向IP。
3. 提供了只读的副本,提高的硬件的使用率。
4. 提供了包含数据库的功能,认证级别可以放在数据库级别(即一个带密码的user)。方便镜像的切换。
5. 缺点是AlwaysOn必须基于Windows Cluster,增加了配置和故障排除的复杂性。
AlwaysOn安装要求
1、 非域控制服务器。
2、 确保每台计算机都是 Windows Server 故障转移群集 (WSFC) 群集中的节点。
3、 安装SQL Server 2012的基本要求【Windows Server 2008 R2 sp1; .net 3.5 ; PowerShell 2.0】
4、 建议最新的补丁更新。
AlwaysOn基本术语
1、 可用性数据库
此可用性数据库与镜像配置相同,主数据库需要是完整恢复模式,且需要执行过程完整备份,以确保维护一个完整的日志序列,才能用于AlwaysOn可用性组的日志同步;基本配置方式与镜像相同,我们需要在辅助数据库服务器上还原相同的数据库,且必须处于restoring状态,知道可加入可用性组为止。
2、 可用性副本
可用性组用于承载可用性数据库一个副本
3、 可用性模式
可用性模式用来确定辅助副本将日志写入磁盘之前,是否等待主主数据库上的事务提交。
异步提交模式
主副本无需确认复制副本是否已经将事务日志写入磁盘,便可提交事务。由于允许辅助数据库上的事务滞后于主数据库,因此可能会导致某些数据丢失。
同步提交模式
在主副本提交事务之前,必须等待辅助副本确认已经完成强制写入日志。此模式确保主备数据库同步,这种同步会延长事务滞后时间
4、 故障转移类型
计划手动故障转移,是管理员有需要的时候,可将提交模式从异步改成同步,等待同步之后,手动切换,以保证数据不丢失。
|
转移模式 |
同步方式 |
是否可能丢失数据 |
|
自动 |
同步 |
否 |
|
计划手动 |
同步 |
否 |
|
强制 |
异步 |
是 |
登陆辅助数据库服务器:ALTER AVAILABILITY GROUP [AG1] FAILOVER
5、 客户端连接
可通过创建可用性侦听器来连接主副本,一个可用性侦听器包括DNS虚拟名称,虚拟IP,一个端口号。
6、 活动辅助副本
辅助副本上执行时,BACKUP DATABASE 仅支持数据库、文件或文件组的“仅复制”完整备份。BACKUP LOG 仅支持常规日志备份(辅助副本上的日志备份不支持 COPY_ONLY 选项)。辅助副本不支持差异备份。若要备份辅助数据库要求,辅助副本必须能够与主副本进行通信,并且状态必须为已同步或正在同步。sys.fn_hadr_backup_is_preferred_replica('dbname')用于确定当前副本是否是首选项。若执行自动备份脚本时,需确认备份脚本适合在哪个副本上执行,建议首先在辅助副本上优先,若有多个副本则可设置每个副本的优先级(1-100),确定哪个副本优先备份,若副本都不能备份,则需要主副本上执行自动备份。
且可对辅助副本设置只读访问。
7、 会话超时期限
可用性组内,副本之间会相互ping以表示对方处于活动状态。默认超时期限设置为10秒,用户可配置此值,最小值为5秒。若连接超时,副本将进入disconnected状态。
8、 自动页修复
每个可用性副本都通过解决阻止读取数据页的一定类型的错误,自动尝试从本地数据库上损坏的页中恢复。 如果辅助副本无法读取某页,则该副本从主副本请求该页的新副本。 如果主副本无法读取某页,该副本将向所有辅助副本广播索取新副本的请求,并从响应的第一个副本中获取该页。 如果此请求成功,则将以新副本替换不可读的页,这通常会解决该错误。
AlwaysOn可用组基础知识的更多相关文章
- Oracle ASM 磁盘组基础知识整理(收藏版)
转至:https://cloud.tencent.com/developer/article/1494403 为什么要写这么一篇基础知识呢?还是有那么一点点原因的,不是胡编乱造还真是有真实存在的事件的 ...
- linux文件属性之用户和组基础知识
root :x :0 :0 :root ...
- Linux文件属性之用户和组基础知识介绍
一.Linux多用户多任务介绍 Linux/Unix 是一个多用户.多任务的操作系统:在讲Linux账号及账号组管理之前,我们先简单了解多用户.多任务操作系统的基本概念. 1.1Linux单用户多任务 ...
- SQL Server 2012实施与管理实战指南(笔记)——Ch3Alwayson可用组
3.AlwaysOn可用组 Alwayson支持的,是一个可用性组,每个可用性组是包含了多个用户数据库的容器,可用性组内的数据库可以作为一个整体进行故障转移. AlwaysOn关键特性: 一.类似集群 ...
- 11月10日上午ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库
1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...
- ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库
1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...
- 14.ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库
1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...
- SQL Server ->> 高可用与灾难恢复(HADR)技术 -- AlwaysOn(实战篇)之AlwaysOn可用性组搭建
因为篇幅原因,AlwaysOn可用性组被拆成了两部分:理论部分和实战部分.而实战部分又被拆成了准备工作和AlwaysOn可用性组搭建. 三篇文章各自的链接: SQL Server ->> ...
- SQL Server ->> 高可用与灾难恢复(HADR)技术 -- AlwaysOn可用性组(理论篇)
因为篇幅原因,AlwaysOn可用性组被拆成了两部分:理论部分和实战部分.而实战部分又被拆成了准备工作和AlwaysOn可用性组搭建. 三篇文章各自的链接: SQL Server ->> ...
随机推荐
- ubuntu 设置 NAT 转发
针对需求: 嵌入式开发中,经常使用板子和笔记本通过网线直连,如果需要板子连接到外网,就比较尴尬. 最简单方法,可以把板子接到局域网内,我们的笔记本通过局域网交换机连接到板子,可是,这样要很多修改 IP ...
- 心血来潮学python
第一次见python就被吸引了,嗯,前面在linux下调试过一些小段代码.最近工作都在windows下面,也懒得换去unbuntu,所以想着在win下安装python. 之前不知道用什么方法装的pyt ...
- 数组、ArraryList和List三者的区别
在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ...
- Linux命令点滴积累
1.批量删除当前目录及子目录中指定类型的文件: [root@localhost logs]# find ./ -name *.bak | xargs rm -rf [root@localhost lo ...
- 常见linux命令释义(第二天)
查看磁盘与目录的容量. df 与du df 是英语Disk Free的意思.磁盘空余. df -h -h中h指的是一human(人类)的角度,即用GB,MB的格式显示.这个比较常用,还有其他的选项 ...
- Ubuntu学习总结-08 Ubuntu运行Shell脚本报 shell /bin/bash^M: bad interpreter错误问题解决
错误原因之一很有可能是运行的脚本文件是DOS格式的, 即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A.可以有很多种办法看这个文件是DOS格式的还是UNIX格式的, 还是MA ...
- string length()
#include <set> std::set<std::string> setName; int main() { std::string strName = "世 ...
- Jquery学习之基础篇二
1.Jquery添加元素的方法 append() - 在被选元素的结尾插入内容 prepend() - 在被选元素的开头插入内容 after() - 在被选元素之后插入内容 before() - 在被 ...
- cmd chcp命令切换字符格式UTF8
cmd chcp命令切换字符格式 命令介绍: chcp 65001 #换成utf-8代码页 chcp 936 #换成默认的gbk chcp 437 #美国英 ...
- Runner站立会议03
开会时间:21.10~21.30 地点:二教103 今天做了什么:Android的存储,只是存储在/date/date 文件夹下和sd卡 明天准备做什么:学习Android的数据库的使用sqlite ...