1、简述MySQL体系结构。2、安装部署MySQL。(使用yum以及通用二进制方式)。

Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的

Connectors指的是不同语言中与SQL的交互

Management Serveices & Utilities: 系统管理和控制工具

Connection Pool:连接池。管理缓冲用户连接,线程处理等需要缓存的需求

SQL InterfaceSQL接口,接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调

SQL Interface

Parser: 解析器。SQL命令传递到解析器的时候会被解析器验证和解析。

Optimizer:查询优化器。SQL语句在查询之前会使用查询优化器对查询进行优化。

CacheBuffer: 查询缓存。如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数

.

Engine:存储引擎。存储引擎是MySql中具体的与文件打交道的子系统。

一条SQL语句执行流程: 

连接层

1)提供连接协议:TCP/IP SOCKET

2)提供验证:用户、密码,IPSOCKET

3)提供专用连接线程:接收用户SQL,返回结果

通过以下语句可以查看到连接线程基本情况

mysql> show processlist;

SQL

1)接收上层传送的SQL语句

2)语法验证模块:验证语句语法,是否满足SQL_MODE

3)语义检查:判断SQL语句的类型

DDL :数据定义语言

DCL :数据控制语言

DML :数据操作语言

DQL: 数据查询语言

...

4)权限检查:用户对库表有没有权限

5)解析器:对语句执行前,进行预处理,生成解析树(执行计划),说白了就是生成多种执行方案.

6)优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划

代价模型:资源(CPU IO MEM)的耗损评估性能好坏

7)执行器:根据最优执行计划,执行SQL语句,产生执行结果

执行结果:在磁盘的xxxx位置上

8)提供查询缓存(默认是没开启的),会使用redis tair替代查询缓存功能

9)提供日志记录(日志管理章节):binlog,默认是没开启的。

存储引擎层(类似于Linux中的文件系统)

负责根据SQL层执行的结果,从磁盘上拿数据。

16进制的磁盘数据,交由SQL结构化化成表,

连接层的专用线程返回给用户。

MySQL安装与部署

RPM包安装(在线安装,离线安装两种方式)-----测试开发环境常用

在线安装

添加一个mysql的yum仓库源

#yum install http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

安装mysql

# yum install mysql-community-server

离线安装

下载RPM安装包,上传至服务器

 解压

创建一个文件夹(后期不用了可以直接删除文件夹,快捷方便)

# mkdir mysql

#tar xf mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar -C mysql

安装四个所需的包

#yum localinstall -y mysql-community-server-5.7.18-1.el7.x86_64.rpm mysql-community-client-5.7.18-1.el7.x86_64.rpm mysql-community-common-5.7.18-1.el7.x86_64.rpm mysql-community-libs-5.7.18-1.el7.x86_64.rpm

在线和离线安装完成后启动mysql

# systemctl start mysqld //当前启动

# systemctl enable mysqld //开机自启动

查询临时登录密码:

# awk '/temporary password/ {print $NF}' /var/log/mysqld.log

yPVr*drYb1uv

或# grep 'temporary password' /var/log/mysql.log   查询

登录数据库:

# mysql -uroot -p

Enter password:

#mysql -uroot -p ‘密码’ 可直接登录,会提醒不安全,但能用

登录后不论执行什么会提醒必须先修改密码才能继续操作

修改密码

mysql> alter user root@localhost identified by '123456';

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

密码要符合密码复杂性要求,不然不能成功   如:RedHat@123

mysql> alter user root@localhost identified by 'RedHat@123';

Query OK, 0 rows affected (0.00 sec)

通用二进制方式-----生产环境常用

下载包 --glibc

[root@node4 ~]# ll mysql-5.7.14-linux-glibc2.5-x86_64.tar

-rw-r--r-- 1 root root 672716800 Jul  5 14:15 mysql-5.7.14-linux-glibc2.5-x86_64.tar

创建用户及组

# groupadd -r mysql

# useradd mysql -r -g mysql -c "MySQL Server" -s /bin/false

解压,软链接

# 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

‘/usr/local/mysql’ -> ‘/usr/local/mysql-5.7.14-linux-glibc2.5-x86_64’

初始化

# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data

提供配置文件和服务启动脚本

# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

修改配置文件:vim /etc/my.cnf

[mysqld]

...

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

服务脚本

# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

添加系统服务,并设置开机自启动

# chkconfig --add mysqld

# chkconfig mysqld on

启动mysql

# /usr/local/mysql/bin/mysqld_safe --user=mysql &

配置环境变量:

# vim /etc/profile.d/mysql.sh

export PATH=/usr/local/mysql/bin:$PATH

加载使其生效。

猜你喜欢

转载自blog.csdn.net/m0_70940822/article/details/131566851