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.pngTCP/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.png2.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,结构化成表 ,由连接层的专用线程返回给用户。