MySql監控

1 MySQL 是否可用? 這固然是首先要作的,若是你的MySQL服務都沒在跑了,其它監控從何談起?咱們可使用以下幾條命令來查看當前MySQL服務是否處於運行狀態(相應主機上的相應用戶應具備相應的權限):mysql

mysqladmin -h host_name/IP -u user_name -p ping 
    mysqladmin -h host_name/IP -u user_name -p status

或者sql

service mysqld status 
    /etc/init.d/mysqld status
    netstat -tnlp | grep 3306 #MySQL默認使用的端口
    ps aux | grep [m]ysqld

2 數據庫用戶及數據庫足夠安全? 是否存在不少 「host」 爲 「%」的用戶?莫非你是想要這些用戶能從世界任何一個地方登陸你的 MySQL server? 是否grant all on . 給了用戶?這些用戶有必要擁有這些權限麼? 記不記得MySQL還有個默認沒有密碼的root用戶?這但是件很恐怖的是,固然也可能成爲一件使人振奮的事! 什麼樣的用戶該賦予哪些權限能從哪些地方接入都是要慎重考慮的,不要爲了一時方便而給別有用心之人留下可乘之機! 咱們能夠經過以下命令來建立用戶及管理權限shell

CREATE USER 'user_nane' IDENTIFIED BY 'your_password';
GRANT privileges_to_user TO 'user_name'@'host_name/ip' [WITH GRANT OPTION];
FLUSH PRIVILEGS;
或者簡單一點
GRANT privileges_to_user TO 'user_name'@'host_name/ip' IDENTIFIED BY 'your_password' [WITH GRANT OPTION];
FLUSH PRIVILEGS;

3 鏈接數正常否? 鏈接數正常麼?有多少因爲客戶沒有正確關閉鏈接而死掉的鏈接?有多少失敗的鏈接? 是否是有惡意鏈接?仍是鏈接數不夠用了? 咱們能夠用數據庫

SHOW full processlist 
mysqladmin -h host_name/IP -u user_name -p processlist

來查看鏈接數,若是是root用戶將會看到全部的鏈接而其它用戶只能看到本身佔用的鏈接 能夠用 SHOW GLOBAL STATUS LIKE 'aborted_connects' 查看當前失敗鏈接數 能夠用 SHOW GLOBAL STATUS LIKE 'aborted_clients' 查看有多少因爲客戶沒有正確關閉鏈接而死掉的鏈接數 能夠用安全

SHOW CLOBAL VARIABLES LIKE 'max_connections'
SHOW GLOBAL STATUS LIKE 'max_connections'

查看最大鏈接數服務器

4 錯誤日誌! 錯誤日誌不止包含了MySQL服務在啓動和中止過程當中的相關信息,它還包括服務運行過程當中一些重要(危險)的信息。特別是日誌中帶有[error]的信息應獲得特殊的照顧!性能

5 Innodb 死鎖 當遇到死鎖時Innodb會回滾事務。瞭解死鎖什麼時候發生對於追溯其發生的根本緣由很是重要。咱們必須知道產生了什麼樣的死鎖,相關應用是否正確處理或已採起了相關措施。 能夠經過 SHOW ENGINE INNODB STATUS 查看死鎖相關情況日誌

6 服務配置文件最近有更改否? 是否是以爲最近MySQL服務跑着有點不對勁?最近更改了配置文件麼? 配置文件對MySQL服務來講是相當重要的,通常不要輕易更改!在改以前最好先備份一份,改動的地方要作好註釋(順便提一句,在備份數據庫的時候別忘記備份配置文件!)。code

7 慢查詢日誌 慢查詢日誌對SQL調優來講是很是重要的,它記錄了超過指定時間(long_query_time)的查詢語句;通常只在須要時開啓。server

8 從服務器落後了多少? MySQL的主從複製在生產環境中常常用到,從服務器能跟上主服務器的步伐麼?落後的時間(seconds_behind_master)是否在安全範圍內? 能夠經過 HOW SLAVE STATUS 查看從服務器當前狀態

9 全表掃描比例 計算方式以下

((Handler_read_rnd_next + Handler_read_rnd) / (Handler_read_rnd_next + Handler_read_rnd + Handler_read_first + Handler_read_next + Handler_read_key + Handler_read_prev))

對於全表掃描對性能的影響我想你們都比我清楚得多! 咱們能夠經過 SHOW GLOBAL STATUS LIKE 'Handler_read%' 取得相關參數的值再進行計算。 咱們應該知道爲何會產生全表掃描及是否有必要作出相應的調整。

相關文章
相關標籤/搜索