首先介紹下 pt-stalk,它是 Percona-Toolkit 工具包中的一個工具,說起 PT 工具包大家都不陌生,平時常用的 pt-query-digest、 pt-online-schema-change 等工具都是出自于這個工具包,這里就不多介紹了。
創(chuàng)新互聯(lián)是專業(yè)的梁溪網(wǎng)站建設(shè)公司,梁溪接單;提供成都做網(wǎng)站、網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行梁溪網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
pt-stalk 的主要功能是在出現(xiàn)問題時收集 OS 及 MySQL 的診斷信息,這其中包括:
1. OS 層面的 CPU、IO、內(nèi)存、磁盤、網(wǎng)絡(luò)等信息;
2. MySQL 層面的行鎖等待、會話連接、主從復(fù)制,狀態(tài)參數(shù)等信息。
而且 pt-stalk 是一個 Shell腳本,對于我這種看不懂 perl 的人來說比較友好,腳本里面的監(jiān)控邏輯與監(jiān)控命令也可以拿來參考,用于構(gòu)建自己的監(jiān)控體系。
三、使用
接著我們來看下如何使用這個工具。
pt-stalk 通常以后臺服務(wù)形式監(jiān)控 MySQL 并等待觸發(fā)條件,當(dāng)觸發(fā)條件時收集相關(guān)診斷數(shù)據(jù)。
觸發(fā)條件相關(guān)的參數(shù)有以下幾個:
function:
°?默認(rèn)為 status,代表監(jiān)控 SHOW GLOBAL STATUS 的輸出;
°?也可以設(shè)置為 processlist,代表監(jiān)控 show processlist 的輸出;
variable:
°?默認(rèn)為 Threads_running,代表 監(jiān)控參數(shù),根據(jù)上述監(jiān)控輸出指定具體的監(jiān)控項;
threshold:
°?默認(rèn)為 25,代表 監(jiān)控閾值,監(jiān)控參數(shù)超過閾值,則滿足觸發(fā)條件;
°?監(jiān)控參數(shù)的值非數(shù)字時,需要配合 match 參數(shù)一起使用,如 processlist 的 state 列;
cycles:
°?默認(rèn)為 5,表示連續(xù)觀察到五次滿足觸發(fā)條件時,才觸發(fā)收集;
連接參數(shù):host、password、port、socket。
其他一些重要參數(shù):
iterations:該參數(shù)指定 pt-stalk 在觸發(fā)收集幾次后退出,默認(rèn)會一直運行。
run-time:觸發(fā)收集后,該參數(shù)指定收集多長時間的數(shù)據(jù),默認(rèn) 30 秒。
sleep:該參數(shù)指定在觸發(fā)收集后,sleep 多久后繼續(xù)監(jiān)控,默認(rèn) 300 秒。
interval:指定狀態(tài)參數(shù)的檢查頻率,判斷是否需要觸發(fā)收集,默認(rèn) 1 秒。
dest:監(jiān)控數(shù)據(jù)存放路徑,默認(rèn)為 /var/lib/pt-stalk。
retention-time :監(jiān)控數(shù)據(jù)保留時長,默認(rèn) 30 天。
daemonize:以后臺服務(wù)運行,默認(rèn)不開啟。
log:后臺運行日志,默認(rèn)為 /var/log/pt-stalk.log。
collect:觸發(fā)發(fā)生時收集診斷數(shù)據(jù),默認(rèn)開啟。
°?collect-gdb:收集 GDB 堆棧跟蹤,需要 gdb 工具。
°?collect-strace:收集跟蹤數(shù)據(jù),需要 strace 工具。
°?collect-tcpdump:收集 tcpdump 數(shù)據(jù),需要 tcpdump 工具。
general_log=[on|off] #是否啟用通用查詢?nèi)罩?/p>
general_log_file[=filename] #通用查詢?nèi)罩疚恢眉懊?/p>
這2個參數(shù)可以開啟mysql通用日志,里面記錄了你執(zhí)行過的語句
應(yīng)該對你有用。但是開啟后,日志增長會非???/p>
1、打開數(shù)據(jù)庫配置文件my.ini
(一般在數(shù)據(jù)庫安裝目錄)(D:\MYSQL)
2、在數(shù)據(jù)庫的最后一行添加
log=log.txt
代碼
3、重啟mysql數(shù)據(jù)庫
4、去數(shù)據(jù)庫數(shù)據(jù)目錄
我的是(D:\MYSQL\data)
你會發(fā)現(xiàn)多了一個log.txt文件
我的是在C:\Documents
and
Settings\All
Users\Application
Data\MySQL\MySQL
Server
5.5\data
測試:
1、對數(shù)據(jù)庫操作
2、查看log.txt文件內(nèi)容
如果發(fā)現(xiàn)有變化說明你就可以監(jiān)控到mysql數(shù)據(jù)庫的變化
數(shù)據(jù)庫的查詢
刪除
更新
插入都可以查到
希望本篇文章可以幫助大家更快的二次開發(fā)
^_^
日志文件類型概述:
1.
錯誤日志
記錄啟動、運行或停止mysqld時出現(xiàn)的問題。
My.ini配置信息:
#Enter
a
name
for
the
error
log
file.
Otherwise
a
default
name
will
be
used.
#log-error=d:/mysql_log_err.txt
cacti監(jiān)控mysql數(shù)據(jù)庫的方法
環(huán)境:
Cactiez或者cacti主機(jī):192.168.12.5
被監(jiān)控mysql數(shù)據(jù)庫主機(jī):192.168.5.231
1. 安裝監(jiān)控插件
cd /opt
tar -xzvf mysql-cacti-templates-1.1.2.tar.gz
cp /opt/mysql-cacti-templates-1.1.2/ss_get_mysql_stats.php /var/www/html/scripts/
其實里面我們要監(jiān)控mysql用到的是:acti_host_template_x_db_server_ht_0.8.6i.xml和mysql_definitions.pl
其他則是監(jiān)控Apache和Nginx的,接下來我們會介紹到,這里不再詳細(xì)的講了。
chown -R apache.apache /var/www/html/scripts
chmod -R 755 /var/www/html/scripts
使用 http 訪問 cacti主機(jī) 導(dǎo)入
/opt/mysql-cacti-templates-1.1.2/cacti_host_template_x_db_server_ht_0.8.6i.xml
默認(rèn)CactiEZ 和Cacti別是 admin admin
控制臺 - 導(dǎo)入導(dǎo)出 - 模板導(dǎo)入 - 瀏覽
選中 cacti_host_template_x_db_server_ht_0.8.6i.xml
保存
2. 配置cacti的mysql插件
修改 ss_get_mysql_stats.php
vi /var/www/html/scripts/ss_get_mysql_stats.php
$mysql_user = 'cacti';
$mysql_pass = 'cacti';
$cache_dir = "/tmp/cacti/cache/";
這個賬戶和密碼是 被監(jiān)控端主機(jī) 給 Cacti主機(jī) 授權(quán)的 賬戶和密碼
Cacti需要這個賬戶和密碼去連接 被監(jiān)控機(jī) 查詢狀態(tài)
mkdir -p /tmp/cacti/cache
chown -R apache.apache /tmp/cacti
chmod -R 755 /tmp/cacti
設(shè)置 cacti 緩存目錄在 /tmp/cacti/cache/ 并給予權(quán)限
3. 配置被監(jiān)控端(192.168.5.231)的mysql 給 cacti 主機(jī)授權(quán)
mysql -uroot -p
grant process,super on *.* to 'cacti'@'192.168.12.5' identified by 'cacti';
exit
grant process,super on *.* to '賬戶'@'Cacti主機(jī)IP地址' identified by '密碼';此命令意義
只允許IP為 192.168.12.5 的主機(jī) 以賬戶 cacti 密碼 cacti 去訪問 本機(jī)數(shù)據(jù)
4. 在Cacti主機(jī)上(192.168.12.5) 監(jiān)控Mysql
4.1 為主機(jī)添加mysql模塊
控制臺 - 管理 - 設(shè)備 - 選中之前創(chuàng)建好的主機(jī)
然后移到最下面的 添加圖形模版 選中 Mysql相關(guān)模塊 然后保存
4.2 為mysql模塊創(chuàng)建圖形
控制臺 - 創(chuàng)建 - 創(chuàng)建圖形 - 選中該主機(jī) - 選中mysql模塊 - 創(chuàng)建
4.3 插件mysql性能數(shù)據(jù)
監(jiān)視器 - 選中該主機(jī) - 查閱對應(yīng)的mysql
完畢
-----一些數(shù)據(jù)庫操作語句
mysqld_safe --user=mysql
mysql -uroot -p
mysql -uroot -proot
grant ALL PRIVILEGES ON *.* to ‘root’@"%" identified by "root" WITH GRANT OPTION;
exit
grant select,insert,update,delete on cacti.* to ‘cacti’@”*”identified by "cacti";
exit
grant process,super on *.* to 'cacti'@'%' identified by 'cacti';
grant all privileges on cacti.* to ‘cacti’@"%" identified by "cacti";
客戶端開啟Cacti訪問本機(jī)mysql的權(quán)限
grant process,super on *.* to 'cacti'@'192.168.12.5' identified by 'cacti';
grant process,super on *.* to 'cacti'@'192.168.5.231' identified by 'cacti';
= = = = =
mysql -ucacti -pcacti -h 192.168.5.231
有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數(shù)據(jù)檢測恢復(fù)工具。前者使用起來比較簡便。推薦使用。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現(xiàn)的結(jié)果說Status是OK,則不用修復(fù),如果有Error,可以用:
repair table tabTest;
進(jìn)行修復(fù),修復(fù)之后可以在用check table命令來進(jìn)行檢查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用于MYISAM類型的數(shù)據(jù)表,而isamchk適用于ISAM類型的數(shù)據(jù)表。這兩條命令的主要參數(shù)相同,一般新的系統(tǒng)都使用MYISAM作為缺省的數(shù)據(jù)表類型,這里以myisamchk為例子進(jìn)行說明。當(dāng)發(fā)現(xiàn)某個數(shù)據(jù)表出現(xiàn)問題時可以使用:
myisamchk tablename.MYI
進(jìn)行檢測,如果需要修復(fù)的話,可以使用:
myisamchk -of tablename.MYI
關(guān)于myisamchk的詳細(xì)參數(shù)說明,可以參見它的使用幫助。需要注意的時在進(jìn)行修改時必須確保MySQL服務(wù)器沒有訪問這個數(shù)據(jù)表,保險的情況下是最好在進(jìn)行檢測時把MySQL服務(wù)器Shutdown掉。
另外可以把下面的命令放在你的rc.local里面啟動MySQL服務(wù)器前:
[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL監(jiān)聽的Sock文件位置,對于使用RPM安裝的用戶應(yīng)該是/var/lib/mysql/mysql.sock,對于使用源碼安裝則是/tmp/mysql.sock可以根據(jù)自己的實際情況進(jìn)行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數(shù)據(jù)庫存放的位置。
需要注意的時,如果你打算把這條命令放在你的rc.local里面,必須確認(rèn)在執(zhí)行這條指令時MySQL服務(wù)器必須沒有啟動!檢測修復(fù)所有數(shù)據(jù)庫(表)
把phpstudy中mysql的路徑放入環(huán)境變量:
(win7)右鍵我的電腦,屬性,高級系統(tǒng)設(shè)置
環(huán)境變量,系統(tǒng)變量,修改“Path”的值,加入如上路徑。