程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

mysql日志

編輯:MySQL綜合教程

mysql日志


mysql日志
分為4種分別是:二進制日志、錯誤日志、通用查詢日志和慢查詢日志。
二進制日志:以二進制文件的形式記錄了數據庫中的操作,但不記錄查詢語句。
錯誤日志:記錄mysql服務器的啟動、關閉的時間和運行錯誤等信息
通用查詢日志:記錄用戶登錄和記錄查詢的信息
慢查詢日志:記錄執行時間超過指定時間的操作。
注:除了二進制日志外,其他日志都是文本文件。日志文件通常存儲在數據庫的數據目錄下。默認只啟動錯誤日志的功能。其他3類日志都需要數據庫管理員進行設置。日志功能會降低數據庫執行速度,記錄日志要花費很多時間。並且會占用大量的硬盤空間。

1、二進制日志:
也叫變更日志(update log)用於記錄數據庫變化。默認二進制日志功能是關閉的。可通過my.cnf或my.ini文件的log-bin選項可以開啟二進制日志。將log-bin選項加入到my.cnf或者my.ini文件的[mysqld]組中,如:
  #my.cnf(Linux操作系統下)或者my.ini(windows操作系統下)
  [mysqld]
  log-bin[=Dir\[filename]]
其中,DIR參數指定二進制文件的存儲路徑;filename參數指定二進制文件的文件名,形式為filename.number,number形式為000001、000002等。每次重啟mysql服務都會生成一個新的二進制日志文件,這些日志文件的"number"會不斷遞增。原來的日志文件任然存在,另外還會生成一個名為filename.index的文件。該文件存儲所有二進制日志文件的清單。
注:二進制日志與數據庫的數據文件不要放同一塊硬盤,如果數據文件所在硬盤被破壞,也可以用另一塊硬盤上的二進制日志來恢復數據庫文件。
例:在my.ini文件的[mysqld]組中添加下面的語句
 [mysqld]
 log-bin
注:如果沒dir和filename參數,默認存儲在數據庫的數據目錄下,默認文件名為hostname-bin.number,其中hostname表示主機名。重啟mysql服務器後可在數據目錄下看到hjh-bin.-000001這個文件,同事還生成了hjh-bin.index文件。此處mysql服務器主機名為hjh。
a、查看二進制日志
格式:mysqlbinlog filename.number
注:該命令會在當前文件夾下查找指定的二進制日志。因此需要在二進制日志filename.number所在目錄下運行該命令。
如:C:/log>mysqlbinlog mylog.000001
如:mysqlbinlog C:\log\mylog.000001
b、刪除所有二進制日志
刪除所有二進制日志,格式:reset master;
c、根據編號來刪除二進制日志,該命令可以刪除指定二進制日志編號之前的日志。
格式:PURGE MASTER LOGS TO 'filename.number';
如:PURGE MASTER LOGS TO 'mylog.000004';執行後編號01、02、03的二進制日志將被刪除。
d、根據創建時間刪除二進制日志,刪除指定時間之前創建的二進制日志。如:
PURGE MASTER LOGS TO 'yyyy-mm-dd hh:mm:ss';
e、使用二進制日志還原數據庫(先用最近備份文件來還原,之後用二進制日志還原)格式,如:
mysqlbinlog filename.number|mysql -u root -p
注:編號小的先還原,如
mysqlbinlog mylog.000001|mysql -u root -p
mysqlbinlog mylog.000002|mysql -u root -p
f、暫時停止二進制日志功能,如:set SQL_LOG_BIN=0;
重新開啟格式:set SQL_LOG_BIN=1;

2、錯誤日志
默認錯誤日志功能是開啟的。而且錯誤日志無法被禁止。存儲在mysql數據庫的數據文件夾下。通常名為hostname.err。其中hostname表示mysql服務器主機名。存儲位置可以通過log-error選項來設置。將log-error選項加入到my.ini或者my.inf文件的[mysqld]組中。如:
 #my.cnf(Linux操作系統下)或者my.ini(windows操作系統下)
  [mysqld]
  log-error=Dir/[filename]
 注:filename參數是錯誤日志名,沒有該參數時默認為主機名。
由於是文本文件所以可以直接查看。
a、刪除錯誤日志
可以用mysqladmin命令開啟新的錯誤日志。如:mysqladmin -uroot -p flush-logs
執行該命令後會自動創建一個新的錯誤日志。舊的錯誤日志仍然保留著,只是已經更名為filename.err-old。
或者登錄數據庫後用flush logs;來開啟新的錯誤日志。

3、通用查詢日志
默認是關閉的,通過my.cnf或者my.ini文件的log選項可以開啟通用查詢日志。形式如:
  #my.cnf(Linux操作系統下)或者my.ini(windows操作系統下)
  [mysqld]
  log[=Dir\[filename]]
如果不指定文件名,默認文件名為hostname.log。hostname是mysql服務器的主機名。
由於是文本文件所以可以直接查看。
新的通用查詢日志會直接覆蓋舊的查詢日志,不用手動刪除。如:
mysqladmin -uroot -p flush-logs

4、慢查詢日志
默認是關閉的,通過my.cnf或者my.ini文件的log-slow-queries選項可以開啟慢查詢日志。通過long_query_time選項來設置時間值,時間以秒為單位。超過這個值就會被記錄到該日志,形式如:
  #my.cnf(Linux操作系統下)或者my.ini(windows操作系統下)
  [mysqld]
  log-slow-queries[=Dir\[filename]]
  long_query_time=n
  注:生成的日志文件名為filename-slow.log。如不指定文件名,默認文件名為hostname-slow.log,默認n為10秒。
benchmark(count,expr)函數可以測試執行count次expr。
a、刪除慢查詢日志
命令如:mysqladmin -u root -p flush-logs,新的慢查詢日志會直接覆蓋舊的查詢日志,不需要手動刪除。也可以手工刪除後重啟服務會生成新的 慢查詢日志。如果要備份舊的慢查詢日志可以將舊的日志文件改名,然後重啟服務。

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