MySQL简介
# MySQL
# 概述
MySQL 是最流行的关系型数据库软件之一,由于其体积小、速度快、开源免费、简单易用、维护成本 低、社区活跃等,在集群架构中易于扩展、高可用,因此深受开发者和企业的欢迎。
- 开放源代码的关系型数据库管理系统,采用了GPL(GNU General Public License) 协议,你可以修改源码来开发自己的MySQL系统
- 支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB ,64位系统支持最大的表文件为 8TB 。
- 使用标准的SQL数据语言形式。可以允许运行于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP和Ruby等
# MySQL发展史重大事件
MySQL的历史可以说就是整个互联网的发展史。互联网业务从社交领域、电商领域到金融领域的发展,推动着 应用对数据库的需求提升,对传统的数据库服务能力提出了挑战。高并发、高性能、高可用、轻资源、 易维护、易扩展的需求,促进了MySQL的长足发展。
# MySQL分支
MySQL从最初的1.0、3.1到后来的8.0,发生了各种各样的变化。被Oracle收购后,MySQL的版本演化 出了多个分支,除了需要付费的MySQL企业版本,还有很多MySQL社区版本。还有一条分支非常流行 的开源分支版本叫Percona Server,它是MySQL的技术支持公司Percona推出的,也是在实际工作中经 常碰到的。Percona Server在MySQL官方版本的基础上做了一些补丁和优化,同时推出了一些工具。另 外一个非常不错的版本叫MariaDB,它是MySQL的公司被Oracle收购后,MySQL的创始人Monty先 生,按原来的思路重新写的一套新数据库,同时也把 InnoDB引擎作为主要存储引擎,也算 MySQL 的 分支。
# MySQL VS Oracal
到目前为止(2022年3月),Oracle和MySQL是世界市场占比最高的两种数据库。(查看DBMS最新排名 (opens new window)以及对应的走势图 (opens new window))
在互联网高速发展之前,Oracle基本是垄断的,更多的是有钱的大型跨国企业的使用,他们对费用不敏感,但是对性能要求以及安全性有更高的要求(那期间流行IOE,IBM的服务器,Oracle数据库,EMC存储设备。都是有钱的公司产品采购,例如银行、电信、石 油、证券等大企业);
随着互联网的高速发展,MySQL由于其体积小、速度快、总体拥有成本低,可处理上千万条记录的大型数据库,尤其是开放源码 这一特点,使得很多互联网公司、中小型网站选择了MySQL作为网站数据库(Facebook,Twitter, YouTube,阿里巴巴/蚂蚁金服,去哪儿,美团外卖,腾讯)。可以说MySQL,互联网企业使用第一,目前的趋势是去Oracle,拥抱MySQL。
# 关于MySQL版本
从上面的MySQL发展历史和分支可以知道,MySQL从5.7
版本直接跳跃发布了8.0
版本。MySQL从 5.x 开始有主要支持两个数据库引擎 MySAML 和 InnoDB,其中InnoDB是默认存储引擎。MySQL 8.x 之后,在功能上做了显著的改进与增强,开发者对MySQL的源代码进行了重构,废弃了MySAML并对InnoDB进行了优化,InnoDB不仅支持事务还提高了查询效率。MySQL 8.x可以说是个的里程碑版本。
出于稳定、交流社区等等原因,目前企业中应用比较多的版本依旧是使用5.x版本,相信在未来,企业会逐步甚至全面拥抱8.x 的版本。本博客后续的笔记基本基于5.7.28
的版本,如果使用了8.x版本会标识出来。
# 安装
网上安装教程很多,有需要自行百度、谷歌,这里推荐两篇:
# 中间件
MySQL分库分表中间件:
# 运维工具
- Yearning (opens new window):MYSQL SQL语句审核平台。提供查询审计,SQL审核,SQL回滚,自定义工作流等多种功能。
- canal (opens new window):阿里巴巴开源的基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。
- DataX (opens new window):是阿里云 DataWorks数据集成 (opens new window) 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。
- percona-toolkit (opens new window):MySQL一个重大的第三方衍生产品,它是一组命令的集合一组高级命令行工具的集合,可以查看当前服务的摘要信息,磁盘检测,分析慢查询日志,查找重复索引,实现表同步等等。
- Lepus (opens new window):曾用名MySQLMTOP,一个由Python+PHP开发的开源MySQL企业监控系统。该系统由Python实现多进程数 据采集和告警,PHP实现Web展示和管理
- ELK (opens new window):ELK 最早是 Elasticsearch(简称ES)、Logstash、Kibana 三款开源软件的简称,三款软件后来被同一公司收购,并加入了Xpark、Beats等组件,改名为Elastic Stack,成为现在最流行的开源日志解决方案,虽然有了新名字但大家依然喜欢叫ELK,现在所说的ELK就指的是基于这些开源软件构建的日志系统。
- Prometheus (opens new window):目前最热门的分布式监控系统。Prometheus完全开源的,被很多云厂商(架构)内置,在这些厂商(架构)中,可以简单部署。还可以用来监控整个云基础架构设施。比如DigitalOcean或Docker都使用普罗米修斯作为基础监控。