数据库管理师
(DBA)
最重要的职责是维护数据库系统的稳定、效率、安全。换句话说,
DBA
首重居安思危。在大多数系统中,数据库都位居发动机的地位,若出了状况,将让整个系统陷于停摆。
针对高可获得性
(High Availability
)
需求,
SQL Server 2005
提供了多种功能以满足不同面向的需求。但如何善用这些机制?在此介绍一本好书:
APress
出版的「Pro SQL Server 2005 High Availability
」,作者是
Allan Hirt
。该书详述了
SQL Server
的各相关功能,以及如何规画与施行整体系统的高可获得性。
企业系统的高可获得性
而当系统众多,数据庞大时,不可能有一体适用的政策。管理人员应订出整个企业体中,信息系统重要性的层级,什么是关键性系统
(mission critical)
,什么系统停机数小时没关系?系统是否有周期性维护的时间,还是
7
天
24
小时都需高度运转?规范不同层级的防护规格,以及明确的权责定义,并有专业的支持人力或咨询顾问等,是提升企业
IT
系统高可获得性的基本始点。
一般在设计某个系统的高可获得性时,需考虑全部项目都不可以有单点,例如电源供应、数据储存系统、网络、软件服务…等,而不仅仅是服务器主机的硬件,要小心检视每个环节是否都有备援。稍举笔者碰过的实例:
-
系统本身有规划防护机制,发生问题时,自动透过 Email 等警示系统告知工程师,工程师在第一时间透过远程登录进行错误排除。但因为断电, mail server 等辅助系统挂了,当然就无法通知到工程师。
-
储存子系统的 RAID 控制卡坏了,虽然硬盘没坏,但因为控制卡乱写数据而毁了系统。
-
网络设备没坏,但网卡坏了而释放大量破碎封包,瘫痪了某个网段。
-
早期,台美间的中美海缆曾被流刺网渔船拖断,导致无法经由 DNS 解析 .com 结尾的网络名称,让外界遍寻不着好好活着的系统。
人员的训练与日常演练非常重要,整个团队须熟悉商业逻辑和
IT
技术。意外发生时,才得以从容应对。另外,再好的事前规划和软硬件配置,还是可能遇到人为疏失而让系统崩于意外,尤其
IT
应用和使用者需求都瞬息万变,时间流转后将让早先的规画失效。笔者遇到过许多精妙的设计,让系统安稳地执行多年。但毁在管理者不了解通盘企业架构,做了新的安排而伤了旧系统。例如:调整防火墙
(Firewall)
设定,导致阻挡了
AD
认证致使丛集服务失败。或调整
Web
服务器权限而破坏了程序所需的安全认证,甚至是上了
Windows hot fix
而毁了丛集架构。这些都不是
SQL Server
提供之功能可以防护的。其考验的是整个团队对整体系统技术的熟稔,最糟的状况是备齐所有软件,重装一套环境,所以备好所有系统部署之所需是必要的。
书籍内容
本书的内容大分为三部分,一、二章为本书的第一部分,介绍高可获得性对于企业营运的重要,以及定位高可获得性应做到什么程度。两章中没有技术内容,而是应有的心态,并提醒你需要小心关注:人、流程、预算和时间四者,才能克服系统稳定之障碍。
第二部分包含三至十三章,介绍各种
SQL Server
所提供的高可获得性机制,
SQL Server 2005
后,提供的高可获得性
(High Availability)
相关机制如下:
1.
Agent Services
的自动化处理和警示通知
2.
备份与还原
3.
数据库快照
(Database Snapshot)
4.
记录传送
(Log shipping)
5.
容错丛集
(Failover Clustering)
6.
复写
(Replication)
7.
数据库镜像
(Database Mirroring)
要采用哪些机制,将依据你要防护的是天然事故还是人为事故而有所不同。第一项机制是管理
SQL Server
的人都需要详细了解的,不仅是为了高可获得性。
人为事故如执行
Update
、
Delete
或
Drop
等语法发生错误,多靠
2
、
3
两项来解决,天然事故则可以透过上述各种机制的混合设计,以预防不同的意外事故。
作者在本书中,一一解释了各种功能的设定,并深入讨论容错丛集。除了
SQL Server
的容错丛集功能外,还花了相当的篇幅讨论其下
Windows
系统的容错丛集运作原理。因为整个容错丛集的基本运作都是靠
Windows
操作系统,
SQL Server
仅是配合应用其功能的服务。而除了
SQL Server
本身的机制外,作者在
13
章稍加讨论了前端程序设计与数据摆放。
第三部分包含十四到十七章,则是将第二部分的技术做综合整理与比较,并介绍如何管理与维护服务器和数据库。由于前述的各种机制往往无法提供完整的防护,最明显的分野是天灾与人祸的防护方法不尽相同。因此真正的防护计划往往是多种技术混合使用。
第三部分除了
SQL Server
本身的技术外,尚讨论了许多
Windows
系统的安装、设定与管理,毕竟任何依凭
Windows
操作系统的服务要谈高可获得性,先要把底层的基础做好。最后在第十七章中,讨论灾难复原与异地备援的想法,并没有施行细则。毕竟,很难预先想象发生如美国
911
的恐怖攻击,或是卡翠那飓风
(Hurricane Katrina)
后,要执行的复原计划为何。
相关资源
l
由于越是重要的系统,越需考虑高可获得性。因此在
SQL Server
各个版本对上述高可获得性功能的支持多不相同。所以本书在介绍各项功能前,都会先说明在哪个
SQL Server
与
Windows
版本支持某项功能到什么程度。
规划系统之初,你最好先查询一下 SQL Server 所附的联机帮助,以确定所需的功能在该版本是否支持:
ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHT/instsql9/html/81f3e917-884a-4cc8-aca2-0a5fea89f355.htm
规划系统之初,你最好先查询一下 SQL Server 所附的联机帮助,以确定所需的功能在该版本是否支持:
ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHT/instsql9/html/81f3e917-884a-4cc8-aca2-0a5fea89f355.htm
l
本书的第
12
章谈到复写,但仅是操作面的介绍,而复写本身是一个相当复杂的机制,若你想要稳定有效地使用,可以参考
APress
出的另一本书:
Pro SQL Server 2005 Replication ,作者是 Sujoy P. Paul 。
Pro SQL Server 2005 Replication ,作者是 Sujoy P. Paul 。