SQL Server On Linux运维实战

978-7-115-50242-1
作者: 黄钊吉 熊章立
译者:
编辑: 王峰松

图书目录:

详情

本书是国内第一本讲解SQL Server On Linux数据库管理方面的技术图书。
随着微软公司的开源策略逐步深化,其数据库拳头产品SQL Server不仅能运行在Windows平台上,经过一系列产品迭代,还能稳定地运行在主流的Linux平台中,并且越来越受到企业的认同。为了跟上时代的步伐,从业者有必要尽快掌握Linux上的SQL Server的使用方法。
本书属于入门级别的技术图书,主要面向对微软SQL Server有初步认识,并且希望掌握在Linux上的SQL Server运维及性能优化的数据库从业人员。当然,本书也适合在校学生学习使用,以便为后续就业打下良好的基础。
本书以实操为主,讲解了在Linux上SQL Server的安装、配置、监控及高可用搭建等内容,同时融入了作者10年工作经历中总结的Linux及SQL Server性能优化的经验,以协助读者更快入门。
本书包括基础篇、管理篇、性能篇、架构篇、案例篇共计5大板块,每个板块包括若干章内容,每章力求讲清楚、讲透一个技术点。在写作本书时,作者不仅关注本书的系统性,同时还关注本书的实用性,力求使本书能成为大家经常翻阅的工具书。书中的案例均来自实践,希望对读者学习书中的知识点及体会作者的运维、优化思想有所帮助。 

图书摘要

版权信息

书名:SQL Server On Linux运维实战

ISBN:978-7-115-50242-1

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

编  著 黄钊吉 熊章立

责任编辑 王峰松

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315


随着微软公司的开源策略逐步深化,其数据库拳头产品SQL Server不仅能运行在Windows平台上,经过一系列产品迭代,还能稳定地运行在主流的Linux平台中,并且越来越受到企业的认同。为了跟上时代的步伐,从业者有必要尽快掌握Linux上的SQL Server的使用方法。

本书属于入门级别的技术图书,主要面向对微软SQL Server有初步认识,并且希望掌握在Linux上的SQL Server运维及性能优化的数据库从业人员。当然,本书也适合在校学生学习使用,以便为后续就业打下良好的基础。

本书以实操为主,讲解了在Linux上SQL Server的安装、配置、监控及高可用搭建等内容,同时融入了作者10年工作经历中总结的Linux及SQL Server性能优化的经验,以协助读者更快入门。

本书包括基础篇、管理篇、性能篇、架构篇、案例篇共计5大板块,每个板块包括若干章内容,每章力求讲清楚、讲透一个技术点。在写作本书时,作者不仅关注本书的系统性,同时还关注本书的实用性,力求使本书能成为大家经常翻阅的工具书。书中的案例均来自实践,希望对读者学习书中的知识点及体会作者的运维、优化思想有所帮助。


SQL Server作为微软公司著名的数据库管理系统,多年以来一直稳居各种数据库排名的前三甲。作为最初由图灵奖数据库方面得主詹姆斯·格雷主导开发,并基于另外一位图灵奖数据库方面得主Michael Stonebraker开发的Ingres发展起来的SQL Server数据库管理系统,经过30多年的锤炼,已经得到业内的广泛认同和应用。

作为早已轻松支持TB甚至PB级别数据量的数据库产品,合理使用SQL Server足以应对绝大部分常规需求。由于某些原因,在中国大陆SQL Server一直不被看好,这个现象从2014年微软第3任CEO萨蒂亚·纳德拉上任,并提出“Microsoft ❤ Open Source”之后得到了很大的改变。随着.NET、Visual Studio、Office等微软产品逐步实现跨平台应用,SQL Server也在2016年正式可运行在主流的Linux平台上(目前它支持Red Hat/CentOS、Ubuntu和SUSE)。

随着SQL Server 2017的正式发布,SQL Server除了跨平台之外,还引入了大量的新功能,这些功能不仅对数据库性能及数据库管理效率带来明显的提升,还加快了SQL Server和大数据、人工智能领域的整合。

鉴于目前国内尚未有系统介绍关于SQL Server在Linux上运行的图书,同时网上资料过于零散,作者经过近一年的实践及资料整合写就本书,目的是让读者尽快上手,掌握基于Linux的SQL Server的安装、配置、管理及性能优化方法。书中部分内容不局限于Linux平台,但以Linux平台为主。

通过阅读本书,读者将会了解到如何使用基于Linux的SQL Server,如何更好地管理在Linux上的SQL Server及如何进行常规的SQL Server性能优化。

本书分为5篇,分别是基础篇、管理篇、性能篇、架构篇、案例篇。

第1篇包括第1~3章,介绍SQL Server On Linux的基础内容及环境准备。

第2篇包括第4~9章,分别介绍Linux及SQL Server的日常监控和管理知识。

第3篇包括第10~16章,介绍SQL Server的性能优化知识。在本篇中,不仅介绍关于性能的基础知识(可以理解为“内功”),同时也会介绍多种工具(可以理解为“武功招式”)。善用工具能够极大地提升工作效率,减少故障和问题定位的时间,这样才能真正地进阶高手。

第4篇只有第17章,专门介绍Linux上SQL Server AlwaysON的搭建。

第5篇包含第18章和第19章,分别介绍两位作者在Linux和SQL Server运维过程中的一些案例。

书末有4个附录,单独介绍一些扩展的知识点。

到目前为止,有3个术语容易造成混淆:SQL Server vNext、SQL Server 2016和SQL Server 2017。这3个术语中的SQL Server产品都能运行在Windows和Linux(包含Docker)操作系统之上。需要说明的是,vNext实际上是指“开发中的SQL Server”,而另外两个则是官方发布的正式版本。从2016版开始,SQL Server正式实现跨平台。同时由于很多新功能是从2016版开始引入的,所以本书使用的SQL Server虽然是2017版,但是也会兼顾2016版,在必要的地方会加以说明。

本书主要关注数据库引擎的管理和使用,不会涉及SQL Server编程、商业智能、大数据、人工智能等方面。

读者在阅读和使用本书的过程中,如果发现有问题或者需要提交勘误,请登录人民邮电出版社的异步社区,或者与本书的责任编辑联系,邮箱为wangfengsong@ptpress.com.cn。


本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。

本书提供如下资源:

要获得以上配套资源,请在异步社区本书页面中点击 ,跳转到下载界面,按提示进行操作即可。注意:为保证购书读者的权益,该操作会给出相关提示,要求输入提取码进行验证。

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,点击“提交勘误”,输入勘误信息,点击“提交”按钮即可。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线提交投稿(直接访问www.epubit.com/selfpublish/submission即可)。

如果您是学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。

“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、人工智能、软件测试、前端、网络技术等。

异步社区

微信服务号


本篇包含第1~3章,首先对SQL Server On Linux进行简介,然后搭建Linux环境,并在该环境上搭建SQL Server。

本篇的目的在于搭建基础环境以便后续学习使用。


1分钟速读

运行在Linux上的新版SQL Server,将其新特性及强大功能与Linux原生系统的优点进行结合,不仅在运维及性能上带来巨大的便利和提升,同时对大数据和数据挖掘领域的逐步兼容[如内置机器学习、图形处理、兼容HDFS(hadoop分布式文件系统)、Containers(容器)等特性],使得企业不需要从头开始搭建或者把现有环境迁移到“适合”大数据环境的其他关系型数据库中。

