体系结构

MySQL C/S模型

  • Server : mysqld

  • Client :

    • socket:仅本地连接使用
    • tcp/ip:应用连接使用(远程和本地)
    #TCP/IP方式(远程、本地)
    mysql -uroot -p123456 -h 10.0.0.51 -P3306 #socket方式(仅本地)
    mysql -uroot -p123456 -S /tmp/mysql.sock

实例介绍

实例=mysqld  --- > master thread ---> 干活的线程 + 预分配的内存结构
公司=boss 经理 员工 办公室

实例=mysqld+master thread + N thread + 内存区域

mysqld程序运行原理

mysqld程序结构

(

SQL语句的执行个过程

  • 连接层

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

    (2)提供验证:user、password,IP,SOCKET

    (3)提供专用连接线程:接收用户SQL,返回结果

    通过以下语句可以查看到连接线程基本情况

    mysql> show processlist;
  • SQL层

    (1)接收上层传送的SQL语句

    (2)语法验证模块:验证语句语法,是否满足SQL_MODE

    (3)语义检查:判断SQL语句的类型

    (4)权限检查:用户对库表有没有权限

    (5)解析器:对语句执行前,进行预处理,生成解析树(执行计划),说白了就是生成多种执行方案.

    (6)优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划

    (7)执行器:根据最优执行计划,执行SQL语句,产生执行结果

  • 存储引擎层(简单介绍)

    负责根据SQL层执行的结果,从磁盘上拿数据。

    将16进制的磁盘数据,交由SQL结构化化成表,

    连接层的专用线程返回给用户。

MySQL的逻辑结构基本构成

  • 库(DATABASE,SCHEMA)
  • 表(TABLE.SEGMENT)
  • 用户(PRIVILEGES)
  • OTHER

MySQL基础物理结构

库:物理存储,相当于linux中的目录

表:元数据(表名,表属性,表列)

MyISAM(一种引擎)的表:
.MYI 索性相关信息
.MYD 存储数据行
.frm 列的信息 -rw-r----- 1 mysql mysql 10816 Apr 18 11:37 user.frm
-rw-r----- 1 mysql mysql 396 Apr 18 12:20 user.MYD
-rw-r----- 1 mysql mysql 4096 Apr 18 14:48 user.MYI InnoDB(默认的存储引擎)的表:
.frm: 存储列相关信息
.ibd: 数据行+索引(IOT)
-rw-r----- 1 mysql mysql 8636 Apr 18 11:37 time_zone.frm
-rw-r----- 1 mysql mysql 98304 Apr 18 11:37 time_zone.ibd

INNODB表底层存储结构引入

  • 段:一个非分区表就是一个段(segment)

  • 区:大小为1M,默认是连续的64个page(extent)

  • 页:MySQL最小的IO单元,默认为16kb(page)

MySQL基础管理

用户

用户的作用:登录mysql,管理MySQL的逻辑对象

用户的定义方式

用户的定义:用户名,白名单(主机列表)
wordpress@'localhost'
wordpress@'10.0.0.1'
wordpress@'10.0.0.%' ##
wordpress@'10.0.0.5%'
wordpress@'10.0.0.0/255.255.254.0'
wordpress@'oldguo.com'
wordpress@'db01'
wordpress@'%'

用户的管理操作

#创建用户
create user username@'10.0.0.%'; #删除用户
drop user username@'10.0.0.%'; #查看用户
select user,host from mysql.user; #设置用户密码
alter user username@'10.0.0.%' identified by '123456'; #创建用户同时创建密码
create user username@'10.0.0.%' identified by '123456';

8.0版本以前,grant 可以创建用户并授权。8.0版本以后必须先创建用户在授权

权限

权限的作用:开启用户管理对象的能力

权限的定义

grant all on wordpress.* to wordpress@'10.0.0.%' identified  by '123';

授权范围

*.* 			全库级别,一般为管理员
wordpress.* 单库级别,应用或开发
wordpress.t1 单表级别,很少使用

生产环境用中授权

应用用户一般
select,insert,update,delete 中小公司,开发人员leader一般
SELECT,INSERT, UPDATE, DELETE,CREATE,ALTER,CREATE VIEW,SHOW VIEW,CREATE ROUTINE,ALTER ROUTINE,EVENT, TRIGGER

mysql忘记本地管理员用户密码

#关闭数据库
/etc/init.d/mysqld stop #将数据库启动到无验证模式
mysqld_safe --skip-grant-tables --skip-networking &
#参数说明
--skip-grant-tables //跳过授权表
--skip-networking //禁用TCP/IP连接方式 #修改管理员密码
flush privileges;
alter user root@'localhost' identified by '123456';
quit #重启数据库为正常模式
/etc/init.d/mysqld restart #测试是否修改成功
mysql -uroot -p123456

MySQL连接方式

本地 -- 使用socket

本地登录的用户,需要提前授权localhost相关用户

mysql -uroot -p123 -S /tmp/mysql.sock

远程 -- TPC/IP

mysql -uoldguo -p  -h10.0.0.51 -P3306

mysql 自带命令

命令:mysql
参数
-u 登录用户
-p 登录密码
-h 连接的IP
-P 端口号
-S socket文件
-e 非交互式登录
-V 查看版本信息
< 导入数据库

初始化配置

作用:

控制MySQL的启动
影响到客户端的连接

初始化配置文件的默认读取顺序

[root@db01 ~]# mysqld --help --verbose |grep my.cnf
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
注:
默认情况下,MySQL启动时,会依次读取以上配置文件,如果有重复选项,会以最后一个文件设置的为准。
但是,如果启动时加入了--defaults-file=xxxx时,以上的所有文件都不会读取.

配置文件的书写方式:

[标签]
配置项=xxxx 标签类型:服务端、客户端
服务器端标签:
[mysqld]
[mysqld_safe]
[server] 客户端标签:
[mysql]
[mysqldump]
[client] 配置文件的示例展示:
[root@db01 ~]# cat /etc/my.cnf
[mysqld]
user=mysql
basedir=/app/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
server_id=6
port=3306
log_error=/data/mysql/mysql.log
[mysql]
socket=/tmp/mysql.sock
prompt=Master [\\d]>

MySQL多实例配置

准备多个目录

mkdir -p /data/330{7,8,9}/data

准备配置文件

cat > /data/3307/my.cnf <<EOF
[mysqld]
basedir=/application/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
log_error=/data/3307/mysql.log
port=3307
server_id=7
log_bin=/data/3307/mysql-bin
EOF cat > /data/3308/my.cnf <<EOF
[mysqld]
basedir=/application/mysql
datadir=/data/3308/data
socket=/data/3308/mysql.sock
log_error=/data/3308/mysql.log
port=3308
server_id=8
log_bin=/data/3308/mysql-bin
EOF cat > /data/3309/my.cnf <<EOF
[mysqld]
basedir=/application/mysql
datadir=/data/3309/data
socket=/data/3309/mysql.sock
log_error=/data/3309/mysql.log
port=3309
server_id=9
log_bin=/data/3309/mysql-bin
EOF

初始化三套数据

mysqld --initialize-insecure --user=mysql --datadir=/data/3307/data --basedir=/application/mysql

mysqld --initialize-insecure  --user=mysql --datadir=/data/3308/data --basedir=/application/mysql

mysqld --initialize-insecure  --user=mysql --datadir=/data/3309/data --basedir=/application/mysql

设置systemd管理多实例

cd /etc/systemd/system
cp mysqld.service mysqld3307.service
cp mysqld.service mysqld3308.service
cp mysqld.service mysqld3309.service

修改sockte文件

vim mysqld3307.service
ExecStart=/application/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf vim mysqld3308.service
ExecStart=/application/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf vim mysqld3309.service
ExecStart=/application/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf

授权

chown -R mysql.mysql /data/*

启动多实例mysql

systemctl start mysqld3307.service
systemctl start mysqld3308.service
systemctl start mysqld3309.service

验证多实例

# 查看多实例端口是否开启
netstat -lnp|grep 330 mysql -S /data/3307/mysql.sock -e "select @@server_id"
mysql -S /data/3308/mysql.sock -e "select @@server_id"
mysql -S /data/3309/mysql.sock -e "select @@server_id"

第二章--MYSQL体系结构和管理的更多相关文章

  1. 第二章· MySQL体系结构管理

    一.客户端与服务器模型  1.mysql是一个典型的C/S服务结构 1.1 mysql自带的客户端程序(/application/mysql/bin) mysql mysqladmin mysqld ...

  2. CISA 信息系统审计知识点 [第二章. IT治理和管理 ]

    第二章.  IT治理和管理 1.  IT治理.管理.安全和控制框架及标准.指南和实践 IT治理是董事会和执行管理层的职责. IT治理的关键因素:保持与业务的战略一致,引导业务价值的实现. IT治理关注 ...

  3. 第二章 MySQL入门篇

    第一章 MySQL入门篇 一.MySql简介 简言: 和SQL Server数据库相同,MySQl也是一个关系型数据库管理系统.由瑞典的MySQL AB公司开发,2008年被SUN公司收购,2009年 ...

  4. Java 螺纹第三版 第一章Thread介绍、 第二章Thread创建和管理学习笔记

    第一章 Thread导论 为何要用Thread ? 非堵塞I/O      I/O多路技术      轮询(polling)      信号 警告(Alarm)和定时器(Timer) 独立的任务(Ta ...

  5. 第1章 MYSQL 体系结构和存储引擎

    一.定义数据库和实例 在集群的条件下,存在单个数据库对应多个实例 二.Mysql 体系结构 三.Mysql 存储引擎及各存储引擎之间的比较 命令:show engines; 四.连接 MySQL 4. ...

  6. 第二章 Mysql 数据类型简介--(整数类型、浮点数类型和定点数类型,日期与时间类型,字符串类型,二进制类型)

    第一节:整数类型.浮点数类型和定点数类型 1,整数类型 2,浮点数类型和定点数类型 M 表示:数据的总长度(不包括小数点):D 表示:小数位:例如 decimal(5,2) 123.45存入数据的时候 ...

  7. .net架构设计读书笔记--第二章 设计体系结构

    第五节 探索领域架构 一.领域驱动设计的价值与意义 最初在java中使用,.net要晚些才引入.领域驱动设计出现之初的争议.一个向导,少走弯路   1. 我们真的需要DDD吗? DDD并不适用于每个软 ...

  8. 第二章 MySQL的安装与配置(待续)

    ·······

  9. 《Mysql 公司职员学习篇》 第二章 小A的惊喜

          第二章 小A的惊喜  ---- 认识数据库 吃完饭后,小Y和小A回到了家里,并打开电脑开始学习Mysql. 小Y:"小A,你平时的Excell文件很多的情况下,怎么样存放Exce ...

随机推荐

  1. C语言实现简单的计算器(加、减、乘、除)

    利用运算符做为swich  case 语句条件,实现简单程序的编写;并且对输入的运算做判断,除数为零也需做判断; #include<stdio.h> int add(int a, int ...

  2. windows 开始→运行→命令集锦

    windows 开始→运行→命令集锦 来源于网络,侵权请通知我删除 命令 说明 vwinver 检查Windows版本 wmimgmt.msc 打开windows管理体系结构(WMI) wupdmgr ...

  3. Authorization源码解析

    1.首先调用 Subject.isPermitted*/hasRole* 接口,其会委托给SecurityManager.SecurityManager 接着会委托给 Authorizer: Auth ...

  4. Appium_Xpath定位详解

    做的笔记比较乱,定位过程中,发现很多开发小哥的代码命名问题,怕被怼,这里说说算了. 恩..这是我最常用,也是最熟悉的定位方法之一,这次趁着UI交换变更的机会,整理一下Xpath的定位方法,喜欢可以收藏 ...

  5. [高清] Java编程思想第四版完整中文高清版

    ------ 郑重声明 --------- 资源来自网络,纯粹共享交流, 如果喜欢,请您务必支持正版!! --------------------------------------------- 下 ...

  6. Spring Cloud Alibaba学习笔记(22) - Nacos配置管理

    目前业界流行的统一配置管理中心组件有Spring Cloud Config.Spring Cloud Alibaba的Nacos及携程开源的Apollo,本文将介绍Nacos作为统一配置管理中心的使用 ...

  7. 未检测到.NET CORE SDK 或者 新建项目没有.NET CORE 3.0选择项

    终于解决了 首先先看自己的VS2019版本 由于楼主下载的 .NET CORE SDK 3.0.100-preview8-013656 焕然大悟 原来是版本不符合,需要用vs 2019 preview ...

  8. wc命令——Linux系统高效数据统计工具

    wc(world count)是一个统计文件字词,字节,行数的Linux命令,它可以帮我们非常方便的统计以上信息. 主要参数 常见参数如下: -c 统计字节数. -l 统计行数. -m 统计字符数.这 ...

  9. 【转载】C#使用Math.Floor方法来向下取整

    在C#的数值运算中,有时候需要对计算结果舍去小数位保留整数位向下取整即可,此时就可使用内置方法Math.Floor来实现向下取整操作,Math.Floor方法将舍去小数部分,保留整数.Math.Flo ...

  10. webpack4 从零学习常用配置梳理

    webpack 的核心价值就是前端源码的打包,即将前端源码中每一个文件(无论任何类型)都当做一个 pack ,然后分析依赖,将其最终打包出线上运行的代码.webpack 的四个核心部分 entry 规 ...