甲骨人-MySQL網絡課-day01


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)
     拿着上層傳送過來的,獲取數據的方法,從磁盤取數據。

四、物理存儲結構(瞭解) 庫    ---->   目錄 表    ---->   多個文件構成(不通存儲引擎,存儲方式不一樣)

相關文章
相關標籤/搜索