本章简要介绍“为什么选择SQL Server On Linux”(1.1节)、“它是什么”(1.2节、1.3节)和“如何使用”(1.4节、1.5节)。

曾经由于大数据产生在Linux环境,SQL Server不能直接访问HDFS(其实从SQL Server 2012开始它已经可以访问了,但是需要一些辅助驱动),不能运行在Linux上,所以SQL Server认为是时代的弃子,只能守住现有的一亩三分地,会在传统领域中挣扎并慢慢消亡。

自现任微软CEO(萨蒂亚·纳德台)上台之后,微软有了翻天覆地的改变,随着云优先、移动优先的策略,“Microsoft ❤ Open Source”的大方针不断深化,微软故步自封的形象在逐步改变。SQL Server作为微软非云专属(微软云有其他数据库产品如Azure Cosmos DB)的最重要的数据库产品,在数据技术(DT)时代和人工智能(AI)时代,自然也有了革命性的改变。

在IT领域工作过的读者应该多多少少听说过,在大规模环境下,经过“合理管理”的Linux服务器在性能和稳定性方面,都比Windows Server好(作者并不希望读者参与过多的争论)。其中一个例子就是在服务器重启频率和软件更新、补丁修复工作中Linux明显比Windows Server表现得更好。关于Linux的介绍详见第2章及其相关章节。

实际上,从SQL Server 2016开始,SQL Server就能运行在Linux环境下。SQL Server 2017的正式发布进一步实现了其在Windows Server和主流Linux平台的无缝连接。同时,不只是SQL Server数据库引擎,还包括SQL Server Agent、某些高可用技术等,它们都能运行在Linux平台。

接下来我们稍微浏览一下为什么选择Linux平台上的SQL Server。

注意:

 

以下仅是作者总结,并不代表官方说法。

关于Linux上的SQL Server性能,可以见官方提供的资料,必应搜索“Microsoft, Red Hat, and HPE Collaboration Delivers Choice & Value to Enterprise Customers”。

本节有3个目的:

说明:

 

尽管本书主要基于Linux上的SQL Server,但是也有必要介绍一些与平台无关的部分,以便本书更具可读性和可操作性。由于在Linux安装时没有直观界面,所以本节的截图是基于Windows平台的SQL Server 2017的。

从SQL Server 2016开始,SQL Server Management Studio(简称SSMS)需要独立下载,必应搜索“下载 SQL Server Management Studio (SSMS)”。

整个安装过程都很简单,下面截取在Windows下安装SQL Server 2017过程中需要注意的部分进行介绍。

从图1-1(实例功能、每个实例单独安装)、图1-2(共享功能、一台服务器只能安装一次、所有实例共享)所示的缩进程度可以看出层级关系。从层级来说,功能(feature)可以分为数据库引擎服务、分析服务和共享功能3类。

图1-1 SQL Server安装过程中实例功能选项

图1-2 SQL Server安装过程中共享功能选项(续图1-1)

数据库引擎服务(database engine services):是 SQL Server 的核心服务,包括了SQLOS、SQLPAL(见1.5节)、存储引擎、关系引擎等,见图1-3。它负责安全性、数据处理、优化等工作。在数据库引擎下面的缩进中,它又包含复制、机器学习及一些针对大数据方面的功能。

图1-3 数据库引擎组件

分析服务(analysis services):简称SSAS,主要用于商业智能的分析引擎,它不属于本书范畴。

共享功能(shared features):共享功能只能在一台机器上安装一次,其中包含以下内容。

具体说明可见官方文档,必应搜索“SQL Server Integration Services (SSIS) Scale Out”。

选择不同的功能(如Master Data Services)会自动安装一些辅助功能,为了后续使用和管理,建议按需选择,不要(也几乎不可能)在服务器上安装全部功能。

从作者的DBA经历来看,在常规业务的系统部署中,一般需要安装的功能有以下两个。

其他功能仅在需要的时候安装。

正如人类进化一样,传统数据库软件为了应对时代的发展,必须要做出很多的“进化”甚至“革新”。有些是我们看不到的,比如SQL Server 2000到SQL Server 2005就引入了一次彻底的重构,加入了SQLOS,到SQL Server 2016之前,我们大量使用的DMV都来自这里。从SQL Server On Linux/SQL Server 2017开始,又引入了SQL PAL(见1.5节),这些对于用户甚至DBA来说都是透明的。这些通常成了产品的卖点。

近年来SQL Server平均每两年发布一个大版本,每个大版本又包含了大量的新特性,没有必要一一详述,作者会根据经历及当前需求,挑选一些比较有价值的功能介绍和演示。

完整的新特性列表可见官方文档,可以用必应搜索“SQL Server 2016 中的新增功能”及其延伸阅读部分。

按照官方的安装过程,本节也从数据库引擎、SSIS、机器学习及兼容Linux这4大方面进行介绍,其中每个功能前面的小括号代表着它在哪个版本开始出现。

提醒:

 

下面功能说明中的(2016+/2017+)表示从SQL Server 2016/2017开始引入的新特性。另外由于安装过程中有些功能依旧以英文名显示,所以下面会尽量列出一些中英文名字的对照,以便读者在后续使用过程中减少混淆。

数据库引擎是各种数据库产品中最核心的组件,没有这个引擎数据库是无法正常运行的,同时其他功能或多或少地是这个组件的辅助工具。从SQL Server 2008特别是R2版本开始,SQL Server的更新重点都在数据库管理、性能、高可用和BI/大数据方面进行提升,其中以BI/大数据的增强最为明显,所以下面对数据库引擎按照“数据库管理”“数据库性能”“高可用”和“大数据”4个方面进行介绍。

数据库管理(含数据库安全)

这部分是数据库管理系统中的基础功能。它让数据库“可用”,只有可用的数据库,才能继续执行性能、高可用及数据利用等功能。SQL Server 2016~2017对数据库管理有了很多的新增功能或者原有功能的强化,读者可能会用到的有以下几个功能。

数据库性能(含故障侦测)

性能及故障侦测将在性能篇进行深入探讨,SQL Server的每一次新版本发布,都必然带来性能上的大幅度提升。在过去,要想知道某个时间段执行了什么SQL语句,导致了什么性能问题,往往只能从大量的监控数据中获取,工作量很大,有时候甚至不可获取(比如宕机或者文件损坏等),而从SQL Server 2016开始提供的查询存储功能能够很好地减缓这种现象。同时SQL Server 2017出现的智能优化功能也可以协助那些没有高水平DBA的企业减少性能影响。

作者挑选了几个比较有特色的功能,进行一定的演示和介绍。

高可用

在现代社会中,核心系统、大型系统几乎无一例外都使用了某些高可用技术。高可用的目的主要是使系统尽可能长地在线并提供服务。作为微软主推的高可用技术,AlwaysON从SQL Server 2012出现开始,它不断地强化和完善,非常值得学习。

(2017+)AlwaysON全部数据库支持跨数据库事务。(2017+)支持无群集、最小副本提交和Windows-Linux跨操作系统迁移。

由于本书的主题是SQL Server On Linux,且不打算深入研究AlwaysON这一足以单独成书的技术,所以本书把篇幅留在Linux上搭建AlwaysON的演示,对于后续的进阶读者可以参见官方文档或作者博客。

大数据

(2016+)PolyBase查询引擎:用于将SQL Server和Hadoop或Azure Blob的外部数据进行集成,它可导入导出及查询。这超出本书范围。

除了PolyBase之外,SQL Server集成服务(简称SSIS)强化了大数据的数据采集,借助Power BI进行数据分析和展示。这对SQL Server参与大数据的系统搭建带来了不少的便利。

