MySQL产品介绍

来源:互联网 发布:紫川软件 编辑:程序博客网 时间:2024/05/21 05:37

MySQL产品介绍

1、发展历史

MySQL数据库的发展可以概括为三个阶段:
  • 初期开源数据库阶段
  • Sun MySQL阶段
  • Oracle MySQL阶段

2、平台及软件支持

支持各种平台,常搭配Linux。组成的LAMP(Linux- Apache-MySQL-PHP)网站架构是目前国际流行的网站架构方案。

支持平台:
Windows/Linux/Solaris/Aix/Apple OS/HP-UX
x86_32/x86_64

价格及商业支持:
主要分为社区版和企业版
MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。
MySQL Enterprise Edition 企业版本,需付费,可以试用30天。

企业版收费方式:年度订阅(每服务器)
MySQL Standard Edition:2000美元
MySQL Enterprise Edition:5000美元
MySQL Cluster Carrier Grade Edition:10000美元

版本:
5.0/5.1/5.5/5.6/5.7/8.0

3、体系结构

MySQL体系结构


MySQL由以下几部分组成:
连接池组件、管理服务和工具组件、SQL接口组件、查询分析器组件、优化器组件、缓冲组件、插件式存储引擎、物理文件。

InnoDB存储引擎体系架构


  • InnoDB存储引擎内存由以下几个部分组成:缓冲池(buffer pool)、重做日志缓冲池(redo log buffer)以及额外的内存池(additional memory pool),分别由配置文件中的参数innodb_buffer_pool_size和innodb_log_buffer_size的大小决定。

Mysql 进程结构

Mysql不像Oracle那样是通过多进程来完成其功能的。默认情况下,InnoDB存储引擎的后台线程有7个:
4个IO thread,
1个master thread,
1个锁(lock)监控线程,
1个错误监控线程;
在InnoDB Plugin版本开始增加了默认IO thread的数量,默认的read thread和write thread分别增大到了4个,并且不再使用innodb_file_ io_threads参数,而是分别使用innodb_read_io_threads和innodb_write_io_threads参数。

4、架构选择

主从复制 

半同步复制
MySQL支持以下两种半同步复制方式:
  • AFTER_SYNC(5.7): 日志复制到Slave之后,Master再commit。
  • AFTER_COMMIT(5.5、5.6):Master commit之后再将日志复制到Slave。
主从复制原理
  • 主服务器把数据更新记录到二进制日志中
  • 从服务器把主服务器的二进制日志拷贝到自己的中继日志(Relay Log)中
  • 从服务器重做中继日志中的事件,把更新应用到自己的数据库上


主从复制+读写分离

  • 客户端通过Master对数据库进行写操作,slave端进行读操作,并可进行备份。Master出现问题后,可以手动将应用切换到slave端。
优点:
  • 防止单节点主机的数据丢失,提高数据的安全性。
  • 通过主从复制实现数据的异地备份,可以定期的将数据从主库复制到从库。
  • 提高了数据库的可用性,主从复制实现了主库和从库之间数据的同步。主机宕机时,可以切换到从服务器上,保障数据库的运行(该过程可能会带来数据的不一致,但是MySQL5.5版本中提供了一种半同步的复制方式,一定程度上提高了数据的安全性)。
  • 实现读写分离,减少主服务器的负担,实现负载均衡。
  • 可以在从库上做数据备份,不影响主库的正常运行(如使用mysqldump备份时会加表锁)。
  • 可以在从库上做数据统计和数据报表等,可以减轻主库的访问压力。
缺点:
  • 依赖于半同步复制,如果半同步复制退化为异步复制,数据一致性无法得到保证;
  • 需要额外考虑haproxy、keepalived的高可用机制。

MHA+多节点集群

  • MHA软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)
  • MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上
  • MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master
  • 整个故障转移过程对应用程序完全透明
优点:
  • 可以进行故障的自动检测和转移;
  • 可扩展性较好,可以根据需要扩展MySQL的节点数量和结构;
  • 相比于双节点的MySQL复制,三节点/多节点的MySQL发生不可用的概率更低
缺点:
  • 至少需要三节点,相对于双节点需要更多的资源;
  • 逻辑较为复杂,发生故障后排查问题,定位问题更加困难;
  • 数据一致性仍然靠原生半同步复制保证,仍然存在数据不一致的风险;
  • 可能因为网络分区发生脑裂现象;


5、功能方面

  • MySQL区别于其他数据库的最重要的特点就是其插件式的表存储引擎(存储引擎是基于表的,而不是数据库的)。MySQL插件式的存储引擎架构提供了一系列标准的管理和服务支持,这些标准与存储引擎本身无关,可能是每个数据库系统本身都必须的,如SQL分析器和优化器等,而存储引擎是底层物理结构的实现,每个存储引擎开发者都可以按照自己的意愿来进行开发。
  • 在SELECT和查询的WHERE子句中,提供完整的操作符和函数支持
  • 按照标准SQL的要求,支持表别名和列别名
  • MySQL的SHOW命令可用于检索关于数据库、数据库引擎、表和索引的信息。EXPLAIN命令可用于确定优化器处理查询的方式。
MySQL5.5新特性
  • 默认存储引擎更改为InnoDB
  • 首次支持半同步复制
  • 多核性能提升
MySQL5.6新特性
  • undo log可从共享表空间分离
  • 支持GTID
  • 支持基于库的多线程复制
  • 支持online DDL
  • InnoDB死锁信息可以记录到 error 日志
  • 支持延时复制,可以让slave跟master之间控制一个时间间隔,方便特殊情况下的数据恢复
MySQL5.7新特性
  • 支持多源复制
  • 支持基于组提交的并行复制
  • 支持动态修改buffer pool size
  • 支持在线调整GTID
  • 支持undolog的在线收缩

6、适用场景

Web网站系统

  • Web站点是mysql最大的客户群,也是mysql发展史上最为重要的支撑力量。
  • Mysql之所以成为web站点开发者们最青睐的数据库管理系统,是因为mysql数据库的安装配置都非常简单,其使用过程中的维护也不像多大型商业数据库管理系统那么复杂,而且性能出色。还有一个非常重要的原因,就是mysql是开放源代码的,完全可以免费使用。
  • MySQL中的InnoDB存储引擎是为了支持OLTP系统(On-Line Transaction Processing,联机事务处理系统)而设计的一个引擎,他支持事务的ACID

日志记录系统

  • MySQL数据库的插入和查询性能都非常的高效,如果设计地较好,在使用MyISAM存储引擎的时候,两者可以做到互不锁定,达到很高的并发性能。所以,对需要大量的插入和查询日志记录的系统来说,MySQL是非常不错的选择。比如处理用户的登录日志,操作日志等,都是非常适合的应用场景。

数据仓库系统

  • 随着现在数据仓库数据量的飞速增长,我们需要的存储空间越来越大。数据量的不断增长,使数据的统计分析变得越来越低效,也越来越困难。
  • 解决上述问题主要有如下三个思路:
    • 第一个是采用昂贵的高性能主机以提高计算性能,用高端存储设备提高I/O性能,效果理想,但是成本非常高;
    • 第二个就是通过将数据复制到多台使用大容量硬盘的廉价pcserver上,以提高整体计算性能和I/O能力,效果尚可,存储空间有一定限制,成本低廉;
    • 第三个,通过将数据水平拆分,使用多台廉价的pcserver和本地磁盘来存放数据,每台机器上面都只有所有数据的一部分,解决了数据量的问题,所有pcserver一起并行计算,也解决了计算能力问题,通过中间代理程序调配各台机器的运算任务,既可以解决计算性能问题又可以解决I/O性能问题,成本也很低廉。
  • 通过MySQL的主从复制功能,可以很好的将数据从一台主机复制到另外一台,不仅仅在局域网内可以复制,在广域网同样可以。
  • MySQL作为数据仓库系统的优势在于他的开源。其他数据库大多都是以主机数量或cpu数量来收费,当我们使用大量的pcserver时,费用十分昂贵。