目录
MySQL体系结构
MySQL最上层是连接组件和下面服务器组成。
一、连接组件:
支持多种不同的语言与之进行交互。
二、服务部分
- 由连接池、管理工具和服务、SQL接口、解析器、优化器、缓存、存储引擎、文件系统组成。
- 而这些组件在MySQL服务中被分为四个层级:连接层、SQL层、插件式存储引擎、物理文件。
1、连接池:
由于每次建立需要消耗很多的时间。连接池的作用就是将这些已经建立过的连接缓存下来,下次可以直接用已经建立好的连接,提升服务器性能。它负责监听对客户端向 MySQL Server 端的各种请求,身份验证、建立连接、权限校验、维持和管理连接、检查内存、数据缓存和管理用户的连接。通信方式是半双工模式。
2、SQL层:
管理服务和工具组件。
-
SQL接口组件:SQL接口,接受用户的SQL命令,并且返回用户需要查询的结果。
-
解析器组件:SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本, 主要功能:
a . 将SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的
b. 如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的。 -
查询优化器组件:查询优化器,SQL语句在查询之前会使用查询优化器对查询进行优化。他使用的是“选取-投影-联接”策略进行查询。
-
缓存和缓冲区:查询缓存,如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。
通过LRU算法将数据的冷端溢出,未来得及时刷新到磁盘的数据页,叫脏页。
这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等
3、存储引擎:
存储引擎是MySql中具体的与文件打交道的子系统,真正的负责了MySQL中数据的存储和提取。
存储引擎就是如何管理操作数据(存储数据、更新数据、查询数据等)的一种方法,当然在 MySQL 中。而可拔插就可以理解为 MySQL 提供了一个接口,只要遵循规则即可以自定义实现存储引擎,Java中接口与实现类的关系。
4、物理文件层:
数据存储层,主要是将数据存储在运行与裸设备的文件子系统之上,并完成与存储引擎的交互。
支持的文件类型:EXT3、EXT4、NTFS、NFS
MySQL中的物理文件包括四种:
① 日志文件
事务中的隔离级别的实现就依赖于日志文件的
Error log错误日志:记录遇到的所有严重的错误信息,每次启动关闭的信息信息;
Binary log 二进制日志:也就是binlog,记录所有修改数据库的操作;
Query log 查询日志:记录所有查询操作,体积较大,开启后对性能有影响。
Slow Query log 慢查询日志:记录所有执行时间超过long_query_time的SQL语句和达到min_examined_row_limit条距离的语句。
InnoDB redo log:记录InnoDB所做的物理变更和事务信息。
中继日志:只从复制产生,用户slave机读取,复制master机的SQL操作。
②数据文件
.frm文件:表结构定义信息;
.MYD文件:MyISAM引擎的数据文件;
.MYI文件:MyISAM引擎的索引文件;
.ibd文件和 .ibdata文件:InnoDB的数据和索引; .ibdata配置为共享表空间时使用
③配置文件
系统配置文件:/etc/my.cnf;
④其他文件
pid文件:存储自己的进程ID;
socket文件:连接客户端使用;
MySQL的安装
环境准备:
- CentOS操作系统
- 关闭防火墙、禁用SELinux。
systemctl stop firewalld //当前关闭
systemctl disable firewalld //永久关闭
vi /etc/selinux/config -- 进入配置文件找到‘SELINUX=’这一行。
SELINUX=disabled --将SELinux关闭
或在命令行用: sed -i '/^SELINUX=/ c SELINUX=disabled' /etc/selinux/config
或:setenforce 0 //设置为宽容(警告)模式 - 安装常用软件
yum install wget unzip bash-completion tree vim lrzsz net-tools -y
使用YUM方式安装:
配置一个yum仓库文件:
/etc/yum.repos.d/mysql.repo
[mysql]
name=mysql5.7
baseurl=http://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
gpgcheck=0
拉取MySQL包并安装:
yum install mysql-community-server -y
查看安装情况:
启动并查看状态:
通用二进制的方式安装:
1、准备mysql包 --glibc
mysql-5.7.14-linux-glibc2.5-x86_64.tar
2、创建用户及组
groupadd -r mysql
useradd mysql -r -g mysql -c "MySQL Server" -s /bin/false
3、 解压,软链接
tar xf mysql-5.7.14-linux-glibc2.5-x86_64.tar -C /usr/local
tar xf /usr/local/mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
创建软链接:为了方便以后升级。
ln -sv /usr/local/mysql-5.7.14-linux-glibc2.5-x86_64 /usr/local/mysql
4、 初始化
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data
5、提供配置文件和服务启动脚本
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
修改配置文件:vim /etc/my.cnf
服务脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
添加系统服务,并设置开机自启动
chkconfig --add mysqld
chkconfig mysqld on
6、启动mysql
/usr/local/mysql/bin/mysqld_safe --user=mysql &