MySQL DBA 管理常用命令

zping發表於2017-10-10

一:在Linux下管理MySQL資料庫的時候總有一些很緊急的情況,發現資料庫突然變得壓力很大了,那麼作為一個DBA,也許需要一些常用的手段或者說命令去分析問題出現在哪裡,然後解決:

    資料庫突然產生壓力時檢視正在查詢的SQL:(如果這裡內容太多表示併發執行的SQL過多,或許資料庫堵塞了,會越來越慢,正常情況下這裡應該很少有東西的,也就是連線都在Sleep狀態)

/usr/local/mysql/bin/mysql -uroot -ppassword databaseName  -e “show full processlist” | grep -v Sleep 

    正在執行的SQL太多了,看不過來,那需要排序了,看持續執行時間最長的那些SQL:

/usr/local/mysql/bin/mysql -uroot -ppassword databaseName  -e “show full processlist” | grep -v Sleep | sort -k6rn >sort.tmp

    如果發現IOWait很高,請檢視臨時表的生成情況,特別是disk tmp table:

/usr/local/mysql/bin/mysql -uroot -ppassword databaseName  -e “show global status like ‘%tmp%’“

    通過這樣一些辦法可以檢視資料庫都在忙什麼,那些忙的SQL又具體在哪一個步驟上卡住了,是在建立磁碟臨時檔案、Sending Data、statistics?依照不同的原因來解決問題

———————————————-

    二:關於Mysql Replication日常管理,重做,問題分析時常用的辦法

    重做Slave,或者Master變化等等,需要將Slave與新的Master同步:

change master to master_host=IP,master_user=’replication userName’,master_password=’replication Passwrod’,master_log_file=’log-bin.000001′,master_log_pos=0;

    匯出資料成SQL文字,慎用,根據你的DB大小會鎖表,導致堵塞其他訪問:

nohup /usr/local/mysql/bin/mysqldump –database DATABASEName -uUserName -pPassWord –lock-all-tables -F >DATA20070519.sql &

    -F後會重新整理Master Log這樣配合上面的Change Master可以讓Slave進行同步

    只匯出資料庫的結構(沒有任何內容)

/usr/local/mysql/bin/mysqldump -d DATABASEName -uUserName -pPassWord >DATA20070519.structure

    只匯出資料庫的資料(沒有建立表結構的語句等等)

/usr/local/mysql/bin/mysqldump -t DATABASEName -uUserName -pPassWord >DATA20070519.data

    同步的時候出現問題(或者其他問題)了,根據同步出現問題的位置(偏移量),檢視Binlog的具體內容

/usr/local/mysql/bin/mysqlbinlog binlogFileName –start-position=偏移量

    呵呵,我們碰到過Master執行的SQL到了Slave會報語法錯誤,夠詭異吧!不過就是這樣查到了原因:如果通過儲存過程將bit的內容改為1就會出現這樣的問題,後來將bit改為tinyint(1)就好了    授權給某一臺Slave擁有複製的許可權:

 

 

grant replication slave on *.* to 使用者名稱@IP identified by ‘密碼’;

    檢視Slave狀態:

Show slave status \G

    檢視Master狀態:

Show master status;

    重置Slave(慎用)

reset slave;

    Slave出現問題了,先跳過這一條語句(請確認所要跳過的具體內容不會影響後面的同步,確認方法檢視Binlog檔案):

set global sql_slave_skip_counter=1; (記得先暫停Slave:stop slave; 然後重啟Slave:start slave;)

———————————————–

     三:純粹Linux相關的:

tcpdump -A “dst port 3306″ 檢視3306埠的通訊具體內容

http://ourmysql.com/archives/206

相關文章