MySQL 8 DBA基础教程
上QQ阅读APP看书,第一时间看更新

1.4 认识MySQL数据库

随着时间的推移,开源数据库管理系统逐渐流行起来。开源数据库管理系统之所以能在中低端应用中占据很大的市场份额,是因为开源数据库具有免费使用、配置简单、稳定性好、性能优良的特点。本书所介绍的MySQL数据库管理系统正是开源数据库中的杰出代表。为了便于讲解,后面将用MySQL代替MySQL数据库管理系统。

1.4.1 MySQL与开源文化

所谓“开源”,就是开放资源(Open Source)的意思,不过在程序界,更多人习惯理解为“开放源代码”的意思。开放源代码运动起源于自由软件和黑客文化,最早来自于1997年在加利福尼亚州召开的一次研讨会,参加研讨会的有一些黑客和程序员,也有来自于Linux国际协会的人员。在此会议上通过了一个新的术语“开源”。1998年2月,网景公司正式宣布开源其发布的Navigator浏览器的源代码,这一事件成为开源软件发展历史的转折点。

开源即是自由的化身,提倡一种公开的、自由的精神。软件开源的发展历程为软件行业及非软件行业带来了巨大的参考价值。虽然获取开发软件的源码是免费的,但是对源码的使用、修改却需要遵循该开源软件所作的许可声明。开源软件常用的许可证方式包括BSD(Berkley Software Distribution)、Apache Licence、GPL(General Public License)等,其中GNU的GPL为最常见的许可证之一,为许多开源软件所采用。

在计算机发展的早期阶段,软件几乎都是开放的,在程序员的社团中大家互相分享软件,共同提高知识水平。这种自由的风气给大家带来了欢乐和进步。在开源文化的强力带动下,产生了强大的开源操作系统Linux,其他还有Apache服务器、Perl程序语言、MySQL数据库、Mozilla浏览器等。

1.4.2 MySQL的发展历史

MySQL从开发人员手中的“玩具”变成如今流行的开源数据库,其过程伴随着产品升级和新功能的增加。随着MySQL 5.0被完美开发,已经很少有人将MySQL称为“玩具数据库”了。如今,MySQL又迎来了里程碑式的MySQL 8,我们可以用一张图来展示MySQL的发展历史,如图1-4所示。

图1-4 MySQL的发展历史

1.4.3 使用MySQL的优势

如今很多主流网站都选择MySQL数据库来存储数据,比如阿里巴巴的淘宝。那么,MySQL到底有什么优势,吸引了这么多用户?本小节将介绍选择MySQL数据库的原因。

1.技术趋势

互联网技术发展有一个趋势,从业人员都喜欢选择开源产品,再优秀的产品,如果是闭源的,在大行业背景下也会变得越来越小众。举一个例子,如果一个互联网公司选择Oracle作为数据库,就会牵扯进来技术壁垒,使用方会很被动,最基本、最核心的框架掌握在别人手里。和Oracle相比,MySQL是开放源代码的数据库,这就使得任何人都可以获取MySQL的源代码,并修正MySQL的缺陷。任何人都能以任何目的来使用该数据库,这是一款自由使用的软件,而对于很多互联网公司,选择使用MySQL是一个化被动为主动的过程,无须再因为依赖别人封闭的数据库产品而受牵制。

2.成本因素

任何人都可以从官方网站下载MySQL,社区版本的MySQL都是免费的,即使有一些附加功能需要收费,也是非常便宜的。相比之下,Oracle、DB2和SQL Server价格不菲,如果考虑到搭载的服务器和存储设备,那么成本差距是巨大的。

3.MySQL的跨平台性

MySQL不仅可以在Windows系列的操作系统上运行,还可以在UNIX、Linux和Mac OS等操作系统上运行。因为很多网站都选择UNIX、Linux作为网站的服务器,所以MySQL具有跨平台的优势。虽然微软公司的SQL Server数据库是一款很优秀的商业数据库,但是其只能在Windows系列的操作系统上运行。

4.性价比高,操作简单

