暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL框架、体系及产品基础介绍

ClickHouse周边 2021-03-08
381
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 连接器
                          1. 连接协议:tcp/ip 和unix套接字socket
                          2. 加载授权表:用户密码验证
                          3. 通过密码验证生成连接线程

                          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


                          文章转载自ClickHouse周边,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                          评论