数据库高可用实战案例:架构优化

数据库高可用实战案例:架构优化

  提及高可用,看官们会想到很多方案,也许是自亲身经历过系统从单机变成高可用的惨痛进程,大概有的看官只是在大团结的虚机上搭建过测试的玩具。前日本篇用本人自身的实在经历给我们讲述,不管什么实战和测试玩耍仍然十分的大的界别的!大概你以为搭建一套高可用方案非常粗大略,配置配置就OK了,但在真正的复杂系统中全方位就不曾那么轻松了! 

  聊到高可用,看官们会想到很多方案,大概是自亲身经历过系统从单机变成高可用的悲苦进度,可能有的看官只是在祥和的虚机上搭建过测试的玩意儿。今日本篇用作者要好的真实经历给我们讲述,不管如何实战和测试玩耍依然非常大的分其他!只怕您认为搭建一套高可用方案很简短,配置配置就OK了,但在真的的复杂性系统中任何就没有那么轻松了! 

提及高可用,看官们会想到很多方案,只怕是自亲身经历过系统从单机变成高可用的惨痛进度,恐怕有的看官只是在融洽的虚机上搭建过测试的玩意儿。今扶桑篇用自作者本人的实在经历给大家讲述,不管怎么着实战和测试玩耍照旧不小的区分的!只怕你以为搭建壹套高可用方案非常粗略,配置配置就OK了,但在真的的错综复杂系统中整整就从未有过那么轻松了!

写在日前

  在QQ群,微信群,论坛中不时救助使用SQL
Server数据库的情人消除难题,然而有局地最常见最核心的标题,天天都有人问,回答多了也不想再解答了,索性把那些题材整治一下,再有人问到直接发链接。

   近来设法而写那篇小说,难题或许不到家,后续会间接更新。

  作品首要讲述升级并搭建AlwaysOn高可用的经过,以进行的思绪为主。文中并从未搭建集群的步子,搭建步骤请自行学习(个人认为会搭建可用组并不是重点,而一一日千里的调查研讨细节才是种类成功的根本)

  文章首要讲述升级并搭建AlwaysOn高可用的经过,以执行的思绪为主。文中并不曾搭建集群的步调,搭建步骤请自行学习(私家认为会搭建可用组并不是第贰,而壹多重的调查商量细节才是类别成功的机要)

小说首要描述升级并搭建AlwaysOn高可用的历程,以推行的笔触为主。文中并未搭建集群的步子,搭建步骤请自行学习。

基础难题采访

————–博客地址—————————————————————————————

————–博客地址—————————————————————————————

客户的现有方案是壹套使用公布订阅创设的读写分离方案,总体来说系统构建的很正确。也是在SQL二零一一在此之前很广泛的壹套架构。

能源下载

  描述:XX版本数据库操作系统在哪里下载?

  答:  里面很多事物,有趣味的温馨看呢

初稿地址: 

原来的书文地址: 

架构图如下:

连接难题

  描述:数据库连接不上

  图片 1

  答:请确认SQL服务是还是不是运行,用户密码是或不是科学,连接的实例名称,端口是不是科学

  图片 2

  

如有转发请保留原来的文章地址! 

如有转发请保留原作地址! 

图片 3image图片 4image

日记难点

  描述:系统日志LDF满了 或 日志文件更大 怎样减弱?

  答:简单复苏情势下SQL
Server会自动截断日志文件,完整格局下必要日志备份

  苏醒格局查看

  图片 5

  日志备份的不2诀窍

  图片 6

  收缩日志

  图片 7

 

  注:很三个人采纳简单情势习惯了,也许根本不明了本人用的怎么形式,不过倘诺做的镜像,AlwaysOn那类方案日志必定是完好格局。

  日志不能裁减有较多的由来,常见的是不曾备份和Replication
也正是运用镜像、AlwaysOn、cdc这个技能的时候日志同步中除了难点或这未有同台到位。

  1般正规军化解方法: 

  • 查看 sys.databases 里面 log_reuse_wait_desc字段 假若是nothing才能减弱 
  • log_reuse_wait_desc 为 backup 须要备份日志
  • Replication
    则需求查阅镜像、AlwaysOn、cdc那几个技能意况是或不是健康,假若不正规,必须拆除恐怕调整为符合规律
  • 各样拍卖直到nothing才能收缩

  

 

 

 

客户的急需:SQL server 贰零零九 奥迪Q7二 提拔到SQL SEMuranoVE昂科拉 2014 使用AlwaysOn
替换现有颁布订阅架构。完结本地高可用、读写分离,异地灾备等,并动用有的201肆的新功能,如内部存款和储蓄器优化表等升级系统天性和现身能力等。

询问很久慢

  描述:查询很久都查不出数据,相当慢!

  答:那样的景况出现一般是查询语句被其余语句不通。在查询中添加 select
* from table with (nolock)如若能查出来表达阻塞

  具体的围堵景况 能够使用sp_who2 或者
