day 01 MySQL 简介及安装
第一章 MySQL 大纲介绍
1.官方定义的MySQL DBA 工作内容
(1)运维DBA
初级:各版本、各平台安装搭建、升级
中级:体系结构原理、基础管理(启动关闭、初始化配置文件管理、多实例管理、用户权限管理、基本SQL(增删改查))日志管理、备份与恢复、主从复制(构建、状态监控)
高级:高可用(MGR、InnoDB Cluster)、高性能(优化)
(2)开发DBA
懂至少一门开发语言 :JAVA、Python
基本SQL语句深入学习(增删改查)、数据库结构设计(建模)
高级SQL:存储过程、函数、触发器、视图、事件
2、老男孩MySQL课程中级DBA要求(80%以上学会)
(1)MySQL 5.7 安装部署(二进制)*****
编译自己扩展
(2)MySQL升级步骤扩展 ***
(3)MySQL5.7 体系结构原理 *****
(4)MySQL基础管理 *****
(5)基础SQL语句使用 *****
(6)SQL高级应用 ***
(7)Information_schema获取元数据 ***
(8)索引、执行计划管理(基础优化)*****
(9)存储引擎 *****
(10)日志管理 *****
(11)备份与恢复 ******
(12)主从复制及架构演变 ******
(13)传统的高可用及读写分离(MHA&Atlas)****
(14)传统分布式架构设计与实现-扩展(Mycat--->DBLE,DRDS)**
(15)MySQL 5.7 高可用及分布式架构-扩展(MGR,InnoDB Cluster)***
(16)MySQL优化(安全、性能) ****
(17)MySQL 监控(zabbix、Open-falcon) ****
(18) RDS(阿里云课程) *****
额外要会的:
Redis
mongodb
了解:
PG
Oracle
第二章: MySQL 介绍和安装
1、什么是数据?
数据:文字、图片、视频。。。人类认知的数据表现方式
计算机:二进制、16进制的机器语言
基于数据的重要性和复杂性的不同,我们可能有不同的管理方式。
哪些数据是适合存储到数据库的呢?
重要性比较高的
关系较复杂的数据
2. 什么是数据库管理系统(DBMS)? ---R (relative) 关系型
RDBMS: 关系型数据库管理系统 二维表结构,比较适合于安全级级别要求高(高一致性)以及关系复杂的数据,但性能较差(相比NOsql)
NoSQL:非关系型数据库管理系统 无结构化存储数据适合于高性能存取数据,一般是配合RDBMS进行使用的,针对大数据处理分析,分布式架构更加擅长
newSql:
PinCAP TiDB
Aliyun PolarDB + OB
TentCent TDSQL
3.数据库管理系统种类
RDBMS: MySQL 、oracle、MSSQL(SQL Server)、PG
NoSQL: redis,Memcached,MongoDB,ES(ElasticSearch)
NewSQL: TiDB , PolarDb , TDSQL
4.MySQL 企业版本选择
4.1 Oracle MySQL产品线
企业版 , 收费的.
社区版 , 开源的.
4.2 社区版 版本类型
DMR,RC : 测试开发版.
GA : 稳定发布版. 5.6 5.7
4.3 企业版本选择
5.5 : 7-8%
5.6 : 50% : 5.6.3x : 5.6.34 -5.6.42 尽量选择双数版
5.7 : 40% : 5.7.2x : 5.7.20 -5.7.26 ##2017年 5.7.20版本 2017-9-13
8.0 : 2-3% : 8.0.11+, 8.0.17以上更好.
4.4 同源产品
Oracle MySQL : 5.0 5.1 5.5 5.6 5.7 8.0 9.0
MariaDB : 5.0 5.1 5.5 10.x ....
Percona : 5.0 5.1 5.5 5.6 5.7 8.0
5.MySQL 5.7.26版本二进制版本部署
1.(1) 规划目录
[root@db01 ~]# cd /usr/local/
mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
[root@db01 local]# tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
[root@db01 local]# ln -smysql-5.7.26-linux-glibc2.12-x86_64.tar.gz mysq57
[root@db01 ~]# mkdir -p /data/mysql/data_3306 #数据路径
[root@db01 ~]# mkdir -p /data/mysql/binlog_3306 #binlog日志路径(日志章节说明)
(2) 用户创建
[root@db01 ~]# useradd mysql
(3)授权
[root@db01 local]# chown -R mysql.mysql /usr/local/mysql57 /data
(4) 环境变量
vim /etc/profile
#添加:
export PATH=/usr/local/mysql57/bin:$PATH
[root@db01 local]# source /etc/profile
(5)残留处理
[root@db01 bin]# rpm -qa |grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
[root@db01 bin]# yum remove mariadb-libs -y
(6) 依赖包安装
[root@db01 bin]# rpm -qa |grep libaio-devel
[root@db01 bin]# yum install -y libaio-devel
2. 数据初始化 (建系统库)
[root@db01 data_3306]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57 --datadir=/data/mysql/data_3306
3. 配置文件准备
cat > /etc/my.cnf <<EOF
[mysqld]
user=mysql
port=3306
basedir=/usr/local/mysql57
datadir=/data/mysql/data_3306
server_id=6
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
EOF
4. 准备启动脚本
[root@db01 support-files]# cd /usr/local/mysql57/support-files
[root@db01 support-files]# cp mysql.server /etc/init.d/mysqld
[root@db01 ~]# chkconfig --add mysqld
[root@db01 ~]# systemctl start mysqld
[root@db01 ~]# mysql
[root@db01 ~]# systemctl restart mysqld
第三章 体系结构与基础管理
1. MySQL的工作模型
C/S : 客户端/服务端模型
1.1 服务端程序
mysqld
1.2 客户端程序
mysql
mysqldump
mysqladmin等
1.3 连接协议(Linux)
网络套接字: TCP/IP网络连接串 ----> mysql -uroot -p123 -h10.0.0.51 -P3306
本地套接字: socket本地连接串 ----> mysql -uroot -p123 -S /tmp/mysql.sock
2 MySQL的实例
实例 = mysqld + Master Thread + worker Threads + 专用内存
公司 = Boss + Manager + worker + 办公室
MySQL实例
1.mysqld守护进程
2.预分配的内存(mysql 启动时就将内存分配好了)
3. mysqld 程序结构
3.1 SQL是什么?
结构化查询语言.关系型数据库中的专用命令.
3.2 SQL种类
DDL : 数据定义 Data Definition Language
DCL : 数据控制 Data Control Language
DML : 数据操作 Data Manipulation Language
DQL : 数据查询 Data Query Language
3.3 一条SQL语句的执行逻辑
4. MySQL对象逻辑结构(能看见的结构)
库 : database / schema
库名
属性
表 : table (二维表结构)
表名
表属性
字段(列)
数据行(记录)
5. MySQL对象物理结构
宏观结构:
表MyISAM
user.frm (表结构)
user.MYD (数据行)
user.MYI (索引)
表InnoDB
time_zone.frm (表结构)
time_zone.ibd (数据行+ 索引)
InnoDB 微观结构:
InnoDB,是MySQL的数据库引擎之一,现为MySQL的默认存储引擎,为MySQL AB发布binary的标准之一
segment 段(一个表)
extent 区 (簇) 连续的64个page页是一个区 ,默认为1M
page 页(配置) ,为最小单位 16kb ,所以为4个os block
os block 大小为4K , 即为连续的8个扇区
扇区 512B
索引就是把随机IO变成顺序IO