这部分不在本书讨论范围,读者可用必应搜索“SQL Server Integration Services”进行深入阅读。

原为SQL Server R服务,从2017开始,它兼容Python,并更名为SQL Server机器学习服务。可以使用“机器学习服务”(数据库内)在SQL Server中运行R或者Python脚本,或者使用“机器学习服务器”(独立)来部署和使用不需要SQL Server的R及Python模型。这些不属于本书范畴,感兴趣的读者可以访问官方资料,使用必应搜索“What is SQL Server Machine Learning Services?”

虽然本书没有提及,但是这个服务将会是以后的重点服务,建议读者多多重视。

SQL Server可以运行在Linux和Windows平台,并且大部分功能是一致的,除了一些与平台相关的功能会有所差异,作者相信随着时间的推移它们将逐步兼容。由于SQL Server On Linux正是本书的主要内容,所以这里暂时不展开。

除了上面4大类之外,Linux上的SQL Server和Windows平台上的是相同的数据库引擎,绝大部分功能是一样的。同时SQL Server On Linux不仅支持Linux还支持Docker。

之所以说大部分功能是一样的,因为也有不支持或暂未支持的功能,截至2017年10月,SQL Server还有不少需要逐步添加的功能,详细清单可见官网资料,使用必应搜索“Linux 上的SQL Server概述”的概述中的“版本和支持功能”。

在构思本书的时候,作者思考首先它应该是一本工具书,值得随时翻阅,否则就意味着它过时,没有价值了;其次它应该是一本介绍系统知识的书(本书更多是以DBA的角度来编写),不成体系的知识很难掌握。

关于如何使用SQL Server On Linux,需要根据实际需求而定,但是抛开具体行业需要使用不同的功能之外,我们可以考虑针对以下的需求使用某些功能。

说明:

 

由于SQL Platform Abstraction Layer过于学术,不适合初学者甚至有经验的读者学习,除非你有兴趣研究或者用来做二次开发,否则不建议深入阅读。本节也仅停留在简介,读者只需要知道大概是什么即可,不需要过于纠结。如果看不懂,那么可以直接看1.5.3节。

如果曾经用过SQL Server 2000,那么你会发现,从SQL Server 2005开始,操作界面、编程、DBA日常工作都有了不一样的感受,而从SQL Server 2005到当前版本,则相对稳定。SQL Server 2005对SQL Server 2000进行了底层重构,加入了一层API,它称为SQL OS或者SOS。SOS的出现很大程度是因为硬件性能大幅度提升,使其可以应对数据量的快速增长。在后来的十几年中,软硬件依旧以强劲的速度发展,同时随着大数据的出现,传统的数据库管理系统(由于硬件的限制,关系数据库中的很多概念已经过时)已经无法很好地应对这种挑战。为此,需要对SQL Server底层再次重构。除此之外,为了更好应对虚拟化和响应“Microsoft ❤ Linux”的口号,就出现了一个名为SQL Platform Abstraction Layer的新技术,简称SQL PAL。注意要跟Windows性能计数器分析工具PAL(Performance Analysis of Logs)区分开来。

PAL来自微软研究项目Drawbridge,这个项目并不是专门为SQL Server而研究的,更多是为了虚拟化。为了使SQL Server这个一直以来只能运行在Windows平台下的软件也能够运行在Linux上并且表现不会比在Windows平台上差,微软把PAL引入SQL Server中。

PAL通过对所有操作系统或者平台特定的代码进行隔离,使其基础结构保持对操作系统的不可知性。从而“跨平台”提供支持环境。

为了实现对Linux平台的支持,SQL Server借助PAL完成以下主要的目标。

为了让SQL Server能很好地运行在Linux上,核心问题就是如何让SQL Server去除对Windows的过度依赖同时又能使用Linux提供的各种强大功能,二者缺一不可。要知道,SQL Server已经运行在Windows上接近30年,不管是单纯的API调用还是本身内核中的编码,都有大量为Windows定制的部分。另外SQL Server作为一个大型软件,其代码量何止千万行。

根据官方资料,SQL Server对Windows的依赖主要有以下3部分。

另外从应用层面来说,Windows的群集、分布式事务协同(MS DTC)甚至邮件功能等都早已对SQL Server进行了稳定的交互。基于这些大量而强的依赖特性,改造需要一步一步进行,所以即使SQL Server On Linux已经正式发布,在某些细节上面可能还会有暂时不能兼容的情况。

PAL负责从软件本身抽象出底层操作系统及其库的调用和语义。在PAL出现之前,绝大部分资源(如内存和线程)并不完全受控,Win32/NT API等可以创建自己的线程和内存资源。这一次SQLPAL把所有这些都纳入自己的可控范围。从而进一步摆脱了SQL Server对Windows的依赖。

新架构(PAL)由一套不经过任何Win32或NT系统的SOS Direct API组成。没有关于SOS Direct API的代码,要么通过托管的Windows API(如MSXML),要么通过NTUM(NT User Mode API,它包含1500+ Win32和NT系统调用),所有子系统的存储、网络、资源管理都基于SOS,并且在SOS Direct和NTUM API中共享。SQL PAL的架构如图1-4所示。

图1-4 SQL PAL架构图

操作系统的运作基于各种进程,下面简介在PAL中的进程模型。

操作系统的运行依赖于进程,进程完成一系列的动作。SQL Server不管在哪个平台上,最终也是以进程方式存在的,并通过调用其他系统进程来完成数据库与外部资源的交互。图1-4和图1-5所示的Host Extension类似于一个本地Linux应用程序,当Host Extension启动时,它会加载并初始化SQL PAL,然后PAL再启动SQL Server,PAL可以实现软件隔离,使得SQL Server对底层操作系统不敏感。

图1-5 Linux进程模型

SQL Server对操作系统发出的请求,会由PAL翻译成平台所能识别的具体调用。

如果要类比,那么可以把SQL PAL当作Java中的JVM,把SQL Server对外部的调用通过SQL PAL转换成操作系统可识别的方式来实现,使其充当一个翻译者的角色。从而去除SQL Server对底层操作系统的依赖。

除此之外,通过SQL PAL,SQL Server只需要一次开发即可多平台运行。这保证了在Windows上运行的SQL Server跟在Linux上运行的SQL Server是同一个核心。由于Linux跟Windows毕竟有很多差异,所以一些在Windows上成熟的技术特别是关于HA/DR方面的,并不能马上迁移到Linux上。但这不过只是时间上的问题而已。

关于Drawbridge自行必应搜索“Drawbridge - Microsoft Research”。

这里大概介绍一下本书的结构,本书目标是在实用的前提下,使其不仅能作为入门书籍,还能作为参考书,随时翻阅,所以在串联各种知识点的前提下,也尽量兼顾每章的相对独立。

至于本书的整体内容,应该没有什么比一个图更能够表达了,如图1-6所示。

图1-6 本书结构示意图

由于很多内容实际上是相互关联的,所以没有办法说清楚每个方框具体在哪一章,读完本书之后,相信读者应该有所感悟。

表1-1是作者简单对比SQL Server在不同平台上的运行情况。在使用Linux上的SQL Server时,你会发现(假设你已经用过Windows上的SQL Server)它们有不少区别和注意事项。下面列出一些比较明显常见的。

表1-1  SQL Server在Windows及Linux上的区别

功  能

Windows平台

Linux平台

数据库引擎服务账号

在安装过程中可以选择各种Windows账号

