程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 簡介操作MySQL日志的一些方法

簡介操作MySQL日志的一些方法

編輯:關於MYSQL數據庫

       這篇文章主要介紹了操作MySQL日志的一些方法,對日志的刪除操作做了重點講解,需要的朋友可以參考下

      我們可以在mysql的安裝目錄下看到mysql的二進制日志文件,如mysql-bin.000***等,很多人都不及時的處理,導致整個硬盤被塞滿也是有可能的。這些是數據庫的操作日志。它記錄了我們平時使用的sql語句命令,即使這個sql語句沒有被執行,也會被記錄,它包括執行時間之類的都詳細在案,其實 它的目的有兩個:一是方便我們查錯和恢復數據庫;二是為了主從服務器之間同步數據用的,主從服務器上所有操作都記錄在日志裡,從服務器可以根據這些日志來進行相同的操作,確保主從兩個同步。

      查看mysql日志的命令:

      ?

    1 2 3 4 5 6 7 8 9 10 11 #mysql -u user -p //user代表你的mysql用戶名   Enter password: (輸入密碼) //輸入密碼後就進入mysql的控制台   mysql> show master logs; //顯示mysql日志文件 +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000010 | 63328652 | +------------------+-----------+ 1 row in set (0.06 sec)

      也可以在mysql的命令模式下,輸入以下命令:

      ?

    1 2 3 4 5 6 7 mysql> show binary logs; //查看二進制日志文件列表和大小 +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000010 | 63355376 | +------------------+-----------+ 1 row in set (0.00 sec)

      MASTER和BINARY是同義詞。

      刪除mysql 二進制日志:

      第一種方法是針對單獨的mysql服務器,不適合主從同步的。切記!當然,如果你確保自己的主從同步已經完成了,那麼也可以使用這個命令,但是我還是不怎麼建議的。

      第一種方法:mysql>reset master; //清空所有mysql所有的二進制日志文件

      主從同步,建議用以下兩種方法:

      首先,我們要知道從mysql服務器是否在讀取日志,或者在讀取哪個日志。

      在從屬服務器上輸入一下命令:

      ?

    1 2 3 mysql>show slave hosts //查看所有連接到master的slave的信息   mysql>show slave status; //檢查從服務器在讀取哪個日志

      下面第二種和第三種方法中,當從服務器正在讀取你正在刪除的日志時候,就會失效,並且會有報錯。如果從屬服務器沒有讀取日志,而你又刪了它啟動後要讀取的日志,那麼當它啟動後就不會復制。所以,下面兩種方法可以安全刪除日志文件。

      主從服務器清理日志操作步驟如下:

      在每個從屬服務器上,使用SHOW SLAVE STATUS來檢查它正在讀取哪個日志。

      使用SHOW MASTER LOGS獲得主服務器上的一系列日志。

      在所有的從屬服務器中判定最早的日志,這個是目標日志,如果所有的從屬服務器是更新的,就是清單上的最後一個日志。

      清理所有的日志,但是不包括目標日志,因為從服務器還要跟它同步。

      注意:最好做好你要刪除的所有日志的備份,有備份,就不怕出錯

      第二種刪除二進制日志的方法:

      ?

    1 PURGE {MASTER | BINARY} LOGS TO 'log_name'

      例子:

      ?

    1 mysql>purge master logs to 'mysql-bin.000800'; //清楚mysql-bin.000800之前的二進制日志

      第三種刪除二進制日志的方法:

      ?

    1 PURGE {MASTER | BINARY} LOGS BEFORE 'date'

      例子:

      ?

    1 mysql>purge master logs before '2012-12-22 12:12:12'; //刪除2012-12-22 12:12:12這時間之前的二進制文件

      第四種方法:就是修改my.cnf文件,在中[mysqld]中添加:

      ?

    1 expire_logs_day=5 //設置日志的過期天數,過了指定的天數,會自動刪除

      第五種方法:禁止mysql的日志記錄功能(單服務器)

      修改my.cnf,注釋掉下面兩行:

      ?

    1 2 #log-bin=mysql-bin #binlog_format=mixed

      然後重啟mysql

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved