MySQL架構和結構分析html
官方架構圖mysql
內部組件結構圖sql
MySQL安裝方式shell
MySQL初始化數據庫
MySQL工做模式及經常使用命令緩存
交互式模式:mysql>bash
# 交互式模式下的客戶端命令 mysql> help # 獲取命令幫助 mysql> \? # 同上 mysql> \c # 取消命令執行 mysql> \g # 發送命令至服務器端 mysql> \G # 發送命令至服務器端,垂直顯示結果 mysql> \q # 退出 mysql> \! # 執行系統shell命令 mysql> \s # 顯示服務器端狀態信息 mysql> \. /path/to/mysql_script.sql # 批量執行sql mysql> \u # 切換數據庫 # 交互式模式下的服務器端命令(須要命令提示符,默認爲分號) mysql> help contents 可以獲取幫助的分類信息 mysql> help keyword 獲取關鍵字的幫助信息,如help select
腳本模式:mysql < /path/to/mysql_script.sql服務器
注:經常使用於主從複製批量導入數據時架構
鏈接MySQLsocket
鏈接類型
本地通訊:客戶端與服務器端位於同一主機,並且還要基於127.0.0.1(localhost)地址或lo接口進行通訊
基於sock文件通訊:如mysql -hlocalhost -uroot -p --socket=/tmp/mysql.sock
遠程通訊:客戶端與服務器端位於不一樣的主機,或在同一主機使用非迴環地址通訊
基於 TCP socket通訊
mysql客戶端選項
實例
-u,--user # 指定鏈接用戶 -h,--host # 指定鏈接主機 -p,--password # 指定鏈接密碼 --protocol={tcp|socket|memory|pipe} # 指定鏈接協議 -P,--port # 指定鏈接端口,默認監聽端口:tcp/3306 --socket # 指定本地鏈接的sock文件 --compress # 數據傳輸採用壓縮格式 -D,--database # 指定鏈接後默認使用的數據庫 -H,--html # 指定產生html輸出 -X,--xml # 指定產生xml輸出 --safe-updates # 拒絕使用無where子句的update或delete命令 # 使用實例:mysql -hlocalhost -uroot -p
mysql命令提示符
mysql> # 等待輸入命令 -> # 等待繼續輸入 ‘> # 等待結束單引號 「> # 等待結束雙引號 `> # 等待結束反引號 /*> # 註釋,不執行,需以*/結束註釋
mysql的快捷鍵
ctrl+w:# 刪除光標以前的單詞 ctrl+u:# 刪除光標以前至命令行首的全部內容 ctrl+y:# 粘貼全部ctrl+w或ctrl+u刪除的內容 ctrl+a:# 移動光標至行首 ctrl+e:# 移動光標至行尾
MySQL管理工具mysqladmin
# 使用格式:mysqladmin [options] command [arg] [,command [arg]] … # 經常使用的command包括: create DB_Name:# 建立數據庫 drop DB_Name:# 刪除數據庫 debug:# 打開調試日誌並記錄於error log中 status:# 顯示簡要狀態信息 --sleep #:設置間隔時長 --count #:設置顯示的批次 extended-status:# 顯示擴展信息,輸出mysqld的各狀態變量及賦值,至關於執行「mysql> show global status」 variables:# 輸出mysqld的各服務器變量 flush-hosts:# 清空主機相關的緩存:DNS解析緩存;此前由於鏈接錯誤次數過多而被拒絕訪問mysqld的主機列表 flush-logs:# 日誌滾動,只能滾動二進制日誌和中繼日誌 refresh:# 至關於同時使用flush-hosts和flush-logs flush-privileges:# 通知mysqld重讀受權表 reload:# 功能同「flush-privileges」 flush-status:# 重置狀態變量的值 flush-tables:# 關閉當前打開的表文件句柄 flush-threads:# 清空線程緩存 kill:# 殺死指定的線程,需指定線程ID;能夠一次殺死多個線程,以逗號分隔,但不能有多餘空格 password:# 修改當前用戶的密碼 ping:# 模擬ping操做,檢測mysqld是否在線 processlist:# 顯示mysqld線程列表 shutdown:# 關閉mysqld進程 start-slave,stop-slave:# 啓動/關閉從服務器線程
MySQL數據文件解析
MyISAM表:每表有3個文件,都位於數據庫目錄中
tb_name.frm:# 表結構定義文件 tb_name.MYD:# 數據文件 tb_name.MYI:# 索引文件
InnoDB表:有2種存儲方式
默認方式:每表有1個獨立文件和一個多表共享的文件
tb_name.frm:# 表結構定義文件,位於數據庫目錄中 ibdata#:# 共享的表空間文件,默認位於數據目錄(datadir指向的目錄)中,如ibdata1
自定義方式:獨立的表空間
tb_name.frm:#表結構定義文件 tb_name.ibd:# 獨有的表空間文件 # 在MySQL初始化中打開獨立表空間功能的方法: vi /etc/my.cnf (在[mysqld]段下添加) innodb_file_per_table = ON # 注:表空間:table space,是由InnoDB管理的特有格式的數據文件,內部可同時存儲數據和索引