lepus mysql 慢查询_天兔 -Lepus 慢查询分析平台配置
想要實現慢查詢查詢分析,需要在被監控端安裝percona-toolkit工具。
1、被監控端安裝軟件包
yum -y install
perl-IO-Socket-SSL
yum -y install perl-DBI
yum -y install perl-DBD-MySQL
yum -y install perl-Time-HiRes
2、被監控端解壓percona-toolkit工具包
[root@node1
src]# pwd
/usr/local/src
[root@node1
src]# tar
-xzf percona-toolkit-2.2.12.tar.gz
[root@node1
src]# ll
drwxrwxr-x 6
1000 1000 4096 Aug 17 16:19 percona-toolkit-2.2.12
-rw-r--r-- 1
root root 1392691 Aug 17 16:17 percona-toolkit-2.2.12.tar.gz
[root@node1
src]# ll
[root@node1
src]# cd
percona-toolkit-2.2.12
[root@node1
percona-toolkit-2.2.12]# perl Makefile.PL
[root@node1
percona-toolkit-2.2.12]# make && make
install
安裝好之后,pt工具會在/usr/local/bin目錄下(不同的pt版本安裝的位置可能不同)
3、從監控端的/usr/local/lepus/client/mysql目錄下把lepus_slowquery.sh腳本拷貝到被監控端(存放的位置沒有要求,可以放在/usr/local/sbin目錄下)
[root@node9
mysql]# scp lepus_slowquery.sh 192.168.2.225:/usr/local/sbin
4、在被監控端編輯scp過來的lepus_slowquery.sh腳本
[root@node1
sbin]# pwd
/usr/local/sbin
[root@node1
sbin]# vim
lepus_slowquery.sh ? ? ? ? #下面藍色字體是需要修改的,其他不用修改。
#config lepus database server#監控機配置
lepus_db_host="192.168.2.33"
#監控機的IP
lepus_db_port=3306 ? ??#監控機的端口號
lepus_db_user="lepus_user"
#監控機的用戶名
lepus_db_password="123456"
#監控機的密碼
lepus_db_database="lepus"
#使用的庫
#config mysql
server ? ??? ??#被監控端配置
mysql_client="/usr/local/mysql/bin/mysql"
#mysql軟件安裝目錄下,這個就是平時所用的mysql -uroot -proot123的那個mysql。
mysql_host="192.168.2.201"
#被監控端的IP
mysql_port=3306
#被監控端的端口號,生產中不要用這個,用別的
mysql_user="lepus_monitor"
#遠程登錄用戶名
mysql_password="123456" ? ??#密碼
#config slowqury#被監控端慢查詢日志配置(存放目錄)
slowquery_dir="/log/mysql/"
#MySQL慢日志存放目錄,也是被監控端存放lepus分析出來的慢查詢日志存放目錄
slowquery_long_time=1
#慢查詢時間
slowquery_file=`$mysql_client -h$mysql_host
-P$mysql_port -u$mysql_user -p$mysql_password -e "show variables like
'slow_query_log_file'"|grep log|awk '{print $2}'`
pt_query_digest="/usr/local/bin/pt-query-digest"
#pt工具軟件的安裝目錄下,安裝的時候關注一下安裝到的位置。
#config
server_id
lepus_server_id=271
#這個server_id指的是lepus監控平臺所分配的id,需要通過下面的方式來查看,參考截圖:
注意:
lepus_server_id,該值需要從系統中獲取。進入MySQL服務器配置,在部署腳本的主機前查詢到當前ID即為主機的server_id。
lepus_server_id必須和MySQL服務器配置里的對應服務器ID一一對應,否則您可能將無法查詢到該主機的慢查詢。
#collect
mysql slowquery log into lepus database
$pt_query_digest --user=$lepus_db_user
--password=$lepus_db_password --port=$lepus_db_port --review
h=$lepus_db_host,D=$lepus_db_database,t=mysql_slow_query_review --history
h=$lepus_db_host,D=$lepus_db_database,t=mysql_slow_query_review_history
--no-report --limit=100% --filter=" \$event->{add_column} =
length(\$event->{arg}) and \$event->{serverid}=$lepus_server_id "
$slowquery_file > /tmp/lepus_slowquery.log
##### set a
new slow query log ###########
tmp_log=`$mysql_client -h$mysql_host -P$mysql_port
-u$mysql_user -p$mysql_password -e "select
concat('$slowquery_dir','slowquery_',date_format(now(),'%Y%m%d%H'),'.log');"|grep
log|sed -n -e '2p'`
#config mysql
slowquery
$mysql_client
-h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "set global
slow_query_log=1;set global
long_query_time=$slowquery_long_time;"
$mysql_client
-h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "set global
slow_query_log_file = '$tmp_log'; "
#delete log
before 7 days
cd
$slowquery_dir
/usr/bin/find
./ -name 'slowquery_*' -mtime +7|xargs rm -rf ;
####END####
說明:
vim編輯結束保存之后需要變更腳本格式
顯示當前的格式(默認為dos,這是不能執行的):set
ff?
修改為Unix(變更為unix之后,腳本才可以成功執行):set
fileformat=unix
:wq退出vim編輯器
5、測試,使用存儲過程插入1萬條數據或者查詢一個數十萬行的表,查詢結束之后手動執行一下這個腳本,這樣在監控界面上就可以看到結果了。(測試SQL參見文檔底部)
[root@node1 sbin]# sh
lepus_slowquery.sh
6、測試成功之后,加入計劃任務。因為慢查詢做了按小時的切割,建議計劃任務時間間隔在1小時之內。
[root@node1
sbin]# crontab -e
crontab:
installing new crontab
[root@node1
sbin]# crontab -l
*/5 * * * *
/bin/sh /usr/local/sbin/lepus_slowquery.sh > /dev/null
2>&1
7、開啟慢查詢分析
在MySQL服務器管理里面電擊右側的編輯按鈕,進入服務器編輯界面。
配置slowquery為打開狀態
配置完成后,稍等片刻,即可在慢查詢分析平臺查看該庫的慢查詢日志。
8、開啟慢查詢自動郵件推送
慢查詢自動推送是指定時將系統收集到的慢查詢TOP數據定時推送給相應開發人員或者DBA進行優化,不需要在每臺數據庫上部署腳本。
MySQL慢查詢自動推送通過計劃任務(crontab)完成。如果需要推送,則需要在監控機(lepus所在主機)部署如下計劃任務。
——注1:www.xxx.com請替換成您自己的lepus監控WEB訪問地址,以下只是做一個示范,請勿照搬。
——注2:若沒有links命令,需要安裝:yum -y install
links
示例:
lepus所在的監控機執行:links
http://118.178.191.219:81/index.php/task/send_mysql_slowquery_mail
此時會在你配置的郵件中收到慢查詢的推送信息。
crontab中的示例:
00 08 * * * links
http://www.xxxx.com/index.php/task/send_mysql_slowquery_mail > /dev/null
2>&1
我的crontab內容:
*/5 * * * * /usr/bin/links
http://118.178.191.219:81/index.php/lp_mysql/slowquery > /dev/null
2>&1
計劃任務部署完成后,則會按照計劃任務配置的時間將慢查詢推送給對應人員。
慢查詢推送的郵件人員需要在MySQL主機配置里面設置即可,郵箱留空則該數據庫主機不會發送慢查詢推送。
部署完成后,在計劃任務的時間到達,您就可以看到推送的慢查詢郵件了。
郵件格式和內容如下所示:
參考計劃任務的書寫:0 8 * * * curl
http://118.178.191.219:81/index.php/task/send_mysql_slowquery_mail >/dev/null
2>&1
測試SQL:
1、創建兩張表:
part_tab(分區表)、no_part_tab(普通表)
DROP TABLE IF
EXISTS part_tab;
CREATE TABLE
part_tab(
c1 int
default NULL,
c2
varchar(30) default NULL,
c3 date not
null)
PARTITION BY
RANGE(year(c3))
(PARTITION p0 VALUES LESS THAN (1995)
,
PARTITION p1
VALUES LESS THAN (1996) ,
PARTITION p2
VALUES LESS THAN (1997) ,
PARTITION p3
VALUES LESS THAN (1998) ,
PARTITION p4
VALUES LESS THAN (1999) ,
PARTITION p5
VALUES LESS THAN (2000) ,
PARTITION p6
VALUES LESS THAN (2001) ,
PARTITION p7
VALUES LESS THAN (2002) ,
PARTITION p8
VALUES LESS THAN (2003) ,
PARTITION p9
VALUES LESS THAN (2004) ,
PARTITION p10
VALUES LESS THAN (2010) ,
PARTITION p11
VALUES LESS THAN (MAXVALUE));
DROP TABLE IF
EXISTS no_part_tab;
CREATE TABLE
no_part_tab(
c1 int
default NULL,
c2
varchar(30) default NULL,
c3 date not
null);
2、用存儲過程插入800萬條數據
delimiter
$$
drop
procedure if exists `load_part_tab` $$
CREATE
PROCEDURE load_part_tab()
begin
declare v int
default 0;
while v <
8000000
do
insert into
part_tab
values
(v,'testingpartitions',adddate('1995-01-01',(rand(v)*36520)mod
3652));
set v = v +
1;
end
while;
end$$
delimiter
;
call
load_part_tab();
總結
以上是生活随笔為你收集整理的lepus mysql 慢查询_天兔 -Lepus 慢查询分析平台配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: trove mysql 镜像_Linux
- 下一篇: python中字符串文件如何打开_pyt