默认为SQL Server组下的SQL Server用户。默认权限仅限于SQL Server目录

操作系统权限配置

常规需求时较为简单

权限系统比较复杂

SQL代理、SQL Server配置管理器

有界面可操作,SQL代理可以配置权限

纯命令行,没有配置管理器,需要使用命令工具操作和配置。SQL 代理只能进行服务状态变更,不能配置服务账号

环境变量配置

Windows上几乎不需要配置

需要配置较多的环境变量

性能配置

较少

需要配置的内容较多

功能支持

较全

暂时未能与Windows上完全一致

上面是作者在使用过程中感受到的差异,简单来说,由于SQL Server在Windows上运行了三四十年,而在Linux上只运行了一年多,加上Linux本身只是一个“内核”。考虑到即使作为一个简单的服务器都需要进行较多的配置,所以SQL Server在Linux上需要进行的配置会比较多,而且很多界面操作到了Linux上后被简化甚至取消了。但总体来说,这并不会造成非常大的影响。

注:

 

上面的内容没有讨论未在Linux上实现的或者Windows特有的一些功能,不排除微软后续会有改进。

本章对SQL Server On Linux做了一个非常简单的介绍,重点介绍的是SQL Server On Linux的新功能。同时也展示了SQL Server能运行在Linux平台上的原因。在当前趋势下,以SQL Server 为切入点学习Linux确实是非常好的时机。作者认为在不久的将来(可能二三年内),SQL Server On Linux将会越来越被重视和广泛使用。

另外本章也列出了在某些场景下可能用到的新功能。读者可以根据自身情况去安排学习顺序,本书尽量保证章节的相互独立性以便能够在系统学习之后本书依旧可以作为参考工具来使用。

最后以图的形式展示了本书的大概结构。本章的目的在于通过对SQL Server On Linux的介绍,让读者更加坚定地进行后续的学习。

下一章是关于Linux的介绍及演示环境搭建。


2分钟速读

本章是大部分Linux参考书籍中的必备内容。对于每本与Linux相关的书籍,作者都会花一定的篇幅来介绍如何部署一个完整的系统。事实上,合理的规划,对于系统及后续的运行及改进都起着良性作用。如果规划过程混乱,那么往往会在后期的运维中深受其害。建议初学者在学习初期按照书中定义的规则去部署系统,这并不是必需的,但是可以让你培养一个良好的习惯。

由于本书是关于SQL Server on Linux的,所以搭建一个“可用”的Linux环境是读者跟随本书学习的必要条件。

本章将围绕“背景介绍”“前期规划”“基础框架”和“部署”这几个内容进行展开说明。

Linux是操作系统,而操作系统是由内核扩展而来的。Linux内核的诞生来源于托瓦斯,但是托瓦斯为何要创造这一操作系统,这有着历史的原因和机遇所在。当然,这一类的故事众说纷纭,有兴趣的读者可以自行搜寻相关信息进行阅读。

Linux一开始出来的成品其实很粗糙,它本身的内核也只是能跑在386的机器上。因为其开源共享的思想,作者将内核上传到互联网后,吸引了全球的相关人员对此进行修补创造,从而使一个脆弱的内核变得更强大。系统性能很大程度依赖于内核的版本,这并不是说,有了新的内核版本,我们就必须把系统的内核版本也升级到最新,这是不安全的。因为我们运维的最大目标就是保障业务系统的稳定,新的内核版本往往存在一定的漏洞或者需要改进的地方。

Linux架构继承于UNIX系统,故此它相当稳定强大。坊间就有个说法,UNIX的儿子是Linux。但UNIX不是开源系统,它大部分服务于小型机等机器。早期UNIX并不支持X86平台。目前在UNIX发行版中,有若干类的UNIX版本,早期的有Minux,现在有FreeBSD、MAC OS X等。

多年以来,我们被潜移默化地接受了一个观点:Linux系统比Windows系统安全高效。事实上真是这样吗?从安全漏洞爆发的情况来看,这两大操作系统是“旗鼓相当”的。作者认为 Windows 的安全漏洞反而更小。因为其封闭性导致了很多测试都需要进行黑盒测试方能体现。Linux不一样,它遵循GPL协议,它的源码都是公开的。这样它所有的东西都暴露在公众视角下,资深的工程师很容易通过分析源码来获取到漏洞信息。所以在安全体系方面,如果Linux不加固,那么事实上它会更加脆弱,甚至初级黑客都能轻易地登录你的系统,因为没有任何相对安全的配置可用于防范。在本章节后面会介绍如何使系统较为安全地运行。

提醒:

 

上面内容为作者个人观点,并不代表官方说法。

接下来我们先看看Linux家族,图2-1列出了到目前为止Linux各分支版本(或者叫发行版)的延伸图。

图2-1 Linux分支发行版延伸图

关于分支的具体介绍可参考维基中所提供的资料,读者可使用必应搜索“Linux distribution”。既然要使用Linux作为应用赖以生存的基础,我们应了解一下Linux系统的特色。Linux发展至今,其规模已经非常大,功能非常成熟,作为以SQL Server为主体的本书,不打算花太多精力在Linux的细节上,作者挑出以下几点供读者参考,它们包括“源码不受限”“任意适配”“内核稳定”“相对安全”和“运维高效”。

由于Linux是基于GPL协议的,因此它是一个自由软件个体。既然是自由的,那么各地的读者都可以下载其源码来阅读或者修改使你的应用变得更敏捷(这要求你有一定的源码编译能力)。Linux的内核源码,是用C来实现的。有兴趣研究源码的读者,必须了解C语言的基本功能。

Linux可以在绝大部分的X86架构的机器上运行。这使得公司可以购买大量的X86架构的服务器来运行应用,而不需要采用小型机等高价设备来运行。从而在成本上节省了开支。当然,对于读者而言,如果有一些尘封的机器,那么也可以将这些机器进行二次利用运行Linux。不过使用年代久远的机器服务来应用,本身的硬件是不稳定的,容易造成业务的不稳定在这种情况下,很大程度上并不是系统的问题,而是设备的问题。

Linux原生内核是很稳定的,很少出问题。当然,由于源码的开放性,会有不少人对其内核进行修改,增加新特性。如果使用第三方优化过的内核,那么很可能会造成业务的不稳定,但这部分并不在本书的讨论范围,在本书中如果没有特殊说明均指的是原生的内核环境,也就是分支版本中的默认内核版本。如果读者想在后面运行SQL Server,若Linux系统和内核版本太低的话,则需要升级或者更换操作系统。请注意,一些应用软件需要内核版本的支持。在选型的时候,一定要注意需要运行的应用是否能够符合当前内核的运行要求,以避免部署要推倒重来或者业务受到影响。

重点提醒,这里只是相对安全,从来就没有绝对可靠的系统。由于Linux的机制都是自定义模块化的,故此可以根据其实际需要进行对应的嵌套,如采取自带的防火墙进行加固;对应用账号采用独立应用账号的启动机制;采用NAT或VPN的方式访问内网中其他机器等。这些可以在系统内完成,而且配置过程并不复杂。相比之下,Windows配置这些规则就没那么自由了。

这点仅是从运维的角度来考虑。不得不承认,维护Linux比维护Windows要轻松很多。在Linux环境体系中,只需要提前制定好规则,写好对应的脚本和更新逻辑,即可应对成百上千台服务器。而Windows可能没那么方便。当然,这是过去的观点,随着Windows的逐步改善,新版本的Windows Server也强大了不少。另外值得一提的是,安装Linux的机器是可以不重启的,这点目前来说Windows还做不到。

