SQL Server AlwaysOn中的几个误区
AlwaysOn自SQL Server2012之后已经发布很久了,最近我在给一些客户做咨询的时候经常被问起是不是应该使用AlwaysOn,从客户的视角来看仿佛AlwaysOn是一个包治百病的良药,但实际上没有包治百病的良药。因此在此我谈一谈AlwaysOn中的常见误区。
1.AlwaysOn可以实现负载均衡。
答案是否定的,AlwaysOn在特定条件下(需要修改前端应用程序)可以负担只读负载,但负载均衡是无法做到的。在SQL Server中如果希望实现负载均衡可以考虑两个方向,通过复杂的架构以及和修改应用程序来共同实现,可以考虑的方向诸如:
可伸缩共享数据库
该特性允许多个SQL Server实例连接到一个共享的只读存储,从而使得报表服务可以Scale-Out,但只能扩展只读负载,拓扑图如图1所示。
图1.可伸缩共享数据库
对等复制
对等复制允许节点中的每一个点进行更新。但对等复制有比较严格的限制,包括每个节点可更新的数据库范围的考虑、冲突的处理、对网络带宽的要求、对运维人员水平的要求、对丢失数据方面的考虑等,典型拓扑图如图2所示。
图2.对等复制拓扑
分布式视图
简单理解,分布式视图就是将数据分布到多个节点,通过视图将这些数据汇总起来。这种方案需要对程序做大量修改,比较麻烦。
SQL Server Service Borker(SSB)
说到这个方案,我曾经因为这个方案吃过不少苦头。该方案实施起来过于复杂,并且需要应用程序端针对做大量修改,经常掉消息。没有专业的DBA来看就是自寻死路。
考虑第三方方案
SQL Server一直没有原生的负载均衡方案,如果自己没有很强大的实力或是使用的是第三方厂商提供的产品无法修改代码,可以考虑第三方方案,国内我知道一家公司,格瑞趋势(http://www.grqsh.com/)专门做SQL Server上的负载均衡的方案。我在微软举办的一次活动中和他们的数据库咨询顾问交流过,水平还不错。
2.AlwaysOn是一个Share-Nothing方案
只说对了一半。实际上,AlwaysOn中包含两种方案,AlwaysOnFailover Cluster Instance可以看作之前SQL Server故障转移集群的升级版本,升级的部分包括更灵活的故障转移策略、可以将TempDB放到本地存储等特性。该方式是共享磁盘的解决方案。
另一部分是AlwaysOnAvailability Group是Share-Nothing的方案,可以看作之前镜像的升级版本,只是副本可以同时存在4个(SQL Server 2014中是8个)并且允许只读。
3.AlwaysOn是以一组数据库为粒度,则可以执行针对改组数据库的跨库事务
不允许。虽然可用性组是以多个库为粒度,但不允许事务中更新的数据涉及到AlwaysOn中的多个库。
4.AlwaysOn中的每个节点都必须在物理机上
错误,实际上,AlwaysOn的WSFC也可以在虚拟环境中。
5.AlwaysOn可用性组的性能会比镜像高很多
这也同样是一个常见的误区,或许和微软对AlwaysOn的宣传有关,我咨询过的一些客户都受到过微软号称AlwaysOn包治百病,但实际上AlwaysOn是基于镜像,如果您的网络或IO性能存在问题,那么即使使用了AlwaysOn可用性组性能也会存在问题。
SQL Server AlwaysOn中的几个误区的更多相关文章
- SQL Server 2012中的AlwaysOn尝试
简介 SQL Server2012中新增的AlwaysOn是一个新增高可用性解决方案.在AlwaysOn之前,SQL Server已经有的高可用性和数据恢复方案,比如数据库镜像,日志传送和故障转移 ...
- 在权限受限制的AD域环境中部署SQL Server AlwaysOn高可用性
最近在给一个客户部署基于微软TFS的软件生命周期管理平台时,客户要求数据库层实现高可用性,减少因数据库服务器故障影响软件开发进展. 客户现有域是一台搭建在Windows Server 2008上的级别 ...
- 最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目
最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目 最近一个来自重庆的客户找到走起君,客户的业务是做移动互联网支付,是微信支付收单渠道合作伙伴,数据库里存储的是支付流水和交易流水 ...
- 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)
从0开始搭建SQL Server AlwaysOn 第一篇(配置域控) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnb ...
- 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...
- 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)
从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...
- (转) 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)
原文地址: http://www.cnblogs.com/lyhabc/p/4682986.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第三篇,这一篇才真正开始搭建Alwa ...
- (转)从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
原文地址: http://www.cnblogs.com/lyhabc/p/4682028.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第二篇,主要讲述如何搭建故障转移集 ...
- SQL Server AlwaysOn架构及原理
SQL Server AlwaysOn架构及原理 SQL Server2012所支持的AlwaysOn技术集中了故障转移群集.数据库镜像和日志传送三者的优点,但又不相同.故障转移群集的单位是SQL实例 ...
随机推荐
- zabbix监控nginx连接状态(转)
zabbix监控nginx zabbix可以监控nginx的状态,关于一个服务的状态可以查看服务本身的状态(版本号.是否开启),还应该关注服务能力(例如以nginx的负载效果:连接数.请求数和句柄数) ...
- HTML中的div标签
在网页制作过程过中,能够把一些独立的逻辑部分划分出来.放在一个<div>标签中,这个<div>标签的作用就相当于一个容器. 为了使逻辑更加清晰,我们能够为这一个独立的逻辑部分设 ...
- html 跳转页面,同时跳转到一个指定的位置
比如我现在 a.html 的时候,我想跳转到 b.html ,并且是 b.html 的某一个位置,用 <a href=>, a.html里: <a href="b.html ...
- 王立平--Program Files (x86)
window7根据系统.program files(x86) 它是应用程序目录,在64下位系统.为了更好的相容性32位程序,在一些安装32位程序(请注意,有些节目自己是32位),将默认被安装progr ...
- 实现strcmp非常easy的思维
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> void strcom(char *s ...
- android如何使用自己定义JNI接口,以及NDK环境建设和使用的工具。
一.建筑环境: 1.需要的工具: A.cygwin (在windows下使用LINUX系统) ...
- arcmap坐标点生成线和面(更正版)
一:本博客的脉络 (1 )做了例如以下更正:之前在网上搜到的结果是:arcmap坐标点生成线和面 ------ 注意该功能在ArcGIS10中没有了,当时自己也没有多想就转载了,再此做一下更正或者叫做 ...
- STL顺序容器【vector】【deque】【list】
我们都知道,stl在集装箱船分为两类,订购集装箱和相关的容器. 顺序容器有三种即动态数组vector,双端队列deque,以及链表list (对csdn的文字排版严重吐槽.写好的版发表了就变了) 一: ...
- Docker创建支持ssh服务的容器和镜像
原文链接:Docker创建支持ssh服务的容器和镜像 1. 这里使用的centos作为容器,所以首先下载centos的images # sudo docker pull centos 2. 下载后执行 ...
- android删除文件出错
当删除一个文件,再又一次下载这个同名文件,保存到sdcard时出现error,部分手机出现 Caused by: libcore.io.ErrnoException: open failed: EBU ...