MySQL數據庫日志的管理與維護

jopen 10年前發布 | 10K 次閱讀 MySQL 數據庫服務器

MySQL數據庫主要有5種類型的日志,分別為慢查詢日志(log-slow-queries),二進制日志(log-bin),錯誤日志(log-error),查詢日志(log),更新日志(log- update)。在新的MySQL版本中,已取消了更新日志,可以用二進制日志來替代這個功能。文章側重講解慢查詢日志和二進制日志。

慢查詢日志(log-slow-queries)

MySQL慢查詢,指的是查詢消耗時間較多,或者沒有使用索引的查詢,MySQL可以同時記錄這兩種情況:

    # 慢日志保存路徑  
    log-slow-queries = slow.log  

    # 超過2秒的查詢  
    long_query_time = 2  

    # 沒有使用索引的查詢  
    log-queries-not-using-indexes  

二進制日志(log-bin)

MySQL中,如果啟用二進制日志記錄,則MySQL的變更修改都會被記錄到日志文件中:

    mysql> show variables like 'log_bin';    
    +---------------+-------+  
    | Variable_name | Value |  
    +---------------+-------+  
    | log_bin       | ON    |  
    +---------------+-------+  
    1 row in set  

如果想關閉bin日志的記錄,可以修改配置文件my.ini,把里面的log-bin這一行注釋掉,重啟mysql服務

查看的數據庫的bin日志:

    mysql> show binary logs;  
    +------------------+-----------+  
    | Log_name         | File_size |  
    +------------------+-----------+  
    | mysql-bin.000001 |    946525 |  
    +------------------+-----------+  
    1 row in set  

如果沒有主從復制,可以通過以下方式,重置數據庫日志,清除之前的日志文件:

    mysql> reset master;  
    Query OK, 0 rows affected   

但是如果存在復制關系,應當通過PURGE的方式來清理bin日志:
語法如下:

    PURGE MASTER LOGS TO 'log_name';  
    PURGE MASTER LOGS BEFORE 'date';  

用于刪除列于在指定的日志或日期之前的日志索引中的所有二進制日志。這些日志也會從記錄在日志索引文件中的清單中被刪除。

例如:

    PURGE MASTER LOGS TO 'mysql-bin.010';  
    PURGE MASTER LOGS BEFORE '2008-06-23 15:00:00';  
清除3天前的 binlog
    PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);  
BEFORE變量的date自變量可以為’YYYY-MM-DD hh:mm:ss’格式。

如果有主從復制,則注意以下幾個問題:

1、從服務器是活動的,并且剛好在讀取你正在試圖刪除的日志之一,那么執行這個命令不會起作用,而是觸發一個錯誤。

2、從服務器是停止的,你碰巧清理了其想要讀取的日志之一,則從服務器啟動后不能復制。

3、從服務器是活動的,沒有讀取你試圖刪除的日志,那個這個命令是安全的,而且執行這個命令時從服務器不需要停止工作。

要清理日志,需按照以下步驟:

1. 在每個從屬服務器上,使用SHOW SLAVE STATUS來檢查它正在讀取哪個日志。
2. 使用SHOW MASTER LOGS獲得主服務器上的一系列日志。
3. 在所有的從屬服務器中判定最早的日志。這個是目標日志。如果所有的從屬服務器是更新的,這是清單上的最后一個日志。
4. 備份你將要刪除的所有日志。(這個步驟是自選的,但是建議采用。)
5. 清理所有的日志,但是不包括目標日志,因為從服務器還要跟它同步

 

參考:

http://blog.csdn.net/mycwq/article/details/17209169
http://ourmysql.com/archives/959
http://dev.mysql.com/doc/refman/5.0/en/binary-log.html

來自:http://blog.csdn.net/mycwq/article/details/17209169

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!