跟老男孩学Linux运维:MySQL入门与提高实践
上QQ阅读APP看书,第一时间看更新

第2章 MySQL数据库入门知识介绍

2.1 MySQL介绍

2.1.1 MySQL简介

前面已经介绍过,MySQL属于传统的关系型数据库产品,其开放式的架构使得用户的选择性很强,而且随着技术的逐渐成熟,MySQL支持的功能也越来越多,性能也在不断地提高,对平台的支持也在增多,此外,社区的开发与维护人数也很多。当下,MySQL因为其功能稳定、性能卓越,且在遵守GPL协议的前提下,可以免费使用与修改,因此深受用户喜爱。

我们知道,关系型数据库的特点是将数据保存在不同的表中,再将这些表放入不同的数据库中,而不是将所有的数据统一放在一个大仓库里,这样的设计加快了MySQL的读取速度,而且它的灵活性和可管理性也得到了很大的提高。访问及管理MySQL数据库的最常用标准化语言为SQL——结构化查询语言。SQL使得对数据库进行存储、更新和存取信息的操作变得更加容易。例如,你能用SQL为一个网站检索产品信息及存储用户信息、博文、帖子等,有关SQL的知识后文会详细讲解。

2.1.2 MariaDB数据库的诞生背景介绍

自甲骨文公司收购MySQL之后,MySQL在商业数据库与开源数据库领域的市场占有份额都跃居第一,这样的格局引起了部分业内人士的担忧,因为商业数据库的老大有可能将MySQL闭源,为了避免Oracle将MySQL闭源,而无开源的类MySQL数据库可用,MySQL社区采用了分支的方式——MariaDB数据库就这样诞生了,MariaDB是一个向后兼容的数据库产品,可能会在以后替代MySQL,其官方地址为https://mariadb.org/。不过,这里还是建议大家选择更稳定且使用更广泛的MySQL数据库,可以先测试MariaDB数据库,等使用的人员多一些,社区更活跃后再正式考虑使用也不迟。

2.1.3 为什么选择MySQL数据库

毫无疑问,选择MySQL数据库已是既成事实,绝大多数使用Linux操作系统的互联网网站都在使用MySQL作为其后端的数据库存储方式,从大型的BAT门户到电商平台、分类门户等无一例外。那么,MySQL数据库到底有哪些优势和特点,让大家不约而同地选择它呢?

原因可能有以下几点。

MySQL性能卓越,服务稳定,很少出现异常宕机的情况。

MySQL开放源代码且无版权制约,自主性强,使用成本低。

MySQL历史悠久,社区及用户非常活跃,遇到问题,可以寻求帮助。

MySQL软件体积小,安装使用简单,并且易于维护,安装及维护成本低。

MySQL品牌口碑效应好,使得企业无须考虑即可直接用之。

LAMP、LNMP、LNMT(tomcat)等流行Web架构都含有MySQL。

MySQL支持多种操作系统,提供了多种API,支持多种开发语言,特别是对流行的Java、Python、PHP等语言都有很好的支持。

提示:官方给出的使用MySQL理由见http://www.mysql.com/why-mysql/topreasons. html。

2.2 MySQL数据库分类与版本升级

MySQL数据库的官方网站为http://www.mysql.com,其发布的MySQL版本采用双授权政策,和大多数开源产品的路线一样,MySQL数据库也有社区版和企业版之分,且这两个版本又各自分了四个版本依次发布,这四个版本分别为:Alpha版、Beta版、RC版和GA版本

2.2.1 MySQL数据库企业版与社区版的区别

1.MySQL数据库企业版介绍

MySQL企业版由MySQL AB公司内部专门的人员负责开发及维护,但同时也会吸纳社区人员编写的优秀代码及算法,并且由他们严格按照软件测试流程对这些采纳的代码进行测试,确定没有问题之后才会进行发布。简单地说,MySQL企业版是由MySQL公司内部发布的,它参考了社区版的先进代码功能和算法,是MySQL公司的赢利产品,需要付费才能使用及提供服务支持,稳定性和可靠性无疑都是最好的,当然了,企业腰包得够鼓才能买得起。据老男孩了解的信息,某知名分类门户网站2008年就购买过MySQL企业版,价格不比那些闭源的商业数据库便宜,也是大几十万。

2.MySQL数据库社区版介绍

MySQL社区版则是由分散在世界各地的MySQL开发者、爱好者以及用户参与开发与测试的,包括软件代码的管理、测试工作,也是他们在负责。社区也会设立BUG汇报机制,收集用户在使用过程中遇到的BUG情况,相比于企业版,社区版的开发及测试环境没有那么严格。

3.MySQL数据库企业版与社区版的区别

MySQL是成熟产品,企业版与社区版之间在性能方面相差不大。它们的区别主要集中在以下几个方面。

企业版本组织管理与测试环节控制更严格,稳定性更好。

