Jmeter + prometheus + Grafana + Mysql_exporter 進行監(jiān)控蒲祈。 提示:只是自己學(xué)習(xí)筆記簇秒,自己做記錄用焊傅,讀者應(yīng)該看不懂策幼。請見諒
學(xué)習(xí)目標
- 學(xué)會對Mysql數(shù)據(jù)庫的my.cnf文件進行配置
- 學(xué)會使用grafana監(jiān)控服務(wù)器的數(shù)據(jù)庫,監(jiān)控服務(wù)器可能出現(xiàn)的性能瓶頸
- 當遇到性能瓶頸時,學(xué)會進行調(diào)優(yōu)操作
數(shù)據(jù)庫關(guān)鍵指標:
- TPS 美妙事務(wù)數(shù)
- QPS 每秒查詢量
- 連接數(shù)
- 查詢吞吐量
- 查詢執(zhí)行能力
- 查詢緩存
登錄數(shù)據(jù)庫肺缕,輸入sql
show global status like 'questions'; #數(shù)據(jù)庫的總計查詢數(shù)
show global status like 'uptime'; #數(shù)據(jù)庫的總計運行時間
每秒事務(wù)數(shù)=數(shù)據(jù)庫的總計查詢數(shù) ÷ 數(shù)據(jù)庫的總計運行時間
my.cnf文件配置
cd /etc,打開my.cnf 如果沒有這個文件,就新建一個
log_output=table #設(shè)置日志的輸出方式,一種是table,另一種是file
slow_query_log=1 #是否打開慢查詢?nèi)罩?設(shè)置1表示打開,0表示關(guān)閉
#慢查詢,指查詢速度比較慢的語句,當數(shù)據(jù)庫發(fā)現(xiàn)有語句執(zhí)行速度比較慢時,就會將其記錄到日志中
#slow_query_log_file=/var/log/slow_log #如果上一行選擇輸出到file中,那么這一行填寫文件的路徑
long_query_time=1 #設(shè)置慢查詢的閾值,一般設(shè)置為1-10秒
log_queries_not_using_indexes=0 #是否記錄未使用索引的情況,1表示打開,0表示關(guān)閉
#索引,INDEX,一張表中如果有索引,可以加快檢索速度
max_connections=512 #最大連接數(shù)
datadir=/var/lib/mysql #數(shù)據(jù)文件的存放目錄,一般不要改
socket=/var/lib/mysql/mysql.sock #使用socket時,套接字文件的位置,一般不要改
如果對配置文件進行了修改,需要重啟一下mysql
service mysqld restart
system start mysqld
數(shù)據(jù)庫調(diào)優(yōu)
#慢查詢語句舉例,這個不是項目中的語句,只是舉例
select * from sq_orderform; #這個語句沒有where條件,在數(shù)據(jù)量較大時,非常容易出現(xiàn)慢查詢
#刪除訂單表SQ_ORDERFROM中的某個外鍵與索引,此時再查詢訂單,就有可能出現(xiàn)慢查詢
ALTER TABLE sq_orderform DROP FOREIGN KEY FK9BD986FB1E208F02; #刪除外鍵
ALTER TABLE sq_orderform DROP INDEX FK9BD986FB1E208F02; #刪除索引
#當GRAFANA監(jiān)控到了慢查詢語句時,可以在navicat中執(zhí)行以下語句
select * from mysql.slow_log order by start_time desc;
#按時間倒序顯示最近的慢查詢語句
#mysql.slow_log 慢查詢?nèi)罩颈?如果出現(xiàn)了慢查詢,mysql會將出現(xiàn)慢查詢的語句寫入這個表中
#慢查詢語句,記錄在sql_text列
#在工作中,將慢查詢的SQL語句發(fā)給開發(fā)處理
#開發(fā)調(diào)查問題后,發(fā)現(xiàn)沒有user_id的索引,那么可以添加一下
ALTER TABLE SQ_ORDERFORM ADD CONSTRAINT FK9BD986FB1E208F02 FOREIGN KEY(USER_ID)
REFERENCES SQ_USER(ID) ON DELETE RESTRICT ON UPDATE RESTRICT;
在navicat中,拿到一個慢查詢語句,可以嘗試進行分析,選中語句,點擊"解釋已選擇的",在下方的解釋1里,找到type的值CONST,EQ_REF,REF,RANGE,INDEX,ALL
執(zhí)行效率CONST > EQ_REF > REF > RANGE > INDEX > ALL
CONST 查詢索引字段,且表中只有一行數(shù)據(jù)
EQ_REF 主鍵或者唯一索引
REF 非唯一索引
RANGE 索引的范圍查詢
INDEX 索引
ALL 全表掃描
遠程連接數(shù)據(jù)庫時的注意點
#Mysql數(shù)據(jù)庫初始設(shè)置下,是不可以遠程訪問的,需要update一個表
#都市商城服務(wù)器的Mysql不需要設(shè)置
mysql -u root -p
輸入sq #登錄到數(shù)據(jù)庫
use mysql #進入mysql庫
update user set host='%' where user='root'; #允許遠程訪問數(shù)據(jù)庫
flush privieleges; #讓更改立刻生效