? ?雖然有很多不同的程序,但有些選項是公共的,比兔用戶名和密碼,使用方法和MySQL相同,
在這里統一列出,后面我們介紹不同的工具時,只討論個性的選項以及作用
以下是常用的MySQL程序:
程序名 | 作用 |
mysqld | MySQL的守護進程即MySQL服務器,mysqld是服務端的程序,需要使用mysql服務器mysqld一定要在運行狀態 |
mysql | mysql是一個客戶端程序,用于交互輸入SQL語句或批處理模式從文件執行SQL的命令行工具 |
mysqlcheck | 用于檢查,修復,分析和優化表的表客戶端工具 |
mysqldump | 將MySQL數據庫轉儲到SQL,文本或者XML文件中的客戶端 |
mysqlimport | 將文本文件導入到表的客戶端工具(備份和恢復) |
mysqladmin | 執行管理操作的客戶端,例如創建或刪除數據庫,重新加載授權表,將表刷新到磁盤以及重新打開日志文件,mysqladmin還可以用于從服務器檢索版本,進程和狀態信息 |
mysqlshow | 顯示數據庫,表,列和索引信息的客戶端 |
mysqldumpslow | 用于讀取和匯總慢速查詢日志內容的實用程序 |
mysqlbinlog | 從二進制日志中讀取SQL語句的使用程序,mysqlbinlog文件中包含的已執行SQL語句的日志,可用于從崩潰中恢復數據 |
mysqlslap | 客戶端負載工具,模擬多個客戶端同時訪問MySQL服務器,并報告每個階段的使用時間。 |
公共選項如下:?
選項--長格式 | 短格式 | 說明 |
--host | -h | --host=host_name,-h host_name 連接到指定主機上的MySQL服務 |
--post | -P | --port=port_num,-P port_num TCP/IP連接使用的端口號 |
--user | -u | --user=user_name,-u user_name 用于連接到MySQL服務器的用戶名 |
--password | -p | --password[=password],-p[password] 用于連接到MySQL服務器的密碼,可選,如果沒有給出,會提示用戶輸入。 |
--defaults-file | --defaults-file=file_name 使用指定的選項文件,如果該文件不存在,則會發生錯誤 | |
--compress | -C | 如果可能,壓縮客戶端和服務器之間傳輸的所有信息。 |
--protocol | 用于連接到服務器的傳輸協議,默認為TCP | |
--version | -V | 顯示版本信息并退出 |
--help | -? | 顯示幫助信息并退出 |
1.mysqlcheck - 表維護程序:
mysqlcheck客戶端用于執行表維護,可以對表進行分析,檢查,優化或者修復操作。
1.分析的作用是查看關鍵字的分布,能夠讓sql生成正確的執行計劃(支持InnoDB,MyISAM,NDB)
2.檢查的作用是檢查表的完整性以及數據庫表和索引是否損壞(支持InnoDB,MyLSAM,ARCHIVE,CSV)
3.優化的作用是回收空間,減少碎片,提高I/O(支持InnoDB,MyISAM,ARCHIVE)
4.修復的作用是修復可能已經損壞的表(支持MyISAM,ARCHIVE,CSV)
注意:
1.當使用mysqlcheck工具時,MySQL服務器必須在運行狀態。
2.執行過程中,有些表會被鎖定,所以這時其他操作將會被掛起。
3.并不是所有儲存引擎都會支持上面四種操作,如果遇到不支持的就會出錯。
4.執行表修復操作之前對表進行備份,在某些情況下可能會導致數據丟失。
使用方法:
1.mysqlcheck [options] db_name [tbl_name...];
db_name指數據庫的名字,必須要指定,后面的表名可以指定也可以不指定,不指定就是操作該數據庫下的所有表。
2.mysqlcheck [options] --databases db_name;
該操作可以操作多個數據庫,后面跟的是多個需要操作的數據庫名字。
3.mysqlcheck [options] --all-databases;
操作所有數據庫。
mysqlcheck有如下常用選項【options】,可以在命令行中指定,也可以在選項文件中通過[mysqlcheck]和[client]組進行指定。
選項 | 說明 |
--analyze,-a | 分析表 |
--check,-c | 檢查表中的錯誤,mysqlcheck的默認操作 |
--optimize,-o | 優化表 |
--repair,-r | 執行可能進行的任務修復操作,除了唯一鍵 |
?優化操作中,其實執行的是一個重建操作,官網中也建議不要經常去執行優化操作。
InnoDB存儲引擎是不支持修復操作的,如果要修復,就要把InnoDB存儲引擎轉化為MyIsam存儲引擎?
特殊操作 :
mysqlcheck程序的默認功能是對數據進行檢查操作(相當于--check),如果想要對表進行修復操作,可以通過復制原來的mysqlcheck程序,并重命名為mysqlrepair,并運行mysqlrepair即可,還可以創建mysqlcheck的快捷方式,并且把快捷方式命名為mysqlrepair然后直接運行,這時就執行的是修復操作,通過下表所示的命名方式可以改變mysqlcheck的默認行為:
程序名 | 說明 |
mysqlrepair | 默認行為是修復,相當于選項--repair |
mysqlanalyze | 默認行為是修復,相當于分析--analyze |
mysqloptimize | 默認行為是修復,相當于優化--optimize |
2.Mysqldump-數據庫備份程序:
作用:mysqldump客戶端程序可以執行邏輯備份并生成一份SQL語句,其中包含原始數據和表的定義以及表中的數據,以便實現對數據庫的簡單備份和復制,mysqldump命令可以生成CSV,或者XML格式的文件。
注意:
1.轉儲表時必須要有SELECT權限。
2.轉儲視圖時必須要有SHOW VIEW權限。
3.轉儲觸發器時必須要有TRIGGER權限。
4.如果沒有使用--single-transaction選項時必須要有LOCK TABLES權限。
5.如果沒有使用--no-tablespaces選項時必須要有PROCESS權限。
6.重新導入轉儲文件時,也需要相應的權限。
7.由于mysqldump是逐漸轉儲數據,所以不太適用于大數據的轉儲和導入。
?使用方法:
mysqldump的方法通常有以下使用,可以轉儲一個或多個表和數據庫,如下圖所示:
mysqldump [options] db_name [tbl_name...]
mysqldump [options] --databases db_name...
mysqldump [options] --all-databases
?常用選項:
mysqldump有如下選項,可以在命令行中指定,也可以在選項文件中通過[mysqldump]和[client]組進行指定。
選項 | 說明 |
--add-drop-database | 在每個CREATE DATABASE語句之前添加DROP DATABASE語句 |
--add-drop-table | 在每個CREATE TABLE語句之前添加DROP TABLE |
--add-drop-trigger | 在每個CREATE TRIGGER語句之前添加DROP TRIGGER語句 |
--databases,-B | --databases=db_name多個數據庫名用空格隔開 |
--comments,-i | 添加注釋到轉儲文件中 |
--compact | 緊湊格式輸出 |
--ignore-table | --ignore-table=db_name.table_name多個表用空格分開 |
--no-create-db,-n | 不要生成CREATE DATABASE語句 |
--no-create-info,-t | 不要為每個轉儲的表生成CREATE TABLE語句 |
--no-data,-d | 不轉儲表的內容 |
--triggers | 轉儲每個表中的觸發器 |
--xml,-X | 異XML格式輸出 |
示例:
test_ab:是指定的數據庫名字
/root/dump.sql:導出的路徑地址。??
?可以看到這個sql文件已經成功導出,我們可以打開看看:
?mysqladmin-mysql服務管理程序
mysqladmin是一個執行管理操作的客戶端,可以用來檢查服務器的配置和當前狀態,以及創建和刪除數據庫等。(使用mysqladmin的用戶必須要有管理員權限)
使用方法:
mysqladmin [options] [command [command-arg] ]...
?常用選項:
mysqladmin的常用選項參考公共選項那一部分,可以在命令行中指定,也可以在選項文件中通過[mysqladmin] 和[client]組進行指定。
語法中command表示命令,有些命令后面需要跟上一個參數,mysqladmin的常用命令:
1.version:顯示來自服務器的版本信息。
2.status:顯示簡短的服務器狀態消息。
uptime:mysql已經運行的秒數。
Threads:活動線程(客戶端)的數量?
Questions:自服務器啟動以來客戶端問題(查詢)數。
Slow queries:慢SQL的查詢數。
Opens:服務器已打開的表數。
Flush tables:服務器已執行flush-*,refresh和reload命令的數量。
Open tables:當前打開的表數。
?3.password new_password
設置新密碼
1.如果密碼中有空格,則必須要用雙引號把密碼括起來。
password后面可以省略密碼,mysqladmin會在之后提示輸入新密碼。
password作為最后一個command時才能省略密碼值,否則下一個參數將作為密碼值。
4.processlist:顯示活動服務器線程的列表。
5.kill id,id....
終止服務器線程,如果給出多個線程ID值,則列表中不能有空格。
默認mysql服務器可以維護150個活動連接,如果連接被用完,那么可以通過KILL指定去手動結束休眠時間最常的線程。
mysqlshow-顯示數據庫,表和列的信息:
mysqlshow可以快速查看數據庫,以及數據庫中表的列和其中的索引信息。
使用方法:
mysqlshow [數據庫名] [表名] [列名] ;
對應的數據庫名和表面還有列名可以用通配符*,?,%和_代替。
如果不指定數據庫,查詢的就是所有的數據庫名的列表信息。
如果不指定表,查詢的就是數據庫中所有匹配的表信息。
如果不指定列名,則查詢的就是表中的所有列信息。
注意:前提是當前的權限可以訪問的數據庫,表和列的信息。
常用選項:
mysqlshow的常用選項可以參考公共選項部分,可以在命令行中指定,也可以通過選項文件[mysqlshow]和[client]組中進行指定。
mysqldumpslow-總結慢查詢日志:
在平時使用mysql時,我們經常使用查詢語句,但是有些查詢語句執行時間非常長,當執行查詢語句的時候超過閾值的時候,就把這個叫做慢查詢,慢查詢的相關信息被日志記錄起來,這個日志就叫慢查詢日志,mysqldumpslow可以解析慢查詢日志文件并匯總其中內容
我們也可以查看慢查詢的時間(閾值),通過:
當,查詢的時間大于10秒并且開啟了慢查詢日志功能,這條sql就會被記錄在慢查詢日志中。
使用方法:
mysqldumpslow [options] [log_file...]?
如果有慢查詢的話,顯示如下:
mysqldumpslow會將相似查詢的分組并顯示摘要輸出,一般會把數字用“N”代替,字符串用“S”代替。
常用選項文件:
在使用-s,sort_type選項文件時,有以下的可選值:
t,at:按查詢時間或者平均查詢時間進行排序。
l,al:按鎖占用時間或者平均鎖占用時間排序。
r,ar:按照發送行數或者平均發送行數進行排序。
c:按照記數排序。
mysqlbinlog處理二進制日志文件:
當我們平時對數據庫的修改時,或者對數據進行增刪改時,都會被描述成一個‘事件’,每個‘事件’都會以二進制的形式被保存到一個日志文件中,這個文件就是服務器中的二進制日志文件,又稱Binary log或者binlog。
mysqlbinlog的作用:
以文本的形式讀取二進制文本中的內容。
注意:保存在默認數據目錄中:
Linux下的默認目錄:/var/lib/mysql
Windows下的默認目錄:C:\ProgramData\MySQL\MySQL Server 8.0\Data
這些binlog日志文件保存了具體的內容。
這里如果打開一個文件顯示如下:
常用選項:
mysqlbinlog有下面一些選項文件,可以通過命令行或者通過選項文件進行指定,在選項文件中通過[mysqlbinlog]或[client]組下進行指定:
mysqlslap-負載仿真客戶端
作用:
mysqlslap是一個診斷程序,用于模擬mysql服務器的客戶端,并報告每個階段的時間,就好比多個客戶端正在訪問服務器一樣。
使用方法:
mysqlslap可以使用以下語法:
mysqlslap [options];
注意事項:
1.可以通過--create或--query選項,指定包含SQL語句的字符串和包含sql語句的文件
2.如果指定一個包含sql語句的文件,默認情況每行必須包含一條語句
3.如果要把一條語句分為多行書寫,可以用--delimiter選項指定不同的分隔符。
4.不能在文件中包含注釋,因為mysqlslap不能解析注釋。
5.mysqlslap運行時分為三個階段:
? ? ? ? 5.1創建測試數據階段,創建用與測試的庫,表或者數據,這個階段使用單個客戶連接
? ? ? ? 5.2運行負載測試階段,這個階段可以使用許多客戶端連接。
? ? ? ? 5.3清理階段,執行刪除表,斷開連接層,斷開連接等操作,這個階段使用單個客戶端連接。
示例:
注意:圖片打錯了,應該是50個客戶端,每個客戶端發起200條語句。