MySQL架構和結構分析
官方架構圖
內部組件結構圖
MySQL安裝方式
MySQL初始化
MySQL工作模式及常用命令
交互式模式:mysql>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # 交互式模式下的客戶端命令 ??? 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
注:常用于主從復制批量導入數據時
連接MySQL
連接類型
本地通信:客戶端與服務器端位于同一主機,而且還要基于127.0.0.1(localhost)地址或lo接口進行通信
? ?基于sock文件通信:如mysql -hlocalhost -uroot -p --socket=/tmp/mysql.sock
遠程通信:客戶端與服務器端位于不同的主機,或在同一主機使用非回環地址通信
? ?基于 TCP socket通信
mysql客戶端選項
實例
1 2 3 4 5 6 7 8 9 10 11 12 | -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命令提示符
1 2 3 4 5 6 | mysql>? # 等待輸入命令 ->? # 等待繼續輸入 ‘>? # 等待結束單引號 “>? # 等待結束雙引號 `>? # 等待結束反引號 /*>? # 注釋,不執行,需以*/結束注釋 |
mysql的快捷鍵
1 2 3 4 5 | ctrl+w: # 刪除光標之前的單詞 ctrl+u: # 刪除光標之前至命令行首的所有內容 ctrl+y: # 粘貼所有ctrl+w或ctrl+u刪除的內容 ctrl+a: # 移動光標至行首 ctrl+e: # 移動光標至行尾 |
MySQL管理工具mysqladmin
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # 使用格式: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個文件,都位于數據庫目錄中
1 2 3 | tb_name.frm: # 表結構定義文件 tb_name.MYD: # 數據文件 tb_name.MYI: # 索引文件 |
InnoDB表:有2種存儲方式
默認方式:每表有1個獨立文件和一個多表共享的文件
1 2 | tb_name.frm: # 表結構定義文件,位于數據庫目錄中 ibdata #:# 共享的表空間文件,默認位于數據目錄(datadir指向的目錄)中,如ibdata1 |
自定義方式:獨立的表空間
1 2 3 4 5 6 | tb_name.frm: #表結構定義文件 tb_name.ibd: # 獨有的表空間文件 # 在MySQL初始化中打開獨立表空間功能的方法: vi ?/etc/my .cnf (在[mysqld]段下添加) innodb_file_per_table = ON # 注:表空間:table space,是由InnoDB管理的特有格式的數據文件,內部可同時存儲數據和索引 |
本文轉自 xxrenzhe11 51CTO博客,原文鏈接:http://blog.51cto.com/xxrenzhe/1395061,如需轉載請自行聯系原作者