mysql下的flush操作

myownstars發表於2013-03-04

如何呼叫flush

使用者需要reload許可權,其語法為 flush flush_option,其中flush_option有如下候選值:

 

Privileges:重新載入grant tables,當使用create user/grant/revoke等涉及使用者許可權命令時會自動呼叫該命令,而如果使用DML更新grant tables,則需要手工呼叫該命令;

mysql會快取grant/create user等語句且不會因為revoke/drop user而釋放,故當執行大量類似語句後可呼叫flush privileges釋放記憶體

 

Tables:關閉所有當前open的表並清空query cache(=reset query cache),可以限定候選表flush tables tbl_name[,tbl_name ..,]

其中flush tables with read lock獲取全域性讀鎖以鎖定所有表,備份時經常用到,須使用unlock tables釋放該鎖;

flush tables tbl_name[,tbl_name ..,] with read lock則獲取相應的表鎖,首先獲取該表的排他鎖,等待現有的事務提交後,清空該表快取並重新以共享鎖模式將其開啟

 

Hosts:清空host cache,當主機更改IP或者遭遇”Host host_nameis blocked”錯誤時使用;

引數max_connect_errors決定了mysql允許一個主機的最大失敗連線次數,當超過此值時該主機發起的連線將被阻塞並遭遇前面提及的錯誤資訊,此時唯一的解決辦法時呼叫flush hosts清除 host cache

 

Mysql使用host_cache快取來自遠端客戶端TCP連線的IP和主機名以及相應錯誤資訊,用以避免DNS解析,採用LRU管理;

對於客戶端連線,mysql使用IP地址檢驗其主機名是否位於host cache中,如果沒有,則先將IP解析成主機名然後將主機反向解析成IP(類似TCP/IP3次握手)

如果來自某一主機的連線失敗次數達到max_connect_errors,則其後續連線會被阻塞並遭遇Host 'host_name' is blocked,此時可呼叫flush hosts清空快取;

Host cache大小由 host_cache_size決定,可設定為0以禁用;也可透過—skip-name-resolve禁用DNSmysql只使用IP來匹配grant table,當DNS很慢時可選擇使用;--skip-networking則徹底禁用TCP/IP連線;

在進行解析時伺服器會先嚐試使用gethostbyaddr_r()/gethostbyname_r(),如果OS不支援則改用gethostbyaddr()/gethostbyname(),後者會請求鎖定mutex即不能併發執行;

5.6.5引入host_cache表儲存上述資訊,truncate table host_cacheflush hosts效果一樣;

生產庫應該儘量設定skip_name_resolve以避免對DNS的依賴,當DNS不能正常工作時,會導致客戶端無法透過TCP正常連線資料庫;此外開啟該功能有可能招致DoS攻擊;

http://www.mysqlperformanceblog.com/2008/05/31/dns-achilles-heel-mysql-installation/

 

Logs:關閉所有的日誌檔案,然後建立一個新的並開啟,5.5.3以後其語法為flush [log_type] logs,其中log_type包含如下

5.5.7只是關閉並重新開啟日誌檔案,而之前的版本則是將原檔案重新命名為-old並開啟一個新的檔案,如果連續執行兩次則最早的-old則被覆蓋

unix下當mysql伺服器接受到SIGHUP訊號時會執行同等命令;

https://dev.mysql.com/doc/refman/5.5/en/error-log.html   

 

Query cache:整理query cache中的碎片,並不清空其中的內容;

Query cache儲存sql文字以及其查詢結果,類似oracleresult cache,節省了sql解析和執行時間,

 

Status:將當前執行緒的會話狀態變數值新增至全域性變數,然後將會話值重置為0 ;當debug query需要用到

 

User_resources:將使用者per-hour資源重置為0

 

Master:刪除所有二進位制日誌,已經為reset master所取代,mysql 5.6已不支援該命令

 

Slave:以被reset slave取代,5.6起不再支援

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15480802/viewspace-755271/,如需轉載,請註明出處,否則將追究法律責任。

相關文章