MYSQL_day01(数据库安装和体系结构)

2019-06-13  本文已影响0人  五月_w

第1章、 数据库的介绍

1.1、 数据库概述

1.1.1、 什么是数据库

 存储数据的仓库. 其本质是一个文件系统,数据库按照特定的格式将数据存储起来,用户可以对数据库中的数据进 行增加,修改,删除及查询操作。 

1.1.2 、数据的存储方式

1). 数据保存在内存 例如:数组,集合;new出来的对象存储在堆中.堆是内存中的一小块空间 优点:内存速度快 缺点:断电/程序退出,数据就清除了.内存价格贵 
2). 数据保存在普通文件 优点:永久保存 缺点:查找,增加,修改,删除数据比较麻烦,效率低 
3). 数据保存在数据库 优点:永久保存,通过SQL语句比较方便的操作数据库 

1.2

 数据库是按照特定的格式将数据存储在文件中,通过SQL语句可以方便的对大量数据进行增、删、改、查操作,数 据库是对大量的信息进行管理的高效的解决方案。 

1.3、 数据库管理系统

数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建 立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系 统访问数据库中表内的数据 

 RDBMS:            Oracle   Mysql   PG    MSSQL
 NOSQL:            MogoDB   Redis    ES
 NEWSQL(分布式):   TiDB   Spanner   AliSQL  OB   PolarDB

1.4、Mysql简介及产品线

1.4.1、Mysql行业主流版本

5.6 :5.6.34  5.6.36  5.6.38   5.6.40
5.7: 5.7.18  5.7.20  5.7.24(5726: 上课版本)
8.0(2018年,现在在开始研究新特性):8014  8015  8016

1.4.2、Mysql企业版本选择(Mysql分支版本)

Oracle(Mysql官方版):
 


红帽(MariaDB):



Percona(PerconaDB):

4.3、版本选择建议要上新环境

1)一般选择官方主流版本:5.6、5.7
2)GA(稳定发布版)
3)6-12月的产品版本

4.4、课程版本

5.7.20(2017年9月13)   二进制安装

第二章、二进制安装Mysql

第一步:解压软件

tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz 
mkdir /application
mv mysql-5.7.26-linux-glibc2.12-x86_64 /application/mysql

第二步:用户的创建环境原始处理

rpm -qa |grep mariadb
yum remove mariadb-libs-5.5.60-1.el7_5.x86_64
useradd -s /sbin/nologin mysql

第三步:设置环境变量

export PATH=/application/mysql/bin:$PATH
source /etc/profile

第四步:创建数据路径并授权

1) 添加一块新硬盘

2)格式化并挂载磁盘

mkfs.xfs /dev/sdb
mkdir /data
blkid(查询磁盘UUID)
vim /etc/fstab
mount -a
df -h
image.png

3) 授权

chown -R mysql.mysql /application/*
chown -R mysql.mysql /data

第五步、初始化数据库

mkdir /data/mysql/data -p
chown -R mysql.mysql /data
mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
image.png

第六步、配置文件准备

vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock

第七步、启动数据库

第一种方式:sys_v

cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
service mysqld restart

第二种方式:systemd

cat >/etc/systemd/system/mysqld.service <<EOF

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF

service mysqld stop
systemctl start mysqld
image.png

第八步、管理员密码的设定

mysqladmin -uroot -p password oldboy123

管理员密码忘记

1) 关闭数据库
  systemctl stop mysqld

2) 启动数据库到维护模式
  mysqld_safe --skip-grant-tables --skip-networking &

3) 登录并修改密码
 mysql> alter user root@'localhost' identified by '1';
 ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
 mysql> flush privileges;
 mysql> alter user root@'localhost' identified by '1';
 Query OK, 0 rows affected (0.01 sec)

4) 关闭数据库,正常启动验证

第二章、Mysql体系结构与管理

2.1、C/S(客户端、服务端)模型介绍***

image.png

TCP/IP方式(远程、本地):
   mysql -uroot -poldboy123 -h 10.0.0.51 -P3306
Socket方式(仅本地):
   mysql -uroot -poldboy123 -S /tmp/mysql.sock

2.2MySQL实例的构成***

实例=mysqld后台守护进程+Master Thread +干活的Thread+预分配的内存
公司=老板+经理+员工+办公室

2.3MySQL中mysqld服务器进程结构

image.png

2.3.1、SQL语句引入(结构化的查询语言)

 用来管理操作数据库的专用语言

 DQL:数据查询语言    mysql> select user,host from mysql.user;

 DCL:数据控制语言

 DML:数据操作语言

 DDL:数据定义语言

2.3.2、一条SQL语句的执行过程

2.3.2.1、连接层

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

 2)验证用户名(root@localhost)密码合法性,进行匹配专用的授权表。

 3)提供专业连接线程,负责接收用户SQL以及返回结果。
    Msql>    show processlist;

2.3.2.2、SQL层(重点)

  1)接受上层传送的SQL语句。

  2)验证SQL语法和SQL_MODE。

  3)验证语义:判断SQL语句的类型
          DDL:数据定义语言
          DCL:数据控制语言
          DML:数据操作语言
          DQL:数据查询语言

  4)验证权限:用户对库表有没有权限。

  5)解析器进行语句解析,生成执行计划(解析树) 。

  6)优化器(各种算法,基于执行代价模型),根据算法,找到代价最低的执行计划。
      代价模型:资源(CPU IO MEM)的耗损评估性能好坏。

  7)执行器按照优化器选择最优执行计划,执行SQL语句,产生执行结果
     执行结果:在磁盘的某个位置

 8)提供查询缓存(默认是没开启的),会使用redis 替代查询缓存功能
 9)记录操作日志(binlog),默认没开

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

  真正和磁盘打交道的一个层次,根据SQL层提供的取数据的方法,拿到数据返回给SQL,结构化成表 ,由连接层的专用线程返回给用户。
上一篇下一篇

猜你喜欢

热点阅读