企业版不遵守GPL协议,社区版遵守GPL协议,可以免费使用!

使用企业版后可以购买相关的服务,比如,享受7×24小时的技术支持以及定时打补丁等服务,但是用户必须为此支付服务费用。社区版的服务质量与时效性等就无法与企业版相比了。

社区版本的维护服务只能靠社区提供,其无法像企业版本那样获得故障及补丁解决服务,但是,使用社区版是完全免费的方式。

2.2.2 MySQL数据库的四种发布版本介绍

前面已经阐述过,MySQL的版本发布采用的是双授权政策,即分为社区版和企业版,而这两个版本又各自分为四个版本,依次发布:Alpha版、Beta版、RC版和GA版本

这四种发布版本之间的说明及区别具体如下。

(1)Alpha版

Alpha版一般只在开发的公司内部运行,不对外公开。主要是开发者自己对产品进行测试,检查产品是否存在缺陷、错误,验证产品功能与说明书、用户手册是否一致。MySQL属于开放源代码的开源产品,因此需要世界各地的开发者、爱好者和用户参与软件的开发、测试和手册编写等工作。自然也就必须对外公布此版本的源码和产品了,以方便他人参与开发或测试工作,甚至编写与修改用户手册。

(2)Beta版

Beta版一般是完成功能的开发和所有的测试工作之后的产品,不会存在较大的功能或性能上的BUG,通常会邀请或提供给用户体验与测试,以便更全面地测试软件的不足之处或存在的问题。

(3)RC版

RC版属于生产环境发布之前的一个小版本或称候选版,是根据Beta版本的测试结果,收集到的BUG或缺陷等信息,进行修复和完善之后的一版产品。

(4)GA版

GA版是软件产品正式发布的版本,也称生产版本的产品。一般情况下,企业的生产环境都会选择GA版本的MySQL软件,用于真实的生产环境中。偶尔有个别大型企业会为追求新功能驱动而牺牲稳定性使用其他版本,但只是个例。

既然有四种发布版本,那么如何进行选择呢?

MySQL AB官方网站会把各种数据库版本都上传到网站,以供不同的用户下载,主要是MySQL数据库是属于开放源代码的数据库产品,其鼓励全球的技术爱好者参与研发、测试、文档编写和经验分享,甚至还包括产品的发展规划。对于Development版本、Alpha版本和Beta版本,应禁止在生产环境中使用,因为很可能会存在重大的问题或是有些功能未被完全实现。绝大多数情况下,RC版本也是不允许使用在生产环境中的,毕竟这是一个在GA版本之前(也即生产版本发布之前)的小版本。另外,对于MySQL数据库GA版本,也需要慎重选择,开源社区的产品毕竟不是经过严格的测试工序完成的,是全球开源技术人员自愿完成的,会存在比商业产品稳定性弱的缺陷。更严格的选择后面会有进一步的说明。

国内门户提供的MySQL下载地址:http://mirrors.sohu.com/mysql/

2.3 MySQL数据库软件的命名介绍

MySQL数据库软件的版本号是由3个数字和一个后缀组成。例如,mysql-5.6.40. tar.gz的版本号,其数字的含义分别如下。

第1个数字(5)是主版本号,描述了文件格式。所有版本5的发行都有相同的文件格式。

第2个数字(6)是发行级别。主版本号和发行级别组合到一起便构成了发行序列号。

第3个数字(40)是指在此发行系列的版本号,随每个新分发版而递增。通常你需要已经选择的发行(release)的最新版本(版本)。

每次更新之后,版本字符串的最后一个数字会递增。如果是相对于前一个版本增加了新功能或有微小的不兼容性,那么字符串的第二个数字会递增。如果文件格式改变,那么第一个数字会递增。

至于版本号中的后缀,那是用来显示发行的稳定性级别的,通过这一系列后缀显示如何改进稳定性。可能的后缀有:alpha版、beta版、rc版、没有后缀(稳定版或GA版)。这几个后缀对应的说明可参见2.2.2节。

2.4 MySQL产品路线

2.4.1 MySQL产品路线变更历史背景

早期,MySQL也是遵循版本号逐渐增加的方式发展,格式形如mysql-X.XX.XX.tar. gz,例如,老DBA都非常熟悉的生产场景下的版本:MySQL 4.1.7、MySQL 5.0.56等。

近几年,为了提高MySQL产品的竞争优势,提高性能、降低开发维护成本等,也为了方便企业用户更精准地选择合适的版本,MySQL在发展到5.1系列之后,又重新规划为三条产品线。下面一起来看看。

2.4.2 MySQL-5.0.xx到MySQL-5.1.xx的产品线

第一条产品线为:MySQL 5.0.xx升级到MySQL 5.1.xx,这条产品线继续完善与改进其用户体验和性能,同时又增加了新功能,可以说这条路线是MySQL早期产品的延续,这一系列产品的发布情况及历史版本如下。

