MySQL体系结构及产品基础介绍

1.数据库产品类型
第一代数据库架构
----- 关系型数据库时代(RDBMS )
代表产品 :
闭源:Oracle 、MSSQL、DB2 …
开源:MySQL、PG、ClickHouse …

第二代数据库架构: 并发量,业务量(用户量,数据量)的发展
----- 关系型数据库时代(RDBMS )
+
----- NoSQL时代 ( Not Only SQL 时代 )
代表产品:Memcache 、 Redis(缓存) 、MongoDB文档型数据库、ES、Hadoop …

第三代数据库架构
----- 分布式/新型数据库架构时代 ( NewSQL 时代 )
代表产品:
阿里系列:PolarDB、 OB
Pincap :TiDB

2.熟悉数据库行业
数据库的排名信息
https://db-engines.com/en —> DB-Engines Ranking
在这里插入图片描述

3. MySQL的企业版本选择
E : 企业版(收费),可以下载30天试用
C: 社区版(开源),免费服务5年

社区版选择:
5.6 :GA 6-12月之间的版本 5.6.34-max,最好是双数版
5.7 :一般选择最新GA版本 5.7.28( Sep 27, 2019)
8.0 :一般选择最新GA版本 8.0.18+( Sep 22, 2019)

5.6 版本 2020 10月 常规、扩展服务全部停止
5.7 版本 2021 1月 常规服务停止

4. 获取社区版MySQL
官方网站:https://www.mysql.com/downloads/
MySQL Community (GPL) Downloads » Download Archives » MySQL Community Server » Product Version (选择双数最新版 ) Operating System : linux - Generic

5. 二进制部署MySQL
5.1 环境准备

# iptables -nL
# systemctl stop firewalld
# getenforce
# ping www.baidu.com

5.2 检验MD5值

# md5sum  mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
1daa30a32b99a92062f481bd3ef8694c    mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
对比官网中的MD5值: 1daa30a32b99a92062f481bd3ef8694c

5.3 上传软件到指定目录

# cd /opt
上传软件包  mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz

5.4 解压并创建软连

# tar xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
# ln -s mysql-5.7.28-linux-glibc2.12-x86_64 mysql

5.5 修改环境变量

# echo 'export PATH=/opt/mysql/bin/:$PATH' >>/etc/profile
# source /etc/profile  
# mysql -V
   mysql  Ver 14.14 Distrib 5.7.28, for linux-glibc2.12 (x86_64) using  EditLine wrapper

5.6 清理遗留环境

# rpm -qa|grep mariadb
    mariadb-libs-5.5.60-1.el7_5.x86_64

用yum清理
# yum remove mariadb-libs-5.5.60-1.el7_5.x86_64        

删掉/etc/my.cnf已有文件
# rm -rf /etc/my.cnf

5.7 安装依赖包

yum install -y libaio-devel

5.8 创建相关目录并授权

# mkdir -p /data/3306                         -- 存放数据库数据
# useradd -M -s /sbin/nologin mysql           -- 创建管理用户
# chown -R mysql.mysql /data/3306  

5.9 初始化数据库

/opt/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql --datadir=/data/3306

如果下载了5.6版本的初始化方式如下:
/opt/mysql/scripts/mysql_install_db   --user=mysql --basedir=/opt/mysql --datadir=/data/3306

5.10 准备配置文件
作用:
1.影响数据库的启动、工作。
2.影响到客户端连接(本地服务器上发起的)

vim /etc/my.cnf 

[mysqld]
user=mysql
basedir=/opt/mysql
datadir=/data/3306
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock

默认配置文件读取顺序

# mysqld --help --verbose|grep my.cnf
/etc/my.cnf    --->  /etc/mysql/my.cnf   --->  /usr/local/mysql/etc/my.cnf    --->  ~/.my.cnf

5.11 准备启动脚本

# cp /opt/mysql/support-files/mysql.server /etc/init.d/mysqld
# chkconfig --add mysqld    
# systemctl start mysqld      # /etc/init.d/mysqld start
# systemctl enable mysqld
# systemctl status mysqld
# mysql 
需要设置管理员密码如下:
# mysqladmin password 123456

6 MySQL体系结构
6.1 MySQL的C/S模型工作结构
客户端(Client):
自带命令 : mysql、mysqldump、mysqladmin
第三方工具 : sqlyog、navicat、workbench
API : php-mysqli(phpmyadmin)、simple-config(workpress)

服务端(Server) :
TCP/IP -h -P 套接字(IP+端口)
Unix Socket -S

总结:利用客户端的命令或者工具,通过本地unix套接字或者IP+Port方式连接服务端mysqld。

6.2 MySQL的实例结构
MySQL实例结构组成:mysqld守护进程 + Master thread + worker thread线程(IO\SQL\Purge…) + 预分配内存结构

MySQL处理数据方式:通过实例 —> 处理数据
在这里插入图片描述

什么是进程?什么是线程?
定义区分:进程是具有独立功能的程序,而线程是进程的实体。
功能区分:进程是资源分配、调度的单位;线程是进程的执行单元。

同一个进程中的多个线程之间可以并发执行;一个线程可以创建和撤销另一个线程。进程之间资源不可以共享,线程之间资源可以共享。 每个程序之间的进程是相互独立的,但是每个程序的线程之间是数据相互共享。简而言之,
1)一个程序至少有一个进程,一个进程至少有一个线程。

2)线程的划分尺度小于进程,使得多线程程序的并发性高。

3)另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

6.3 MySQL核心程序工作原理
6.3.1 server 层 / 实例层 ----> Linux OS
6.3.1.1 连接器
连接协议:tcp/ip 和unix套接字socket
加载授权表:用户密码验证
通过密码验证生成连接线程

6.3.1.2 SQL层
6.3.1.3 管理类工具、插件、mysqlshell(8.0以后)
6.3.2 engine 层 / 存储引擎层 ----> 文件系统

在这里插入图片描述
更多详情,请关注微信公众号
在这里插入图片描述

以上内容均有oldguo老师传授,详情请看B站:
https://www.bilibili.com/video/BV157411K7sf?from=search&seid=2216971352526804506

猜你喜欢

转载自blog.csdn.net/weixin_45320660/article/details/114529170