国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL下FLUSH命令mysql日志的輪詢

2024-07-24 12:35:21
字體:
來源:轉載
供稿:網友
  通過mysql的my.cnf文件可以設置mysql的日志,而日志文件如果長期不進行清理或回收,勢必會造成日志文件越來越大,進而影響到mysql的性能,而利用rpm 包安裝方式的自帶有mysql日志的輪詢刷新,通過源碼包安裝的一樣能實現該功能,該功能的實現要通過flush命令和mysql自帶腳本的修改來完成,當然,二進制日志文件除外,因為系統自帶了expire_logs_days和max-binlog-size參數進行設置,并且二進制文件為系統數據恢復時的重要文件,不建議使用該方式進行配置,如果有其他備份策略也可以使用該方式進行輪詢.
 
  Flush命令的用法如下:
 
  mysql> help flush;
  Name: 'FLUSH'
  Description:
  Syntax:
  FLUSH [NO_WRITE_TO_BINLOG | LOCAL]
      flush_option [, flush_option] ...
  …………
  The RESET statement is similar to FLUSH. See [HELP RESET], for
  information about using the RESET statement with replication.
  
  URL: http://dev.mysql.com/doc/refman/5.5/en/flush.html
  從上面的英文幫助文檔中可以查看mysql的flush命令和日志相關的用法.
 
  BINARY closes and reopens the binary log files.
  ENGINE closes and reopens any flushable logs for installed storage engines. Currently, this causes InnoDB to flush its logs to disk and perform a checkpoint.
  ERROR closes and reopens the error log file.
  GENERAL closes and reopens the general query log file.
  RELAY closes and reopens the relay log files.
  SLOW closes and reopens the slow query log file.
  The log_type options were added in MySQL 5.5.3.
  關于flush其他方面的用法,我不想直接翻譯了,直接拿個網上別人現成的吧,如下:
 
  MySQL的FLUSH句法(清除或者重新加載內部緩存)FLUSH flush_option [,flush_option],如果你想要清除一些MySQL使用內部緩存,你應該使用FLUSH命令,為了執行FLUSH,你必須有reload權限.
 
  flush_option 可以是下列任何東西:
 
  HOSTS 這個用的最多,經常碰見,主要是用來清空主機緩存表,如果你的某些主機改變IP數字,或如果你得到錯誤消息Host ... isblocked,你應該清空主機表,當在連接MySQL服務器時,對一臺給定的主機有多于 max_connect_errors個錯誤連續不斷地發生,MySQL為了安全的需要將會阻止該主機進一步的連接請求,清空主機表允許主機再嘗試連接.
 
  LOGS 關閉當前的二進制日志文件并創建一個新文件,新的二進制日志文件的名字在當前的二進制文件的編號上加1.
 
  PRIVILEGES  這個也是經常使用的,每當重新賦權后,為了以防萬一,讓新權限立即生效,一般都執行一把,目地是從數據庫授權表中重新裝載權限到緩存中.
 
  TABLES  關閉所有打開的表,同時該操作將會清空查詢緩存中的內容.
 
  FLUSH TABLES WITH READ LOCK 關閉所有打開的表,同時對于所有數據庫中的表都加一個讀鎖,直到顯示地執行unlock tables,該操作常常用于數據備份的時候.
 
  STATUS   重置大多數狀態變量到0.
 
  MASTER    刪除所有的二進制日志索引文件中的二進制日志文件,重置二進制日志文件的索引文件為空,創建一個新的二進制日志文件,不過這個已經不推薦使用,改成reset master 了,可以想象,以前自己是多土啊,本來一條簡單的命令就可以搞定的,卻要好幾條命令來,以前的做法是先查出來當前的二進制日志文件名,再用purge 操作.
 
  QUERY CACHE   重整查詢緩存,消除其中的碎片,提高性能,但是并不影響查詢緩存中現有的數據,這點和Flush table 和Reset Query  Cache(將會清空查詢緩存的內容)不一樣的.
 
  SLAVE   類似于重置復制吧,讓從數據庫忘記主數據庫的復制位置,同時也會刪除已經下載下來的relay log,與Master一樣,已經不推薦使用,改成Reset Slave了,這個也很有用的.
 
  一般來講,Flush操作都會記錄在二進制日志文件中,但是FLUSH LOGS、FLUSH MASTER、FLUSH SLAVE、FLUSH TABLES WITH READ LOCK不會記錄,因此上述操作如果記錄在二進制日志文件中話,會對從數據庫造成影響,注意:Reset操作其實扮演的是一個Flush操作的增強版的角色.
 
  Mysql自的帶的日志輪詢腳本位于源碼包的support-files目錄中——mysql-log-rotate.sh文件.
 
  具體操作如下(query日志為例):
 
  先將query_log.log文件mv
 
  [root@localhost logs]# ll
  total 32
  -rw-rw---- 1 mysql mysql    1 Mar 12 14:28 mysql.err
  -rw-rw---- 1 mysql mysql    6 Mar  5 15:44 mysql.pid
  -rw-rw---- 1 mysql mysql 1015 Mar 12 15:32 query_log.log
  -rw-rw---- 1 mysql mysql  704 Mar  5 15:44 slow.log
  [root@localhost logs]# mv query_log.log query_log.log.1
  登陸mysql命令界面下,執行如下操作:
 
  mysql> flush general logs;
  Query OK, 0 rows affected (0.06 sec)
  注:這一步分關鍵,也容易錯,我之前進行flush general操作老是出錯,后來看了官方的文檔后,才發現后面少了logs.
 
  下面再看下日志文件:
 
  [root@localhost logs]# ll
  total 40
  -rw-rw---- 1 mysql mysql    1 Mar 12 14:28 mysql.err
  -rw-rw---- 1 mysql mysql    6 Mar  5 15:44 mysql.pid
  -rw-rw---- 1 mysql mysql  176 Mar 12 15:38 query_log.log
  -rw-rw---- 1 mysql mysql 1285 Mar 12 15:38 query_log.log.1
  -rw-rw---- 1 mysql mysql  704 Mar  5 15:44 slow.log
  [root@localhost logs]# cat query_log.log
  /usr/local/mysql/bin/mysqld, Version: 5.5.21-log (Source distribution). started with:
  Tcp port: 3306  Unix socket: /tmp/mysqld.sock
  Time                 Id Command    Argument
  關于使用輪詢腳本時的注意點:
 
  /data/mysql/mysqld.log {
          # create 600 mysql mysql
          notifempty
          daily
          rotate 3
          missingok
          compress
      postrotate
          # just if mysqld is really running
          if test -x /usr/local/mysql/bin/mysqladmin &&
             /usr/local/mysql/bin/mysqladmin ping &>/dev/null
          then
             /usr/local/mysql/bin/mysqladmin flush-logs
          fi
      endscript
  }
  上面腳本中的二處在設置密碼后進運行時會報錯的,因為其要使用密碼的直持,具體為:
 
  /usr/local/mysql/bin/mysqladmin –uroot-ptest ping(其中用戶名為root,密碼為test)
 
  /usr/local/mysql/bin/mysql -uroot -ptest -e "flush general logs"
 
  設置完成后將該腳本放到/etc/logrotate.d目錄就行了.
 
 

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上犹县| 光山县| 延吉市| 金坛市| 白玉县| 陆良县| 富阳市| 伊川县| 麟游县| 黔西县| 沙湾县| 军事| 东丽区| 永胜县| 东乌| 宜宾市| 汤阴县| 金华市| 垫江县| 万盛区| 汝州市| 日照市| 高密市| 平罗县| 扎兰屯市| 宜昌市| 邢台县| 伽师县| 广昌县| 汉沽区| 西丰县| 新乡县| 准格尔旗| 鸡西市| 松桃| 伽师县| 黄冈市| 岱山县| 德格县| 聂荣县| 文安县|