MySQL資料庫我們在做Database Backup時經常用FLUSH命令,下面總結一下文法。
FLUSH文法
FLUSH [LOCAL | NO_WRITE_TO_BINLOG] flush_option [, flush_option] ...
如果您想要清除MySQL使用的部分內部緩衝,您應該使用FLUSH語句。要執行FLUSH,您必須擁有RELOAD許可權。
flush_option可以為以下的任何一個:
· HOSTS
用於清空主機緩衝表。如果有的主機更改了IP號或如果您得到了錯誤資訊Host host_name is blocked,則您應該重新整理主機表。當在串連到MySQL伺服器時,如果對於一個給定的主機,接連出現錯誤“多於max_connect_errors”,此時,MySQL會假定出現了錯誤,並阻止主機後續的串連申請。重新整理主機表允許主機嘗試再次串連。您可以使用max_connect_errors=999999999啟動mysqld,以避免此錯誤資訊。
· DES_KEY_FILE
用於在伺服器啟動時,從採用--des-key-file選項指定的檔案重新載入DES關鍵字。
· LOGS
用於關閉並重新開啟所有的記錄檔。如果您已經指定了一個更新記錄檔或一個二進位記錄檔,同時沒有擴充,則相對於前一個檔案,記錄檔的擴充號增加1。如果您在檔案名稱中使用了一個擴充,則MySQL會關閉並重新開啟記錄檔。在Unix中,當相mysqld伺服器發送一個SIGHUP訊號時,也會如此(例外情況是部分Mac OS X 10.3版本。在這些版本中,mysqld忽略SIGHUP和SIGQUIT)。
如果伺服器使用--log-error選項,則FLUSH LOGS會導致錯誤記錄檔被重新命名(使用尾碼-old),同時mysqld會建立一個新的空記錄檔。如果沒有給定--log-error選項,則不會進行重新命名。
· PRIVILEGES
用於從mysql資料庫中的授權表重新載入許可權。
· QUERY CACHE
對查詢快取進行整理片段,以更好得利用儲存空間。與RESET QUERY CACHE不同,本語句不會從緩衝中取消任何查詢。
· STATUS
用於把多數狀態變數重新設定為零。只在當調試查詢時,您才應該使用此項。
· {TABLE | TABLES} [tbl_name [, tbl_name] ...]
當沒有表被命名時,關閉所有開啟的表,並迫使所有正在使用的表關閉。這也會重新整理查詢快取。此項含有一個或多個表名稱,只重新整理給定的表。和RESET QUERY CACHE語句一樣,FLUSH TABLES還會取消來自查詢快取的所有查詢結果。
· TABLES WITH READ LOCK
對於所有帶讀取鎖定的資料庫,關閉所有開啟的表,並鎖定所有的表,直到您執行UNLOCK TABLES為止。如果您擁有一個可以及時進行快照的檔案系統,比如Veritas,則這是進行備份的非常方便的方法。
· USER_RESOURCES
用於把所有每小時使用者資源重新設定為零。這可以使已經達到了每小時串連、查詢或更新限值的用戶端立刻重新恢複活性。FLUSH USER_RESOURCES不適用於同時串連的最大限值。FLUSH語句被寫入二進位日誌,除非使用了自選的NO_WRITE_TO_BINLOG關鍵字(或其別名LOCAL)。注釋:在任何情況下,FLUSH LOGS, FLUSH MASTER, FLUSH SLAVE和FLUSH TABLES WITH READ LOCK都不會被記入日誌,因為如果它們被複製到一個從屬伺服器上,會導致出現問題。
您也可以使用flush-hosts, flush-logs, flush-privileges, flush-status或flush-tables命令訪問含有mysqladmin應用程式的語句。
注釋:在MySQL 5.1.2-alpha中,不可能在已儲存的函數或觸發程式中發布FLUSH語句。不過,您可以在已儲存的過程中使用FLUSH,只要它們不會從已儲存的函數或觸發程式中被調用。
推薦閱讀:
MySQL備份還原參數詳解
MySQL備份工具mysqldump和mydumper的備份效率比較
MySQL備份恢複“故障”總結
MySQL備份與恢複的三種方法總結