MySQL 5.1是当前的稳定发布系列版本。只针对漏洞修复重新发布;没有增加会影响稳定性的新功能。

MySQL 5.0是前一个稳定发布系列版本。只针对严重漏洞修复和安全修复重新发布;没有增加会影响该系列的重要功能,并且官方也很快停止了对其的支持。

MySQL 4.0和MySQL 3.23是旧的稳定发布系列版本。该版本建议不再使用,并且官方已经停止了对其的支持。

目前Red hat linux 7以及CentOS 7以前的官方yum源里附带的还是MySQL 5.1的版本,但是在绝大多数的大型互联网企业的重要场景里,已经罕见5.1版本了,当下,本系列的产品线已经发布到了5.2系列(非稳定版)。

2.4.3 MySQL-5.4.xx到MySQL-5.7.xx产品线

为了更好地整合MySQL AB公司社区和第三方公司开发的新存储引擎,以及吸收新的实现算法等,从而更好地支持SMP架构并提高性能,第二条产品线做了大量的代码重构。版本编号从5.4.xx开始,最新稳定版为5.7.xx,目前发展到了6.0.xx和8.0.xx(非稳定版)。

据官方讲,MySQL 5.6是有史以来最好的版本,是世界上使用最广的开源数据库,它提供了一套新的、先进的功能,使我们能够建设新一代基于网络和嵌入式的应用和服务。

在企业中,目前是MySQL 5.5和MySQL 5.6并存的主流时代,MySQL 5.7是未来,本书的讲解主要以MySQL 5.6大版本为主,同时兼顾MySQL 5.5,并尽可能兼顾MySQL 5.7。

2.4.4 MySQL-Cluster-6.0.xx到MySQL-Cluster-7.5.xx产品线

为了更好地推广MySQL Cluster版本,提高MySQL Cluster的性能和稳定性,改进和增加功能,使其对Cluster存储引擎提供更有效的支持与优化,因此研发了第三条产品线。该产品线的版本号为6.0.xx,目前已发展到7.5.xx。

图2-1为MySQL各版本的发展参考图,对应时间一般为最后更新时间,而非发布时间。

图2-1 MySQL的各版本发展的参考图

2.5 生产场景中如何选择MySQL版本

2.5.1 MySQL数据库发布特性

商业软件研发和发行公司,都会提供经过完整测试,甚至多种用户环境模拟测试及试用之后,才推出的稳定的生产环境版本,这也使得技术人员对于商业数据库软件的选择,一般不需要有太多的顾虑与考虑。

在大公司(像BAT等),对于数据库软件版本的选择,也会有相关人员详细阅读其新功能或改进点知识,并且会做很多相关的研究和测试工作,最后才逐步上线,而且是从边缘业务慢慢过渡到核心业务。

目前,对于MySQL的企业版本,需要注册账号才可以下载到编译过的安装包或源代码,而且账号只有一个月的有效期;社区版本的MySQL产品,则不需要注册账号,只要填写一些信息即可转到下载页面。

2.5.2 企业生产场景选择MySQL数据库的建议

企业生产场景下,数据库是重中之重,因此选择MySQL数据库一定要慎重。下面是给出的一些选择建议。

1)一定要选稳定版版本,即选择开源的社区版的稳定版。

2)产品线选择,建议选择第二条产品线中的5.5或5.6版本。目前互联网公司主流版本是5.5和5.6。

3)选择MySQL数据库至少发布半年以上的稳定版本。

4)要尽可能选择前后几个月没有大的BUG修复的版本,而不是大量修复BUG的集中版本。

5)最好选择向后较长时间没有更新发布的版本。

6)要考虑开发人员开发程序使用的版本是否兼容你所选的版本。

7)首先作为内部开发测试数据库环境,测试运行几个月的时间。

8)优先对企业非核心业务采用新的数据库稳定版本软件。

9)向高手请教或者在及技术氛围好的群里和大家一起交流,使用真正的高手用过的、好用的且BUG少的GA版本产品。

经过上述工序之后,若是没有重要的功能BUG或性能瓶颈,则可以开始考虑作为任何业务数据服务的后端数据库软件了。

上述为选择的流程建议,实际上很多中小公司都会直接选择GA版的最新版本,如果业务中使用的功能比较单一,且数据和访问量不是很大,一般也不会有什么大问题,上述选择的建议,是以大规模大数据量高并发,使用数据库功能较多的场景为前提进行讲解的,对于这类场景,一定要慎重选择。

参考资料:

http://baike.baidu.com/view/24816.htm

http://baike.baidu.com/view/2521908.htm

2.6 章节试题

1)在企业中如何正确选择MySQL的版本?

2)请描述MySQL的不同产品路线及发展情况?

3)MySQL与MariaDB的基本区别是什么?