一已慢、MySQL簡介及安裝升級
1曲聂、什么是數(shù)據(jù)
數(shù)據(jù)(data)是數(shù)據(jù)庫中存儲的基本對象。數(shù)字只是一種最簡單的數(shù)據(jù)佑惠,是數(shù)據(jù)的一種傳統(tǒng)和狹義的理解朋腋。廣義的理解,數(shù)據(jù)的種類很多兢仰,文字乍丈、圖形、圖象把将、聲音轻专、學(xué)生的檔案記錄等,這些都是數(shù)據(jù)察蹲。
2请垛、數(shù)據(jù)庫管理系統(tǒng)(DBMS)
- RDBMS(關(guān)系型)
- NoSQL(非關(guān)系型)
- NewSQL(分布式型)
3、簡介面試題
(1)筆試
請列舉熟悉的數(shù)據(jù)庫產(chǎn)品
數(shù)據(jù)庫類型 | 數(shù)據(jù)庫名稱 |
---|---|
RDBMS | Orace洽议、MySQL宗收、MSSQL、PG |
NoSQL | redis亚兄、Mongo混稽、ES |
NewSQL | TiDB、Spanner审胚、OcenBase匈勋、PolarDB |
(2)面試
你們公司用了哪些數(shù)據(jù)庫產(chǎn)品
MySQL 版本:MySQL 5.7.20 數(shù)據(jù)庫架構(gòu) 備份策略 遇到的故障和性能問題 總結(jié)
Redis、MongoDB膳叨、ES
4洽洁、MySQL軟件分支
Oracle MySQL、MariaDB菲嘴、PerconaDB饿自、云數(shù)據(jù)庫(RDS MySQL汰翠,騰訊云等)。
5昭雌、MySQL的企業(yè)版本選擇
企業(yè)版本主流
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
企業(yè)版本新環(huán)境選擇穩(wěn)定版本GA版,6-12個(gè)月跟磨,偶數(shù)版间聊。
6、MySQL5.7.26二進(jìn)制規(guī)劃和部署
規(guī)劃
環(huán)境 | 配置 |
---|---|
硬件配置 | DELL R720抵拘,CPU28哎榴,MEM128G,RAID108*600 SAS |
內(nèi)核信息 | Centos 7.6.1810 kernel 3.10.0-957.el7x86_64 |
網(wǎng)絡(luò)規(guī)劃 | eth0:10.0.0.51/24僵蛛,hostname:DB01 |
存儲 | /dev/sdb 900G |
-
創(chuàng)建相關(guān)目錄
①/application(軟件存放目錄)
②/data/3306/data(數(shù)據(jù)存放目錄)
③創(chuàng)建用戶并且授權(quán)目錄權(quán)限
useradd mysql -s /sbin/nologin -M
chown mysq:mysql -R /application
chown mysql:mysql -R /data/3306/data
④上傳軟件并解壓處理
⑤數(shù)據(jù)初始化
rpm -qa | grep mariadb (確定是否有沖突尚蝌,并且卸載)
添加環(huán)境變量(/etc/profile):export PATH=/application/mysql/bin:$PATH
查看MySQL版本(mysql -V)
安裝依賴:yum install -y libaio-devel
初始化MySQL數(shù)據(jù):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
⑦準(zhǔn)備啟動(dòng)腳本
cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
啟動(dòng)方式說明:/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啟動(dòng)
補(bǔ)充升級8.0版本
①二進(jìn)制包解壓,設(shè)置軟連接mysql8
②停止原數(shù)據(jù)庫
systemctl stop mysqld.service
/etc/init.d/mysqld start|restart|stop
③修改環(huán)境變量
/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啟動(dòng)腳本
[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
⑥啟動(dòng)systemctl restart mysqld
8.0以前的版本需要使用mysql_upgrade升級MySQL數(shù)據(jù)
du -sh 查看目錄占用空間
小結(jié)
版本選擇(熟悉)
5.6主流版本
5.7主流版本
GA 6-12
changelog what is new?
安裝方式(熟悉)
二進(jìn)制
源碼
規(guī)劃和部署(重點(diǎn)掌握)
升級(了解)
簡易管理(熟悉)
二充尉、MySQL體系結(jié)構(gòu)和管理
MySQL C/S模型
Server: mysqld
Client:socket-僅本地連接使用飘言、tcp/ip-應(yīng)用連接使用
實(shí)例
mysqld ----> master thread ----> 干活的線程+預(yù)分配的內(nèi)存結(jié)構(gòu)
SQL語句執(zhí)行過程
select user,host from mysql.user;
連接層:提供連接協(xié)議(socket、TCP/IP)
驗(yàn)證user password host port
提供連接線程
show processlist;
功能:接受SQL語句和返回結(jié)果
SQL層
語法檢查和SQL_MODE檢查
語義的檢查和權(quán)限檢查
解析預(yù)處理驼侠,生成解析樹(執(zhí)行計(jì)劃樹)
選擇最優(yōu)的方案(代價(jià)模型算法)
cpu姿鸿、i/o、mem
選擇最優(yōu)的方案進(jìn)行執(zhí)行SQL語句
提供查詢緩存(默認(rèn)沒有開啟的)倒源,會使用redis rair替代查詢緩存功能
提供志記錄(日志管理章節(jié)):binlog苛预,默認(rèn)是沒有開啟的
image.png
存儲引擎層
相當(dāng)于文件系統(tǒng),將數(shù)據(jù)取出笋熬,再交給SQL層機(jī)構(gòu)化表热某,返回給用戶
image.png