天天看點

MYSQL備份中FLUSH指令的用法

mysql資料庫我們在做資料庫備份時經常用FLUSH指令,下面總結一下文法。

FLUSH文法

如果您想要清除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,隻要它們不會從已存儲的函數或觸發程式中被調用。

本文轉自 jxwpx 51CTO部落格,原文連結:http://blog.51cto.com/jxwpx/1260658,如需轉載請自行聯系原作者