sys.dm_exec_requests 视图查询

  具体脚本(查看语句运维状态)

 1 WITH sess AS
 2 (
 3     SELECT
 4         es.session_id,
 5         database_name = DB_NAME(er.database_id),
 6         er.cpu_time,
 7         er.reads,
 8         er.writes,
 9         er.logical_reads,
10         login_name,
11         er.status,
12         blocking_session_id,
13         wait_type,
14         wait_resource,
15         wait_time,
16         individual_query = SUBSTRING (qt.text, (er.statement_start_offset/2)+1, ((CASE WHEN er.statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2 ELSE er.statement_end_offset END - er.statement_start_offset)/2)+1),
17         parent_query = qt.text,
18         program_name,
19         host_name,
20         nt_domain,
21         start_time,
22         DATEDIFF(MS,er.start_time,GETDATE()) as duration,
23         (SELECT query_plan FROM sys.dm_exec_query_plan(er.plan_handle)) AS query_plan
24     FROM
25         sys.dm_exec_requests er
26         INNER JOIN sys.dm_exec_sessions es ON er.session_id = es.session_id
27         CROSS APPLY sys.dm_exec_sql_text(er.sql_handle)as qt
28     WHERE
29         es.session_id > 50
30         AND es.session_Id NOT IN (@@SPID)
31 )
32 SELECT
33     *
34 FROM
35     sess
36 UNION ALL SELECT
37     es.session_id,
38     database_name = '',
39     0,
40     0,
41     0,
42     0,
43     login_name,
44     es.status,
45     0,
46     '',
47     '',
48     '',
49     qt.text,
50     parent_query = qt.text,
51     program_name,
52     host_name,
53     nt_domain,
54     es.last_request_start_time,
55     DATEDIFF(MS,es.last_request_start_time,GETDATE()) as duration,
56     NULL AS query_plan
57 FROM
58     sys.dm_exec_sessions es
59     INNER JOIN sys.dm_exec_connections ec ON es.session_id = ec.session_id
60     CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle)as qt
61 WHERE
62     ec.most_recent_session_id IN
63     (
64         SELECT blocking_session_id FROM sess WHERE blocking_session_id NOT IN(SELECT DISTINCT session_id FROM sess)
65     )
66 ORDER BY
67     1, 2

  

 

 

最初对系统的刺探很重大!那么怎么样对系统有一个初叶直观并且详细的摸底呢?用脚本征集?那是时候就呈现出工具的正规和合营价值。工欲善其事,必先利其器!

分区表难点

  描述:数据量千万级别了运用分区表升高质量

   答:分区表的施用情形重若是管制数据,而升迁质量重假诺靠IO并行,须要客观规划多块物理磁盘,大多数的情景下几千万多少单1的方式查询只必要添加正确的目录即可。

  

废话不多说,直接开整—————————————————————————————–

废话不多说,间接开整—————————————————————————————–

图片 8image图片 9image图片 10image

高可用的挑叁拣4

  答:SQL自带的高可用或读写分离技术首要有:故障转移群集、发布订阅、镜像、日志传送、AlwaysON可用组(具体能够在进阶难题的材质中详细查看)

  一般选拔读写分离需求遵照差别的景观和供给,比仿佛步的实时性,读写分离成效的内需情状

  主要列出多少个优缺点:

  故障转移群集:主备方式,单活(帮助机不可读),硬件财富浪费,首要场景是数据库的高可用。

  发布订阅:读写分离常用方式,配置灵活,副本节点能够七个,能够宣布订阅部分数据(即能够对数据筛选),并提供三种宣布订阅情势,缺点:维护比较费心,一般不能用作高可用。

  镜像:主备情势,单活(扶助机不可读),硬件能源浪费,主要场景是数据库的高可用。相对于故障转移群集镜像是数据库级别的高可用。在镜像中得以应用快速照相的主意达成读写分离。

  日志传送:首要用来灾备,在备用机上可读,但缺点是日记还原时无法读,读时无法上升。

  AlwaysON可用组:综合性方案,满足高可用、读写分离等须要,须求:SQL
Server二〇一三 以上版本

  第贰方产品:moebius负载均衡集群,完毕双活,读负载均衡、读写分离等。缺点实时同步不切合类似采集系统的广大写入系统。

 

背景

  客户的并存方案是1套使用公布订阅营造的读写分离方案,总体来说系统营造的很不错。也是在SQL二〇一三事先很常见的1套框架结构。

  架构图如下:

   图片 11

 

  图片 12

 

 

 

  客户的须求:SQL server 二〇一〇 LX570二 升高到SQL SE奥迪Q伍VEBMWX三 2014 使用AlwaysOn
替换现有发表订阅架构。达成本地高可用、读写分离,异地灾备等,并利用有的201四的新职能,如内部存款和储蓄器优化表等升级系统品质和现身能力等。

背景

  客户的水保方案是一套使用公布订阅构建的读写分离方案,总体来说系统创设的很正确。也是在SQL二〇一一事先很宽泛的1套架构。

  架构图如下:

   图片 11

 

  图片 12

 

 

 

  客户的必要:SQL server 贰零零9 XC90二 晋升到SQL SE猎豹CS陆VE奥迪Q7 201四 使用AlwaysOn
替换现有发表订阅架构。达成本地高可用、读写分离,异地灾备等,并使用有的201四的新功用,如内部存款和储蓄器优化表等升级系统天性和出现能力等。

通过先前时代的必要分析,并对客户系统结构有了1个开头的询问后,大家用了接近一周的时刻从架构的复杂度,易用性,客户程序改动程度,质量,稳定性等四个角度敲定了最后的方案。

劳务不能运维

  答:服务无法运转有不少缘故,须要切实难点具体定位,假使赶上此类难题要首先查看日志定位难点,日志主要两局地,SQL运转日志和windows日志,上边给出两篇经典解析SQL运维的小说:

  你所不明了的SQL
Server数据库运转进度(用户数据库加载进程的疑难杂症)

  您所不知晓的SQL
Server数据库运行进程,以及运营不起来的各样难题的剖析及消除技术

  

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图