一、MySQL简介及安装升级
1、什么是数据
数据(data)是数据库中存储的基本对象。数字只是一种最简单的数据,是数据的一种传统和狭义的理解。广义的理解,数据的种类很多,文字、图形、图象、声音、学生的档案记录等,这些都是数据。
2、数据库管理系统(DBMS)
- RDBMS(关系型)
- NoSQL(非关系型)
- NewSQL(分布式型)
3、简介面试题
(1)笔试
请列举熟悉的数据库产品
数据库类型 | 数据库名称 |
---|---|
RDBMS | Orace、MySQL、MSSQL、PG |
NoSQL | redis、Mongo、ES |
NewSQL | TiDB、Spanner、OcenBase、PolarDB |
(2)面试
你们公司用了哪些数据库产品
MySQL 版本:MySQL 5.7.20 数据库架构 备份策略 遇到的故障和性能问题 总结
Redis、MongoDB、ES
4、MySQL软件分支
Oracle MySQL、MariaDB、PerconaDB、云数据库(RDS MySQL,腾讯云等)。
5、MySQL的企业版本选择
企业版本主流
5.6版本 | 5.6.34、5.6.36、5.6.38、5.6.40 |
---|---|
5.7版本 | 5.7.18、5.7.19、5.7.20、5.7.24 |
下载地址:https://downloads.mysql.com
企业版本新环境选择稳定版本GA版,6-12个月,偶数版。
6、MySQL5.7.26二进制规划和部署
规划
环境 | 配置 |
---|---|
硬件配置 | DELL R720,CPU28,MEM128G,RAID108*600 SAS |
内核信息 | Centos 7.6.1810 kernel 3.10.0-957.el7x86_64 |
网络规划 | eth0:10.0.0.51/24,hostname:DB01 |
存储 | /dev/sdb 900G |
-
创建相关目录
①/application(软件存放目录)
②/data/3306/data(数据存放目录)
③创建用户并且授权目录权限
useradd mysql -s /sbin/nologin -M
chown mysq:mysql -R /application
chown mysql:mysql -R /data/3306/data
④上传软件并解压处理
⑤数据初始化
rpm -qa | grep mariadb (确定是否有冲突,并且卸载)
添加环境变量(/etc/profile):export PATH=/application/mysql/bin:$PATH
查看MySQL版本(mysql -V)
安装依赖:yum install -y libaio-devel
初始化MySQL数据:mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/3306/data
⑥书写配置文件
cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/3306/data
socket=/tmp/mysql.sock
secure-file-priv=/tmp
[mysql]
socket=/tmp/mysql.sock
prompt=3306[\d]>
EOF
⑦准备启动脚本
cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
启动方式说明:/etc/init.d/mysqld start|restart|stop
⑧添加到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
使用systemctl resstart|stop|start mysqld启动
补充升级8.0版本
①二进制包解压,设置软连接mysql8
②停止原数据库
systemctl stop mysqld.service
/etc/init.d/mysqld start|restart|stop
③修改环境变量
/etc/profile
export PATH=/application/mysql8/bin:$PATH
. /etc/profile
mysql -V查看版本
④修改/etc/my.cnf配置文件
[mysqld]
user=mysql
basedir=/application/mysql8
datadir=/data/3306/data
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
prompt=3306[\d]>
⑤修改/etc/systemd/system/mysqld.service启动脚本
[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/mysql8/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
⑥启动systemctl restart mysqld
8.0以前的版本需要使用mysql_upgrade升级MySQL数据
du -sh 查看目录占用空间
小结
版本选择(熟悉)
5.6主流版本
5.7主流版本
GA 6-12
changelog what is new?
安装方式(熟悉)
二进制
源码
规划和部署(重点掌握)
升级(了解)
简易管理(熟悉)
二、MySQL体系结构和管理
MySQL C/S模型
Server: mysqld
Client:socket-仅本地连接使用、tcp/ip-应用连接使用
实例
mysqld ----> master thread ----> 干活的线程+预分配的内存结构
SQL语句执行过程
select user,host from mysql.user;
image.png
连接层:提供连接协议(socket、TCP/IP)
验证user password host port
提供连接线程
show processlist;
功能:接受SQL语句和返回结果
SQL层
语法检查和SQL_MODE检查
语义的检查和权限检查
解析预处理,生成解析树(执行计划树)
选择最优的方案(代价模型算法)
cpu、i/o、mem
选择最优的方案进行执行SQL语句
提供查询缓存(默认没有开启的),会使用redis rair替代查询缓存功能
提供志记录(日志管理章节):binlog,默认是没有开启的
存储引擎层
相当于文件系统,将数据取出,再交给SQL层机构化表,返回给用户
image.png
网友评论