美文网首页
MYSQL_day01(数据库安装和体系结构)

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

作者: 五月_w | 来源:发表于2019-06-13 15:50 被阅读0次

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

    相关文章

      网友评论

          本文标题:MYSQL_day01(数据库安装和体系结构)

          本文链接:https://www.haomeiwen.com/subject/qaurfctx.html