MySQL是一个真正的多用户、多线程的SQL数据库服务器,能够快速、高效、安全地处理大量的数据。MySQL和Oracle的性能并没有太大的区别,在低硬件环境下,MySQL分布式的方案同样可以解决问题,而且成本比较经济,从产品质量、成熟度、性价比来讲,MySQL都是非常不错的。另外,MySQL的管理和维护非常简单,初学者很容易上手,学习成本较低。

5.MySQL的集群功能

当一个网站的业务量发展得越来越大,Oracle的集群已经不能很好地支撑整个业务时,架构解耦势在必行。这意味着要拆分业务,继而要拆分数据库,如果业务只需要十几个或者几十个集群就能承载,Oracle就可以胜任,但是大型互联网公司的业务常常需要成百上千的机器来承载,对于这样的规模,MySQL这样的轻量级数据库更合适。

以上是MySQL数据库的一些基本优势,简而言之,MySQL好用、开源、免费,使其深受中小企业欢迎。

1.4.4 MySQL集群

MySQL集群(Cluster)颇有“三个臭皮匠,顶个诸葛亮”“众人拾柴火焰高”的意思,是MySQL适用于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster存储引擎,允许在一个集群中运行多个MySQL服务器。目前能够运行MySQL Cluster的操作系统有Linux、Mac OS X和Solaris。

1.MySQL Cluster概述

MySQL Cluster是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的Cluster。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件都有自己的内存和硬盘,因此不存在单点故障。

MySQL Cluster由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器、NDB Cluster的数据节点、管理服务器以及(可能)专门的数据访问程序。Cluster中这些组件的关系如图1-5所示。

图1-5 MySQL集群体系

所有的这些节点构成一个完整的MySQL集群体系。数据保存在“NDB存储服务器”的存储引擎中,表(结构)则保存在“MySQL服务器”中。应用程序通过“MySQL服务器”访问这些数据表,集群管理服务器通过管理工具(ndb_mgmd)来管理“NDB存储服务器”。通过将MySQL Cluster引入开放源码世界,MySQL为所有需要它的人员提供了具有高可用性、高性能和可缩放性的Cluster数据管理。

2.MySQL Cluster基本概念

NDB是一种“内存中”的存储引擎,它具有可用性高和数据一致性好的特点。

MySQL Cluster能够使用多种故障切换和负载平衡选项配置NDB存储引擎,但在Cluster级别上的存储引擎上做这个最简单。MySQL Cluster的NDB存储引擎包含完整的数据集,仅取决于Cluster本身内的其他数据。

目前,MySQL Cluster的Cluster部分可独立于MySQL服务器进行配置。在MySQL Cluster中,Cluster的每个部分被视为一个节点。

  • 管理(MGM)节点:这类节点的作用是管理MySQL Cluster内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。MGM节点是用命令mdb_mgmd启动的。
  • 数据节点:这类节点用于保存Cluster的数据。数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,就有4个数据节点。不过没有必要设置多个副本。数据节点是用命令ndbd启动的。
  • SQL节点:这是用来访问Cluster数据的节点。对于MySQL Cluster,客户端节点是使用NDB Cluster存储引擎的传统MySQL服务器。通常,SQL节点是使用命令mysql-ndbcluster启动的,或将ndbcluster添加到my.cnf后使用mysqld启动。

管理服务器(MGM节点)负责管理Cluster配置文件和Cluster日志。Cluster中的每个节点从管理服务器检索配置数据,并请求确定管理服务器所在位置的方式。当数据节点内出现新的事件时,节点将关于这类事件的信息传输到管理服务器,然后将这类信息写入Cluster日志。

此外,可以有任意数目的Cluster客户端进程或应用程序,它们分为以下两种类型。

  • 标准MySQL客户端:对于MySQL Cluster,它们与标准的MySQL没有区别。换句话说,能够从用PHP、Perl、C、C++、Java、Python、Ruby等编写现有MySQL应用程序访问MySQL Cluster。
  • 管理客户端:这类客户端与管理服务器相连,并提供了启动和停止节点、启动和停止消息跟踪(仅调试版本)、显示节点版本和状态、启动和停止备份等的命令。