1、MySQL簡介mysql
一、MySQL運維DBA工做內容:linux
初級DBA:
安裝配置,基本使用,基本故障處理
中級DBA:
體系結構、備份策略設計,故障恢復,基礎高可用的運維(搭建、監控、故障處理、架構演變)、基礎優化(索引、執行計劃、慢日誌)redis
高級DBA:
高可用架構(設計、實施、運維)、高性能架構(讀寫分離,分庫、分表,分佈式)、總體數據庫優化(基於業務的SQL優化)sql
二、甲骨人-MySQL-網絡班課程框架
1、MySQL5.7 簡介及安裝部署
2、體系結構和管理
3、SQL語句使用
4、元數據獲取-Information_schema
5、基礎優化——索引及執行計劃管理
6、InnoDB存儲引擎
7、日誌管理
8、備份恢復、遷移
9、MySQL主從複製
10、MySQL傳統高可用——MHA
11、MySQL讀寫分離——Atlas
十二部分、MySQL分庫分表-MyCAT
十三部分、MySQL5.7新型高可用方案——MGR,Innodb Cluster
十四部分、優化
NoSQL:
一、redis
二、Mongodb數據庫
三、MySQL版本選擇
3.1 企業版(收費版本)
3.2 社區版(開源版本)
GA:穩定的發佈版
3.3 行業中對MySQL版本的使用狀況
5.6 :老的環境 ----->60%
5.7 :新的環境 ----->40%
建議:儘可能選擇GA6個月-12之間的產品
3.4 MySQL的獲取 (下載)
社區版----->5.7---->5.7.17之後版本----->5.7.20
rpm --->rpm -ivh xxx.rpm yum 不建議
通用的二進制包 ----->linux_genric版本(綠色版,解壓完就能用) 企業建議使用
源碼包 ----->Source code(能夠定製一些,二次開發的功能) 大企業會用到的vim
補充:
perconaDB:咱們建議可使用它的一些工具,percona-tookit
MariaDB:tokuDB存儲引擎,zabbix這種應用經常使用的緩存
2、MySQL5.7 二進制安裝過程
0、系統版本
[root@temp ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)安全
一、MySQL安裝以前的準備工做bash
1.1 安裝依賴包:
yum install -y ncurses-devel libaio-devel服務器
1.2 檢查防火牆
iptables
selinux
ip hosts 主機名
二、上傳軟件並解壓軟件
mkdir /data/
useradd mysql
cd /data
tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar
rm -rf mysql-5.7.20-linux-glibc2.12-x86_64.tar
rm -rf mysql-test-5.7.20-linux-glibc2.12-x86_64.tar.gz
tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
三、初始化數據(至關於dbca)
cd /data/mysql/bin
(方法1)
./mysqld --initialize --basedir=/data/mysql --datadir=/data/mysql/data --user=mysql
官方建議的:初始化完成以後,會生成臨時密碼
而且開啓安全策略(密碼長度、密碼過時時間180天、密碼複雜度)
(方法2)
./mysqld --initialize-insecure --basedir=/data/mysql --datadir=/data/mysql/data --user=mysql
四、書寫簡易配置文件(二進制包須要手工寫一個配置文件)
vim /etc/my.cnf
[mysqld]
basedir=/data/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
log_error=/data/mysql/data/mysql.err
user=mysql
[mysql]
socket=/tmp/mysql.sock
五、啓動mysql數據庫
cd /data/mysql/support-files
./mysql.server start
cp mysql.server /etc/init.d/mysqld
/etc/init.d/mysqld restart
六、驗證數據庫
6.1 修改環境變量
vim .bash_profile
export PATH=/data/mysql/bin:$PATH
source .bash_profile
6.2 登錄數據庫
mysql
===============================================
3、MySQL體系結構及管理
一、服務器端客戶端模型
Client ----> Server
在Linux中提供了兩種鏈接協議:
(1)本地鏈接數據庫使用:
Socket:
mysql -uroot -p -S /tmp/mysql.sock
(2)遠程鏈接
TCPIP:遠程鏈接
mysql -uroot -p -h 10.0.0.200 -P 3306
二、實例構成
mysql 單進程多線程的工做模式
mysqld後臺進程(老闆)
----->Master Thread(經理)
------>一堆線程(小弟)
預分配的內存結構(辦公室)
mysql實例=mysqld進程+Master thread+一堆線程+預分配的內存結構
三、mysqld服務構成
一條SQL語句的執行過程:
(1)鏈接層
mysql -uroot -p -h 10.0.0.200 -P 3306
(1.1)提供鏈接協議(socket、TCPIP)
(1.2)用戶名密碼驗證
(1.3)提供專用的鏈接線程(接受SQL、範圍執行結果)
select table_schema,table_name ,engine from information_schema.tables
where table_schema='mysql';
(2)SQL層
(2.1) 語法驗證
(2.2) 權限驗證
(2.3) 語義檢查(DDL、DML、DCL、DQL)
(2.4) 專用的解析器,解析對應的類型的SQL語句,生成執行計劃
(2.5) 優化器基於代價,選擇一個代價最低的執行計劃
(2.6) 執行器(負責執行優化器選擇執行計劃),獲得一個結果(獲取數據的方法)。
(2.7) 提供了查詢緩存 (SQLid+結果)query_cache,默認關閉的狀態。Redis(Tair)緩存數據庫配合使用。
(2.8) 提供查詢日誌
(3)存儲引擎層(File system)
拿着上層傳送過來的,獲取數據的方法,從磁盤取數據。
四、物理存儲結構(瞭解) 庫 ----> 目錄 表 ----> 多個文件構成(不通存儲引擎,存儲方式不一樣)