雖然自己不是DBA,但是作為一個(gè)程序員,多多少少,應該了解一些數據庫方面的東西,并不能只關(guān)心程序,不考慮數據庫,看到一篇文章,就先轉過(guò)來(lái),也許以后自己哪天會(huì )用到。
查看mysql的某個(gè)選項
show variables like ‘%VAR_NAME%’;
select @@VAR_NAME;
在Linux下管理MySQL數據庫的時(shí)候總有一些很緊急的情況,發(fā)現數據庫突然變得壓力很大了,那么作為一個(gè)DBA,也許需要一些常用的手段或者說(shuō)命令去分析問(wèn)題出現在哪里,然后解決:
數據庫突然產(chǎn)生壓力時(shí)查看正在查詢(xún)的SQL:(如果這里內容太多表示并發(fā)執行的SQL過(guò)多,或許數據庫堵塞了,會(huì )越來(lái)越慢,正常情況下這里應該很少有東西的,也就是連接都在Sleep狀態(tài))
/usr/local/mysql/bin/mysql -uroot -ppassword databaseName -e “show full processlist” | grep -v Sleep
正在運行的SQL太多了,看不過(guò)來(lái),那需要排序了,看持續執行時(shí)間最長(cháng)的那些SQL:
/usr/local/mysql/bin/mysql -uroot -ppassword databaseName -e “show full processlist” | grep -v Sleep | sort -k6rn >sort.tmp
如果發(fā)現IOWait很高,請查看臨時(shí)表的生成情況,特別是disk tmp table:
/usr/local/mysql/bin/mysql -uroot -ppassword databaseName -e “show global status like ‘%tmp%’”
通過(guò)這樣一些辦法可以查看數據庫都在忙什么,那些忙的SQL又具體在哪一個(gè)步驟上卡住了,是在創(chuàng )建磁盤(pán)臨時(shí)文件、Sending Data、statistics?依照不同的原因來(lái)解決問(wèn)題
—————————————————————
關(guān)于Mysql Replication日常管理,重做,問(wèn)題分析時(shí)常用的辦法:
重做Slave,或者M(jìn)aster變化等等,需要將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大小會(huì )鎖表,導致堵塞其他訪(fǎng)問(wèn):
nohup /usr/local/mysql/bin/mysqldump –database DATABASEName -uUserName -pPassWord –lock-all-tables -F >DATA20070519.sql &
-F后會(huì )刷新Master Log這樣配合上面的Change Master可以讓Slave進(jìn)行同步
只導出數據庫的結構(沒(méi)有任何內容)
/usr/local/mysql/bin/mysqldump -d DATABASEName -uUserName -pPassWord >DATA20070519.structure
只導出數據庫的數據(沒(méi)有創(chuàng )建表結構的語(yǔ)句等等)
/usr/local/mysql/bin/mysqldump -t DATABASEName -uUserName -pPassWord >DATA20070519.data
同步的時(shí)候出現問(wèn)題(或者其他問(wèn)題)了,根據同步出現問(wèn)題的位置(偏移量),查看Binlog的具體內容
/usr/local/mysql/bin/mysqlbinlog binlogFileName –start-position=偏移量
呵呵,我們碰到過(guò)Master執行的SQL到了Slave會(huì )報語(yǔ)法錯誤,夠詭異吧!不過(guò)就是這樣查到了原因:如果通過(guò)存儲過(guò)程將bit的內容改為1就會(huì )出現這樣的問(wèn)題,后來(lái)將bit改為tinyint(1)就好了
授權給某一臺Slave擁有復制的權限:
grant replication slave on *.* to 用戶(hù)名@IP identified by ‘密碼’;
查看Slave狀態(tài):
Show slave status \G
查看Master狀態(tài):
Show master status;
重置Slave(慎用)
reset slave;
Slave出現問(wèn)題了,先跳過(guò)這一條語(yǔ)句(請確認所要跳過(guò)的具體內容不會(huì )影響后面的同步,確認方法查看Binlog文件):
set global sql_slave_skip_counter=1; (記得先暫停Slave:stop slave; 然后重啟Slave:start slave;)
———————————————–
純粹Linux相關(guān)的:
tcpdump -A “dst port 3306″ 查看3306端口的通信具體內容 :)
聯(lián)系客服