MySQL DBA 面試題目 答疑記 《01》

來源:互聯網
上載者:User

標籤:http   0 rows   cal   效能   通過   --   分布式部署   rip   自己   



MySQL DBA 面試題解惑

 

一個朋友發了文章,詢問一些mysql dba面試題,回答的人比較少,他把地址給了我,只是我沒有那個網站的帳號,所以就整理下發在我的blog裡面,大家可以參考下,也歡迎提出更加合理更加高效的處理方案。

 

 

1、對於一台DB伺服器,有哪些是必須監控的基礎指標,如何得到這些值?

必須監控的有:cpu負載、記憶體使用量率、磁碟大小、io讀寫、網路流量、db連接埠流量、資料庫用戶端串連數等

 

如何得到這些值:可以通過第三方工具比如cacti、zabbix等;

Cacti監控mysql參考:http://blog.csdn.net/mchdba/article/details/27404109

zabbix監控mysql參考:http://blog.csdn.net/mchdba/article/details/51447750

 

 

2、簡單介紹一個你用過的MYSQL狀態探測或監控工具,第三方的或自己寫的都可以,說出你覺得最好用的地方

自己使用過的有nagios、cacti以及zabbix;一般nagios和cacti搭配使用;zabbix可以單獨使用。

 

(1)   Nagios的優勢在於警示內容豐富第三方控制項成熟,cacti的圖畫效果比較清晰逼真;

(2)   Zabbix的優勢在於分布式部署,快速搭建,但是監控圖比較粗糙,很多模板都需要自己實現,而且版本之間改動太大模板不能相容。

 

Zabbix心得參考我的blog:http://blog.csdn.net/mchdba/article/category/2220809

 

Nagios心得參考:http://blog.csdn.net/mchdba/article/category/2247105

 

Cacti心得參考:http://blog.csdn.net/mchdba/article/category/2292853

 

 

 

3、簡單介紹一個你用過的MySQL日誌(slow/general/binary log)分析工具,第三方的或自己寫的都可以,說出你覺得最好用的地方

Generl、binary log只是偶爾作為驗證使用,很少經常哪來分析的,畢竟消耗效能太大了,倒是slow log經常作為分析的依據。

 

分析下自己做的比較簡單的處理slow log的指令碼:

# check_slow.sh 分析slow log指令碼,按照執行數和執行時間來排序

[[email protected]_test_121_61 ~]# vim /home/data/mysql/script/check_slow.sh

 

datestr=`date -d "1 day ago" +"%Y-%m-%d"`

mysql_command=/usr/local/mysql/bin/mysql

mysqlslow_command=/usr/local/mysql/bin/mysqldumpslow

# su - mysql

cd /home/data/mysql/slowlog/

mkdir $datestr

cd $datestr

$mysql_command -uroot --password=‘‘ -e ‘set global slow_query_log=0;‘;

$mysql_command -uroot --password=‘‘ -e ‘SHOW VARIABLES LIKE "slow_query_log";‘;

cp /home/data/mysql/data/db-master-1-slow.log .

 > /home/data/mysql/data/db-master-1-slow.log

# > /data/mysql/data/localhost-slow.log

$mysql_command -uroot --password=‘‘ -e ‘set global slow_query_log=1;‘;

$mysql_command -uroot --password=‘‘ -e ‘SHOW VARIABLES LIKE "slow_query_log";‘;

$mysqlslow_command -s c -t 50 db-master-1-slow.log > business_db_count_$datestr.log

$mysqlslow_command -s at -t 50 db-master-1-slow.log > business_db_time_$datestr.log

 

# crontab 任務調度,一天執行一次

00 00 * * * /home/data/mysql/script/check_slow.sh >> /tmp/check_slow.log 2>&1

 

 

 

 

4、介紹一件遇到過的DB伺服器故障

以前遇到的也比較多,有些記錄下來了,有些沒有來得及記錄,談不上印象最深刻的,因為解決完了後,隨著時間推移的,慢慢都淡忘了,如果那件讓你刻骨銘心的話,那估計是你惹上了大簍子了,讓你承受超過一般的代價。

 

不過幸好,我比較謹慎、比較認真,暫時還沒有出過比較大的簍子,屬於小問題處理了很多,但是大簍子基本沒有,但是小問題積小成多,也會厚積薄發的,我把以前的一些故障記錄在了:http://blog.csdn.net/mchdba/article/category/1596355,歡迎參考,所謂三人行必有我師焉,大家一起交流一起進步。

 

 

 

5、如果出現Too many connections,應該採取哪些措施?

這種遇到過,高並發的時候,很多慢sql導致的。

 

(1)記得當時的處理辦法是,先線上加大connections串連數,如下所示:

mysql> set global max_connections=20000;

Query OK, 0 rows affected (0.10 sec)

 

mysql>

 

(2)然後看哪些無效的串連數,直接kill掉;

分析下曾經寫過的一個kill無效串連的指令碼,大家可以參考下:

#It is used to kill processlist of mysql sleep

#!/bin/sh

while :

 

do

  n=`mysqladmin processlist -uadmin -pxxxxx|grep -i sleep |wc -l`

  date=`date +%Y%m%d\[%H:%M:%S]`

  echo $n

 

  if [ "$n" -gt 10 ]

  then

  for i in `mysqladmin processlist -uadmin -pxxxxxx|grep -i sleep |awk ‘{print $2}‘`

  do

     mysqladmin -uadmin -pxxxx kill $i

  done

  echo "sleep is too many I killed it " >> /tmp/sleep.log

  echo "$date : $n" >> /tmp/sleep.log

  fi              

  sleep 1

done

 

 

 

(3)      然後尋找產生這麼多無效sql的真實原因,可能有如下幾種情況:

(a)      是人為誤刪除索引,則補上索引。

(b)      是高並發sql導致,則看下最佳化sql添加索引,如果還不能減少串連數,則看哪個應用導致的高並發sql,暫時停止這個應用。

(c)      如果串連來源是不認識的非應用伺服器的ip發起的,那麼直接在網路層做下資料連接埠訪問限制。

(d)      如果是某個比較慢的臨時select語句消耗了臨時記憶體資源,則kill掉這個臨時select語句。

 

PS:產生的原因可能有多種多樣,可以因地制宜,穩妥處理掉。遇到的時候不要慌 千萬要鎮靜心平氣和的逐個排查逐個處理。

MySQL DBA 面試題目 答疑記 《01》

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.