MySQL自帶工具使用介紹
1)mysql命令:mysql命令事是使用最多的命令工具了,為用戶提供了一個命令行接口來操作管理MySQL的服務器。
命令格式:
Usage:mysql [OPTIONS][database]
例:mysql -e "select user,host from user" mysql
mysql --help 可以得到相應的基礎使用幫助信息
-e : --execut=name :我們要執行-e後面的命令,但是並不通過mysql連接進入mysql交互界面。此參數在我們寫一些基本的mysql檢查和監控腳本中非常有用。
-E :--vertical :登陸之後的所有查詢結果都將以縱列顯示
--prompt=name :對於運維的人來說是一個非常重要的參數,其主要功能是定制自己的mysql提示符的顯示內容。個人強烈建議:\\u@\\h:\\d\\r:\\m:\\s>
br/>個人強烈建議:\\u@\\h:\\d\\r:\\m:\\s>
\h:表示主機名
\d:表示當前數據庫
\r:小時(12小時制)
\m:分鐘
\s:秒
--tee=name:用來告訴mysql,將所有的輸入和輸出的內容記錄到文件。在我們進行較大的維護變更的時候,為了方便被查,最好將所有的輸入和輸出的內容記錄下來,方便被查。
或者在mysql提示符下面執行 tee /path
2)mysqladmin:提供的功能都是與MySQL相關的管理功能
Usage: mysqladmin[OPTIONS]command command
ping :ping命令可以很容易檢測MySQL server是否還能正常提供服務
例: mysqladmin -utest -h192.168.1.1 -p ping
註意:1、地址192.168.1.1 是MySQL server的ip(指本機或別的物理機上的ip)
2、MySQL server 的防火墻要允許3306/tcp 通信
3、test 一定要是MySQL sever上的授權用戶
mysqladmin status 命令結果有:
Uptime:是MySQL服務器運行的秒數
Threads:活躍線程的數量即開啟的會話數
Questions:服務器啟動以來客戶的問題(查詢數目)(只要跟mysql做交互,不管查詢表,還是查詢服務器狀態都記一次)
slow queries:是慢查詢的數量
Opens:已經打開的數據庫表的數量
Flush tables:mysql 已經執行的flush tables,refresh和reload命令的數量
註:fflush table:刷新表(清除緩存)
reload:重載授權表
refresh:洗掉所有表並關閉和打開日誌文件
open:打開數據庫的表的數量,以服務器啟動開始
Querish per second avg:select語句平均查詢的時間
Menory in use:分配的內容(只有在MySQL用--with-debug編譯時可用)
MAX memory used:分配的最大內存(只有在MySQL用--with-debug編譯時可用)
processlist:獲取當前的數據庫的連接線程信息
監控mysql進程運行狀態
3) mysqldump:這個工具的功能就是將MySQL server中的數據以SQL語句的形式從數據庫中dump成文本文件(一種備份工具,大量數據不推薦,因為恢復太慢)
4)mysqlbinlog:主要是分析MySQL server所產生的二進制文件
附加知識點:
1)INFORMATION_SCHEMA 數據字典,次數據庫存儲了其他所有數據庫的信息(元數據)
元數據是關於數據的數據,如database name 或table name ,列的數據類型或訪問權限等。
INFORMATION_SCHEMA庫中的主要系統表
TABLES表:提供了關於關於數據庫中的表和視圖信息(table_schame字段代表 數據表所屬的數據庫名)
例:select * from information——schema.tables wehere table_schema=‘數據庫‘
COLUMNS表:提供了表中的列信息,詳細表述了某張表的所有列以及每個列的信息。
select * from information_schema.columns where table_schema=‘數據庫名‘ and table_name=‘表名‘
TABLE_CONSTRAINTS表:存儲主鍵約束,外鍵約束,唯一約束,check約束,各字段的說明信息。
select * from information_schema.table_constraints where table_schema=‘數據庫名‘ and table_name=‘表明‘
STAISTICS表:提供了關於表索引的信息
select * from information_schema.staistics wehere table_schema=‘數據庫名‘ and table_name=‘表名‘
2)performance_schema性能字典,此數據庫為數據庫性能優化提供了重要的參考信息
3)MySQL數據庫:該數據庫也是個核心數據庫,存儲用戶的權限信息與幫助信息。
4)MySQL5.7 提供了sys系統數據庫,sys數據庫裏面包含了一系列的存儲過程,自定義函數以及視圖來幫助我們快速的了解系統的元數據信息。sys系統數據庫結合了information_schema和performance_schema的相關數據,讓我們更加容易的檢索元數據。
mysqlslap性能測試MySQL的存儲引擎
mysqlslap是MySQL自帶的基準測試工具,
優點:查詢數據,語法簡單,靈活容易使用,該工具可以模擬多個客戶端同時並發的向服務器發出查詢更新,給出性能測試數據,而且提供了多種引擎的性能比較,mysqlslap為mysql性能優化前後提供了直觀的驗證證據。
常用選項的解釋:
--concurrency (-c) 代表並發數量,多個可以用逗號隔開。
--engins 代表要測試的引擎,可以有多個,用分號隔開
--iterations (-i) 代表要運行這些測試多少次,即運行多少次後,得到結果
--auto-generata-sql 代表系統自己生成的SQL腳本來測試
--auto-generate-sql-load-type:代表要測試的是讀是寫還是混合模式(read,write,updata,mixed)
--number-of-queries 代表總共要運行多少次查詢。
--debug-info:代表要額外輸出CPU以及內存的相關信息(註:只有在MySQL用--with-debug編譯時即可)
--number-int-cols :代表測試表中的integer類型的屬性有幾個
--number-char-cols :代表測試表的char類型字段數量
--create-schema 代表自己定義的模式(在MySQL中也就是庫即創建測試的數據庫)
-query 代表自己SQL腳本
--only-print 如果只想打印看看SQL語句是什麽,可以用這個選項
--csv=name 生產CSV格式數據文件
例子:用我們自己定義的SQL腳本或語句來測試
首先準備準備好要測試的數據庫表
#!/bin/bash
HOSTNAME="localhost"
PORT="3306"
USERNAME="root"
PASSWORD="123456"
DBNAME="test1"
TABLENAME="tb1"
#create database
mysql -h ${HOSTNAME} -P ${PORT} -u ${USERNAME} -p${PASSWORD} -e "drop database if exists ${DBNAME}"
create_db_sql="create database if not exists ${DBNAME}"
mysql -h ${HOSTNAME} -P ${PORT} -p${PASSWORD} -u ${USERNAME} -e "${create_db_sql}"
#create table
create_table_sql="create table if not exists ${TABLENAME}(stuid int not null primary key,stuname varchar(20) not null,stusex char(1) not null,cardid carchar(20) not null,birthday datetime,entertime datetime,address varchar(100) default null)"
mysql -h ${HOSTNAME} -P{PORT} -p${PASSWORD} -u ${USERNAME} ${DBNAME} -e "${create_table_sql}"
#insert data to table
i=1
while [$i -le 20000]
do
insert_sql="insert into ${TABLENAME} values ($i,‘zhangsan‘,‘1‘,‘1234567890‘,‘1995-09-09‘,‘2018-09-09‘,‘zhongguo‘,‘beijing‘,‘didu‘)"
mysql -h ${HOSTNAME} -u ${USERNAME} -P {PORT} -p${PASSWORD} ${DBNAME} -e "${insert_sql}"
let i++
done
#select data
select_sql="select count(*) from ${TABLENAME}"
mysql -h ${HOSTNAME} -P {PORT} -p${PASSWORD} -u ${USERNAME} ${DBNAME} -e "${select_sql}"
執行腳本生成mysqlslap工具需要的測試表
執行mysqlslap工具進行測試
mysqlslap --defaults-file=/etc/my.cnf --concurrency=10,20 --iterations=1 --create-schema=‘test‘ --query=‘select * from test.tb1‘ --engine=myisam,innodb --number-of-queries=2000 -uroot -p123456 -verbose
MySQL自帶工具使用介紹