提醒:

 

上述内容仅为作者个人观点和经验所谈,并不代表官方说法。

很多初学者为了表示自己的决心,将当前系统更换成Linux桌面版或者是双系统。这其实并不是好事,对于学习一门技能来说,怎么方便快速地上手才是关键。对于绝大部分Windows用户和Linux用户来说,安装成单系统并不总能让你更高效地学习对应的内容,除非你有很强的学习能力和自制力。如果日常习惯被扰乱,那么反而会影响你的积极性。读者可以考虑在Windows中使用虚拟软件(如VMware或Hyper-V等)运行Linux,本书就是在Windows Server上使用Hyper-V搭建多个装有Linux(Ubuntu)虚拟机进行演示的。接下来将介绍一下对系统的前期规划。

安装部署任何一套应用系统,都需要提前规划好各个部件的位置,包括项目类型、磁盘分区规划、IP规划、主机命名等,以便后面进行标准化运维。

在实际环境中,往往没有那么理想化。我们去一家已经成立了一段时间的公司进行维护管理时,很多环境已经定型,这就要求我们有一定的基本功和心态(这个很重要)去适应这个既定的环境,同时又不能有强迫症,要求所有的应用按照自己的定义路径来。这种做法很容易造成现有系统的不稳定,同时也会让新同事觉得反感,从而有意无意地阻碍你的工作推进。更合理的做法是小步快跑,首先让旧事物保持原风格,然后小幅度修改不合理的地方,对于新项目则要求按照新规矩来处理。

即使是整改,也不能一下子全部更改,尤其是年代久远的应用更加不可以操之过急,一定要在熟悉各个部件后,一部分一部分进行修正。如果你所在的企业已经制定好规则(不管合理与否),那么你要做的不是改成你自己的那一套,而是适应公司原有的风格,当然不合理的地方还要逐步改进。下面将针对上述几点(项目类型、磁盘分区规划、IP规划、主机命名)提出一些对应的标准参考,但是切记具体问题具体分析。

系统部署之前,一定要考虑清楚项目是属于哪种类型的,它是属于Web类型的前端应用还是诸如Java、C++、Golang等后端应用,是DB应用还是其他?明白了这些后,我们才清楚怎么去选型。由于本书是针对数据库的书籍,所以这里假定是以DB为基准的数据库服务。

数据库服务类型系统意味着是资源密集型系统,这对CPU、内存、I/O要求都很高,同时还要预估一定的空间给后续业务增长的需要,要使其能满足2~3年的需求。这个时间点并不是一成不变的。由于 10 年前,数据量并不像现在这样容易出现井喷,所以服务器的配置通常都能保持5~10年稳定运行。一些旧的项目,如果业务量不大,那么相安无事运作了六七年都是很正常的事,但是在现今企业环境下,由于数据的增长速度很多时候都是“失控”的,所以了解你的项目类型能够为容量预估提供有效的协助。不过很多时候我们确实无法预估新项目的真正增长情况,作者建议尽可能使用一些容易扩展的架构,以便快速响应资源不足的问题。

选型之初,很重要的一个指标是“预算”这需要看公司能接受多少价位的服务器,一般情况下,价格越高,配置越高,性能通常也越好。这里列出一个供读者参考的硬件配置表(详见表2-1),根据配置表进行填单即可。由于是数据库服务器,所以目前行业标配,新型服务器一般使用冷热分层技术,它们大多数都建议配置SSD用于热数据部分,SAS用于冷数据部分。但是这要求企业有存储设备,然而事实上很多企业并没有存储设备。之所以很多企业一开始没有存储设备是因为存储设备一直都比较昂贵,而且扩展性也不太好。目前基于分布式的存储技术已经越来越多,相信在不久的将来,分布式存储将比传统存储更具有优势和市场。

表2-1 数据库服务器参考配置

类 目 配 置
数据库 Intel 2620V4处理器\*2
6\*32GB DDR4内存
10\*2TB SATA(数据盘),2\*240GB SSD(缓存盘),2\*480GB SAS(系统盘)
● SAS/SATA Raid卡:Raid0、1、10、5、50、6、60;512MB Cache(LSI2208)
● 支持电池和超级电容,2\*GE
● 板载扩展模块SM211 2\*GE电口(I350),板载扩展模块SM231
2个万兆以太网口
2\*460W电源,无DVD,滑轨

数据库服务器最容易碰到的问题就是I/O瓶颈,而I/O瓶颈中最常见的就是I/O争用。尽可能减少I/O争用成为必须考虑的因素之一。在SQL Server中,资源争用最为紧张的是数据文件、日志文件及TempDB,但是当Linux上的SQL Server使用apt-get安装时,并没有太多可选内容,它默认放置的路径在/var中。这并不是我们建议的将数据文件和日志文件部署在独立目录的理想状态,安装完SQL Server之后,建议通过ALTER DATABASE命令对数据文件和日志文件迁移到独立的目录中,以减少I/O争用。

部署方案有很多种,表2-2列出了常见的3种方案,为避免读者混乱,这里选择方案二将datafile和datalog统一放在data目录中。本章接下来就会介绍分区方案中的具体细节。

表2-2  数据文件和日志文件的分区方案

方案

具 体 分 区

方案一

/

Swap

data

log

boot

方案二

/

Swap

data

boot

方案三

/

Swap

var

boot

注意:方案二是折中方案,但并非最优方案。

大多数的Linux分支版本在结构上是相似的,这使得我们只需要通一而知百。由于分支版本中大部分的操作也是相同的,不相同的只是一些细化部分,所以要使运维工作更流畅,就需要保证自己编写或者使用的运维工具在正确的前提下具有灵活性(或者扩展性)以便能够适应大部分的Linux分支版本。另外一点是不要认为一个企业只使用一种操作系统,在实际环境中,由于早期并没有运维人员的参与,生产环境和测试环境的系统可能五花八门,比如这个组件是Ubuntu上的,而另一个组件则是CentOS甚至是Debian或者是Oracle RedHat上的。这种情况很正常,读者如果碰到这样的环境,那么也不需要纠结或者害怕,因为Linux上的运维工作只稍微有差异。在操作指令差不多的情况下,考验你的是怎样让运维工作变得更舒服。

在运维之前,我们需要了解Linux系统下的组织架构,也就是框架。本书以Ubuntu为例,希望读者也以Ubuntu系统来研究学习,这样能让自己的工作和学习少走点弯路。这里先列出一个引导图(见图2-2),以便我们了解各个框架的具体用途。

关于目录结构的具体介绍可以查阅维基百科,使用必应搜索“Filesystem Hierarchy Standard”。

其他分支系统可能在目录结构上略微有差异,但这并不影响使用。请注意,上述内容是根目录(/)下所有文件的具体含义。每个目录下又有其他子目录,它们代表不同的含义。作为入门,读者并不需要深入了解每一个子目录的具体内容,记住大概的框架即可。

在日常工作中,我们经常需要操作的目录有var、usr、etc、tmp、opt等。请不要暴力删除根目录下所属的目录及其文件,以免造成异常。

图2-2 Linux框架图

Tips:

 

有一个目录需要特别注意,它就是 proc。这个目录保存着当前运行的程序文件句柄,如果你误删除了数据,那么程序还在写入的情况下,切勿关机和关闭应用,因为我们可以从proc中将数据捞回来。举个例子,假如你误删除了SQL Server中的一个数据文件,而数据文件此时处于打开状态,那么可以去到proc目录里,找到对应的PID号进行恢复操作,这一点跟Windows很不一样。误删除在Linux中并不是一件非常可怕的事,可怕的是你第一时间重启了系统。

对目录有了一定的认识后,我们还需要认识一个账号——root,它等同于Windows中的Administrator,具有最高权限。Ubuntu默认是不允许root登录的,所以在安装过程中,系统会要求你创建一个具有sudo的特权用户。这个用户的特殊性在后续章节中进行细致介绍。读者暂时将其理解为类似超级管理员权限的账号。

Tips:

 

我们一般会统一规定超级管理员的账号为:sysadmin。

对框架有了大概了解后,可以开始常规的安装过程。Ubuntu分为Desktop(桌面版)和Server(服务器版)。生产环境的平台不建议使用Desktop版本,因为Server版本是专门适配于企业环境的,所以它更加稳定和高效。另外在生产环境中不推荐使用非常新的版本,推荐使用以官方推荐的大版本为基础,再往上若干个小版本号即可。

下面我们将开始完整的安装过程,整个过程为半图形化的操作界面,读者大部分只需要点击Next即可,即使需要输入信息,里面的提示也是非常简单明了的。

在开始安装之前,先规划一些信息,本书使用的信息如表2-3所示。

表2-3 演示环境所用的Linux信息表

说 明
主机名
(注:读者也可根据实际情况和习惯命名,这里仅供参考)
地区-应用-IP(gzx-dbms-10111040)
gz:表示地区的简称(如“广州”)
x:表示Linux,如果是Windows,则用w来表示
dbms:表示微软(MS)数据库,而appjava表示java应用
10111040:IP地址
分区 /200GB为例 /boot 200MB
swap 8GB
/ 50GB
/data 剩余全部
系统版本 Ubuntu 16.04.3(SQL Server On Linux中对系统版本的要求起码从16开始)

下面我们进入具体的安装过程。下面是完整的步骤,所以截图会非常多。另外由于本书是入门书籍,有必要使用大量的步骤说明,所以本书将统一使用1)、2)这种方式代表步骤。

1)语言选择

在插入安装介质并启动成功之后,第一个需要用户响应的界面如图2-3所示。

图2-3 Linux语言选择

这是Ubuntu安装的第一个显示页面,它询问你选择什么语言来安装Ubuntu,这里选择默认的英语,按回车键进入图2-4所示的菜单选项。

2)选择安装选项

这一步如图2-4所示,读者在这里不需要了解其他选项,直接按回车键即可。

图2-4 光盘启动界面

按回车键后进入图2-5所示的语言选项页面。

3)语言选项

如图2-5所示,安装界面会询问使用哪种语言作为默认语言。请注意,这里应该选择标准的英文。

图2-5 选择语言

按回车键进入图2-6所示的页面。

图2-6 区域选项

4)区域选项

这里需要注意,当安装过程询问所处位置时,你需要按照业务的具体情况来选择,比如你的服务器在美国,那么默认即可;对作者来说,我们大部分的业务都在中国内地,所以应该选择接近内地的区域。如果你的服务器在内地,而读者又没有留意到这个细节问题,那么你的SQL Server时间默认就是美国时间。由于这跟我们常用的东八区是不一致的,所以此时需要使用键盘的“上下键”移动光标选择“Hong Kong”。

5)区域选择

如图2-7所示,选择“Hong Kong”即可。

图2-7 区域选择

6)配置键盘

如图2-8所示,键盘布局一般默认即可,除非你所在的国家或地区有特殊要求。

图2-8 配置键盘

如果需要配置,可以选择<Yes>进入图2-9所示的选项中进行选择,否则可以跳过。

图2-9 配置键盘

7)配置键盘布局

如图2-10所示,键盘布局并不需要过分关心,我们保持默认的配置即可。

图2-10 配置键盘布局

按回车键进入图2-11所示的网络选项页面。

8)配置网络

如图2-11、图2-12所示,首先确定主机名(hostname),在确定主机名时,注意目前SQL Server On Linux对主机名长度的限制为15个字符,但是其他应用可以依旧按照2.4.1节中的参考来命名。我们分配给这台主机名为gzx-dbms-10111040,IP需要提前规划好,这个在实际生产中,需要明确。如果是自己的虚拟机,则根据自己平时使用习惯,知道自己NAT网关是多大范围即可,比如你的虚拟机网关的IP地址为192.168.10.2,那么分配的IP可以是192.168.10.X的IP池。

图2-11是默认界面,图2-12是自定义之后的主机名。

图2-11 网络配置

图2-12 网络配置

Tips:

 

虚拟机的IP池对于每个环境都不太一样,如果不明白,此处主机名也可以不修改,也可以在后期修改。

使用Tab键移动光标,确定好之后,继续使用Tab键选择<Continue>,按回车键进入图2-5所示的账户选项页面。

9)配置用户及密码

如图2-13~图2-18所示,首先设置用户全名(见图2-13),这里我们输入之前协议好的账户名“sysadmin”,如图2-14所示。

图2-13 设置用户和密码

图2-14 设置用户和密码

随后进入登录账号配置选项界面(见图2-15),它和用户全名保持一致。

图2-15 设置用户和密码

此处需要你为刚才创建的“sysadmin”账号设置密码。请设置一个不太复杂,但自己又能记住的密码。至于密码的复杂度问题,后续使用工具记录来处理。

Tips:

 

随着运维机器的增多,靠记忆密码显然是不太适合的,作者推荐使用“keePass”。

在图2-16中单击<Continue>之后,进入图2-17所示的界面,此时你需要再次确认密码,输入完毕后,按Tab键选择<Continue>。

图2-16 设置用户和密码

图2-17 设置用户和密码

图2-18咨询是否要加密你的home目录,选择默认的<No>,我们基本上不会加密自己的home目录,除非公司有特殊要求。

图2-18 设置用户和密码

按回车键进入图2-19所示的时区确认选项页面。

10)配置时钟

在这里,询问你的位置是不是“亚洲/重庆”这个时区,同样根据你的业务所在区间进行选择,在这里默认就是重庆时区。读者可能会很困惑,为什么只有重庆或者上海时区,没有北京等时区,这是由tz database所决定的。

图2-19 配置时钟

Tips:

 

tz database是大部分Linux发行版使用的时区信息数据库,用来维护世界时区信息。

11)配置磁盘分区

如图2-20~图2-67所示,接下来将进入最复杂的一部分——磁盘分区。这是最需要细心和最烦琐的一步,如果你想偷懒,直接下一步即可;如果你有兴趣,那么请跟随着我们的脚步来实操。在图2-20中(原始界面)我们选择“Manual”(即手动),注意接下来的截图会非常多。

图2-20 磁盘分区(原始界面)

选择【Manual】并按回车键,如图2-21所示。

图2-21 磁盘分区(选择Manual)

选择【Manual】模式意味着后面的分区都要手动配置,这个过程需要有一定的经验,如果读者认为没有办法完成接下来的操作,则退回到图2-21所示界面选择默认选项(即第二项)按回车键即可。当你掌握一定技能之后,再做这方面的处理也是可以的。

接下来进入图2-22所示的界面,这里要将光标移动到对应的硬盘选项。请注意,如果系统是多硬盘,则在这里会显示多个硬盘。需要留心别选错硬盘,防止后面的事情变成无用功。也需要注意磁盘未必是SCSI的,但这并不影响你的安装使用,从英文“Virtual Disk”可以判断出这就是硬盘选项。

图2-22 磁盘分区(选择需要分区的磁盘)

在图2-23中,由于这是一个新的磁盘设备,所以直接选择<Yes>即可。

图2-23 磁盘分区(创建新磁盘设备)

此时,硬盘选项中多出了图2-24中的高亮子项(计算机显示为红色),选中按回车键即可。

图2-24 磁盘分区

接下来进入图2-25所示的界面。由于这是一个新的磁盘,所以选择第一项“Create a new partition”,即创建新分区。

图2-25 磁盘分区(创建新分区)

进入图 2-26,这里提示设置分区的最大容量。由于Ubuntu是先配置大小再指定分区目录,因此,我们先对boot分区进行配置。在前面已经介绍,我们需要分配200MB给boot分区,在这里输入200MB。

图2-26 磁盘分区(设置分区大小)

Tips:

 

这里的分区大小,支持MB、GB等单位。

在图2-26中单击<Continue>之后,进入图2-27所示的界面,选择分区类型,这里选择主分区即可。

图2-27 磁盘分区(分区类型)

Tips:

 

有关主分区、扩展分区、逻辑分区的概念,需要读者查阅一下资料,在这里不再赘述。

进入图2-28,询问分区是在可用空间的头部还是尾部,此处选择默认即可。然后进入图2-29所示界面。

在图 2-29 中,显示了磁盘分区对应的默认配置信息。此时并不需要过多了解下面的内容是什么,只需要知道怎么配置即可。

图2-28 磁盘分区(选择分区位置)

图2-29 磁盘分区(分区配置原始默认信息)

在图2-29中有两个地方需要修改,如表2-4所示。

表2-4  安装过程需要修改的地方

说  明

Use as

这里是指使用什么文件系统(系统分区请使用EXT4,数据文件分区使用XFS)

Mount point

挂载点,这里指的是跟boot|/|data指定的哪个目录进行关联

微软推荐使用的文件系统是XFS或是EXT4,可参考官网资料,必应搜索“Installation guidance for SQL Server 2017 on Linux”。其中系统要求如图2-30所示。

作者建议系统文件使用EXT4;而XFS具有强一致性,数据文件可以考虑使用它。

有关EXT4和XFS文件系统的说明,可以参见维基网站,分别使用必应搜索“ext4- Wikipedia”和“xfs-Wikipedia”即可。

图2-30 SQL Server On Linux系统要求

接下来继续对磁盘进行配置,如图2-31所示。这是对图2-29(原始界面)进行的修改。在图2-31中选择【Mount point】之后,进入图2-32。

图2-31 磁盘分区(boot分区配置)

在图2-32中我们选择第二项(/boot)。然后单击<Go Back>回到图2-33所示的界面。

图2-32 磁盘分区(分区挂载点)

配置完成之后,选择“Done setting up the partition”完成分区操作。如图2-33所示。

图2-33 磁盘分区(完成分区配置)

接着进入图2-34所示界面,从中可以看到此时/boot分区已经配置完毕,还有214.5GB的空间是空余的。

图2-34 磁盘分区(完成boot分区后的结果)

在图2-34中将光标移动到下一行,继续创建分区。如图2-35所示。

图2-35 磁盘分区(选择剩余空间进行分区)

在图2-35中对剩余空间(高亮部分)创建一个新的分区,如图2-36所示。

图2-36 磁盘分区(创建分区)

Linux与Windows很重要的一个区别是在它的安装过程中配置会非常多(Windows比较傻瓜式),其中一个地方就是要配置交换分区,这个分区很重要,后面会介绍。这里我们对交换分区分配8GB的空间作为交换分区,如图2-37所示。

图2-37 磁盘分区(创建swap分区)

进入图2-38,选择分区类型,这次我们对新分区使用逻辑类型。

在图2-38所示的界面中选择<Go Back>后,进入图2-39所示界面开始进行分区位置配置。同样保留默认选项即可。

图2-38 磁盘分区(选择分区类型)

图2-39 磁盘分区(配置分区位置)

选择分区位置后,与前面/boot的配置一样,进入图2-40所示的分区配置。

图2-40 磁盘分区(交换分区配置)

在图2-40中进入高亮部分后,出现图2-41所示界面,此处选择swap area也就是交换分区。

图2-41 磁盘分区(选择分区用途)

返回后可以看到图2-42所示界面,选择交换空间后,对应的项变得不太一样了。这里需要注意交换分区不需要设置挂载点。由于交换分区属于内存型管理技术,因此并不需要挂载到分区中。只需要声明它属于交换分区即可。

有关交换分区的说明,可以参考维基网站上的说明,必应搜索“Virtual memory-Wikipedia”。完成分区设置,选择图2-43高亮选项。

从图2-44中可以看到当前分区配置概览。

图2-42 磁盘分区(分区完成后)

图2-43 磁盘分区(完成分区配置)

图2-44 磁盘分区

对剩余未配置的空间进行分配,如图2-45所示。

图2-45 磁盘分区(剩余空间分区)

选择创建新分区,如图2-46所示。

图2-46 磁盘分区(创建新分区)

本例分配50GB的空间给新分区,如图2-47所示。

同样选择逻辑分区类型,如图2-48所示。

图2-47 磁盘分区(分配空间)

图2-48 磁盘分区

选择Beginning,如图2-49所示。

图2-49 磁盘分区

检查配置结果,如图2-50所示。

图2-50 磁盘分区

完成分区配置,如图2-51所示。

图2-51 磁盘分区

完成新分区后的结果,如图2-52所示。

图2-52 磁盘分区

继续分配剩余空间,如图2-53所示。

图2-53 磁盘分区

创建新分区,如图2-54所示。

图2-54 磁盘分区

如图2-55所示,这里将剩余的空间都用于data分区。

图2-55 磁盘分区

选择逻辑类型,如图2-56所示。

图2-56 磁盘分区

检查现状,如图2-57所示。

图2-57 磁盘分区

之前提到过对于数据目录,建议选择XFS文件系统,这里我们的选择如图2-58高亮部分所示。

图2-58 磁盘分区

检查结果,如图2-59所示。

图2-59 磁盘分区

由于data目录属于手动指定,所以需要对挂载点进行修改,我们把挂载点从/home中移走,如图2-60所示。

图2-60 磁盘分区(原始挂载点)

选择“Enter manually”进行手动配置,如图2-61所示。

请注意,这里的格式为“根分区+目录名”即“/data”,如图2-62所示。

图2-61 磁盘分区(选择挂载点)

图2-62 磁盘分区

完成配置,如图2-63所示。

图2-63 磁盘分区

检查最终结果,如图2-64所示。

分区完成,通过移动上下键选择最后一项(Finish partitioning and write changes to disk),完成分区,如图2-65所示。

图2-64 磁盘分区

图2-65 磁盘分区

此处提示你是否将更改写入磁盘,选择<Yes>,如图2-66所示。

图2-66 磁盘分区

再次确定,如图2-67所示。

图2-67 磁盘分区

12)包安装

此处询问是否使用HTTP proxy代理,直接默认按回车键即可。因为本书不需要用到HTTP proxy代理,如图2-68所示。

图2-68 配置包管理器

安装进度,如图2-69所示。

图2-69 配置apt进度条

如图2-70所示,接下来管理器会提示你采用哪种方式来管理系统更新。在实际系统运维中,追求的是稳定而不是最新,除非有重大漏洞,否则不建议升级或者更新,因此我们选择“No automatic updates”即不自动更新,另外由于是实验环境,所以也没有必要选择。

接下来的配置很重要,很多读者会在这里忽视某些选项。你需要将第一项和最后一项如图2-71所示进行选择,尤其是最后一项。如果没有选择,那么进入系统后还是需要再次进行安装,这是远程连接的服务“OpenSSH”。如果没有装这个组件,那么我们将无法在办公网络中远程连入服务器,这将给运维工作带来很大的困难。所以在安装的时候一定要将这个选项选择上!

图2-70 配置tasksel

图2-71 软件选择(选择需要安装的软件)

移动上下键,然后使用空格键即可选中,使[]中变成*号。

按Tab键选中<Continue>后按回车键,如图2-72所示。

图2-72 软件选择

图2-73所示为安装进度。

图2-73 选择和安装软件进度条

接下来会提示是否要将Grub引导器安装到硬盘中,这步是必需的。选择<Yes>,否则你每次重启后,系统都无法引导进入。如果Grub由于异常丢失了,那么也不用惊慌,在光盘中,有个救援模式,它可以重新安装Grub,其做法实质上跟Windows的MBR丢失后,用PE进行重建的方式差不多。如图2-74所示。

图2-74 安装引导器到磁盘

有关Grub的说明,可以查阅维基,必应搜索“GNU GRUB-Wikipedia”。最后开始进行实际安装,安装完毕后,提示重启,选择<Continue>即可。如图2-75所示。

图2-75 完成安装

图2-76所示为重启过程的部分截图。

图2-76 终端界面

完成这些后,就可以登录连到服务器,首先会出现图2-77所示的登录界面,提示你输入账号。

图2-77 登录界面

当你输入的账号密码通过系统校验后(密码不会显示),即可成功进入系统,如图2-78所示。

图2-78 登录后的系统界面

至此,一个基本的Linux系统安装完成并已登录成功。

安装好操作系统后,在开始安装SQL Server前,要先做3件事情:

表2-5列出了上面所述内容所需的命令及备注。

表2-5  使用系统前需要确定的信息及对应的命令

命令

备注

IP信息

ifconifg

本书使用Ubuntu,而CentOS 7会有所不同

网络连通性

ping

如果不通可能是DNS的问题

远程登录

ssh

建议使用PuTTY工具

下面演示一下如何操作。我们登入系统后,首先要查看一下IP是什么,它是否正确。因为我们在安装的时候,并没有配置IP地址,所以此时的IP地址肯定是一个由路由动态分配的IP地址,需要我们手动进行修改。

先查看动态分配的IP地址,如图2-79所示。

图2-79 查看IP地址

可以看到,路由动态分配的IP地址为10.11.10.211,由于本书规划的IP地址是10.11.10.40,所以需要手动修改,Ubuntu手动修改IP的步骤如下所示。

1)获取网关地址

读者必须记住这些操作,因为它们很关键也很常用。如图 2-80 所示,使用命令~$ route –n来获取:

图2-80 查看网关信息

可知当前系统的网关为10.11.10.1。

2)修改IP地址

接下来使用vi编辑这个文件。原文件信息如图2-81所示,修改后如图2-82所示。按一下键盘上的“i”键(小写模式),进入编辑文件状态,将文件中的内容改写成代码清单2-1中的内容,然后用“ECS”退出编辑模式,最后输入“:wq”保存和退出。请读者从现在开始熟悉vi/vim的使用方式,不仅在本书,在后续的学习和工作中都会大量使用它们。

代码清单2-1 修改IP地址

~$ sudo vi /etc/network/interfaces
iface eth0 inet static
address 10.11.10.40
gateway 10.11.10.1
netmask 255.255.255.0
dns-nameserver 202.96.128.166

修改前的内容如图2-81所示。

图2-81 原配置信息

修改后的内容如图2-82所示。

图2-82 新配置信息

提醒:

 

由于这部分的内容相对超前,所以读者未必总能顺利修改成功。如果修改失败,那么只需要保证网络能ping通即可,修改IP可留到后面章节处理。

3)重启

修改IP配置后我们先重启系统。修改IP地址实际上并不需要重启系统,但是为了保证没有异常,通常在实际工作中,上架调试阶段多重启不会有什么坏处。在业务上线后就不要频繁重启了。其实对Linux执行的任何操作,都是不需要重启的(除了内核升级)。使用下面命令进行重启:

~$ sudo reboot

重启后验证网络连通性,如图2-83所示。

图2-83 验证网络

可以看到,网络已经能ping通,我们的IP也已经改成10.11.10.40。接下来,需要进行远程连接。

由于很多时候Linux都不便于日常办公,所以不管服务器是否用Windows,大部分的运维人员都是使用Windows操作系统来办公,使用远程工具连接到Linux服务器进行运维工作。这里使用最简单的SSH客户端连接工具PuTTY。这个工具在读者早期学习中非常简便,而且是轻量级的。

注意:

 

下载这种远程客户端工具,由于安全性的原因,请勿去第三方软件网站下载,以免被挂马或者“全家桶”,请去PuTTY的官网地址下载。

下载后开始安装,如图2-84所示。

选择安装路径,这里为了简便起见,使用默认路径,如图2-85所示。作者习惯对于所有可选择路径的安装过程,都不会将其放到C盘(一般它是系统盘)。

图2-84 PuTTY安装界面

图2-85 安装路径

选择需要安装的功能,如图2-86所示,这里我们默认即可。

开始安装,如图2-87所示。

图2-86 功能选择

图2-87 安装进度

安装完成后,在图2-88所示的界面中去掉“View README file”这个勾选,然后单击Finish即可。

打开PuTTY,如图2-89所示。

图2-88 安装完成

图2-89 开始菜单搜索

打开后界面如图2-90所示。

这是远程连接的配置界面,非常简单,按图2-91所示进行配置即可。

图2-90 配置界面

图2-91 配置界面

单击open后弹出图2-92所示界面,选择“是”即可。

然后就会弹出图2-93所示的界面,这证明连接成功。

Tips:

 

常用的远程客户端工具还有 SecureCRT、Xmanage Enterprise、Remot Desktop Manager等,但是一般PuTTY已经够用。

图2-92 安全警告

图2-93 登录系统

本章简要地介绍了Linux的背景知识、部署规划和安装过程。由于搭建Linux环境是本书的前提条件,所以本章使用大量篇幅介绍如何安装Linux并配置成本书后续部分所需的环境。希望通过安装过程,能让读者拥有一个基础的Linux环境,从而开启SQL Server On Linux的旅程。

在安装结束后,还介绍了如何快速远程连入系统。这个步骤是整个运维/学习过程的初始阶段,通过这个操作,读者能远程控制操作系统,进入文本控制界面。

Linux世界属于文本命令行界面,无须进行图形化安装,请读者把在Windows上的图形化操作习惯尽快改过来。事实上,早期的Windows操作系统也是DOS文本操作界面的。只是后来封装得太GUI,从而让人觉得仅是“鼠标操作”而已。对于服务器运维,GUI会消耗大量的系统资源,同时对于批量化操作而言,GUI远不如脚本高效。

下一章将介绍如何在本章搭建好的Linux环境下安装SQL Server。


相关图书

SQL Server完全自学教程
SQL Server完全自学教程
Oracle PL/SQL程序设计(第6版)(上下册)
Oracle PL/SQL程序设计(第6版)(上下册)
PowerShell V3——SQL Server 2012数据库自动化运维权威指南
PowerShell V3——SQL Server 2012数据库自动化运维权威指南

相关文章

相关课程