mysql 日誌的啓動與查看:有利於開發者研究網站一個頁面執行時的sql語句變化

當咱們研究一個網站的時候,好比phpwind系統,我須要知道當發表帖子的時候mysql執行了哪些查詢和更新和插入呢? php

有個方法能夠給我咱們,那就是開啓mysql的日誌 查詢日誌: -log 便可解決。 mysql

如何作了?以WampServer Version 2.2爲例子 linux

打開安裝目錄下的:\wamp\bin\mysql\mysql5.5.24\my.ini sql

找到以下 windows

log-error=E:/wamp/logs/mysql.log
在它下面增長


log=E:/wamp/logs/mysql-log.log
好了,重啓mysql。

接着執行訪問一次準備好的phpwind頁面,而後查看下E:/wamp/logs/mysql-log.log(直接用編輯工具打開,例如記事本),便可查看到本次訪問,mysql執行了哪些sql語句(查詢+更新+插入) 工具

好了,如下內容轉自強大的互聯網 網站

本人網站:http://www.xinhuiyi.com/ 新回憶社區 若是您也是使用phpwind程序,且有必定的經驗和研究,歡迎一塊兒探討
ui

mysql有如下幾種日誌: spa

錯誤日誌: -log-err
查詢日誌: -log
慢查詢日誌:  -log-slow-queries
更新日誌:  -log-update

二進制日誌: -log-bin 日誌

默 認狀況下,全部日誌建立於mysqld數據目錄中。經過刷新日誌,你能夠強制 mysqld來關閉和從新打開日誌文件(或者在某些狀況下切換到一個新的日誌)。當你執行一個FLUSH LOGS語句或執行mysqladmin flush-logs或mysqladmin refresh時,出現日誌刷新

1. 錯誤日誌

用--log- error[=file_name]選項來指定mysqld保存錯誤日誌文件的位置。若是沒有給定file_name值,mysqld使用錯誤日誌名 host_name.err 並在數據目錄中寫入日誌文件。若是你執行FLUSH LOGS,錯誤日誌用-old從新命名後綴而且mysqld建立一個新的空日誌文件。(若是未給出--log-error選項,則不會從新命名)。

若是不指定--log-error,或者(在Windows中)若是你使用--console選項,錯誤被寫入標準錯誤輸出stderr。一般標準輸出爲你的終端。

2. 通用查詢日誌                                                            

用--log[=file_name]或-l [file_name]選項啓動它。若是沒有給定file_name的值,默認名是host_name.log。

3. 慢速查詢日誌                                                            

用--log-slow-queries[=file_name]選項啓動時,mysqld 寫一個包含全部執行時間超過long_query_time秒的SQL語句的日誌文件.若是沒有給出file_name值,默認未主機名,後綴爲 -slow.log。若是給出了文件名,但不是絕對路徑名,文件則寫入數據目錄。

3. 更新日誌                                                              

用--log-update[=file_name]選項啓動,不推薦使用.

是否啓用了日誌
show variables like 'log_%';
怎樣知道當前的日誌
show master status;
顯示二進制日誌數目
show master logs;
看二進制日誌文件用mysqlbinlog
mysqlbinlog mail-bin.000001

或者


mysqlbinlog mail-bin.000001 | tail


在配置文件中指定log的輸出位置.
Windows:Windows 的配置文件爲 my.ini,通常在 MySQL 的安裝目錄下或者 c:\Windows 下。
Linux:Linux 的配置文件爲 my.cnf ,通常在 /etc 下。
在linux下:
Sql代碼
# 在[mysqld] 中輸入
#log
log-error=/usr/local/mysql/log/error.log
log=/usr/local/mysql/log/mysql.log
long_query_time=2
log-slow-queries= /usr/local/mysql/log/slowquery.log

# 在[mysqld] 中輸入 #log
log-error=/usr/local/mysql/log/error.log
log=/usr/local/mysql/log/mysql.log
long_query_time=2
log-slow-queries= /usr/local/mysql/log/slowquery.log

windows下:
Sql代碼
# 在[mysqld] 中輸入
#log
log-error="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/error.log"
log="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/mysql.log"
long_query_time=2
log-slow-queries= "E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/slowquery.log"

# 在[mysqld] 中輸入 #log
log-error="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/error.log"
log="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/mysql.log"
long_query_time=2
log-slow-queries= "E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/slowquery.log"

開啓慢查詢

long_query_time =2 --是指執行超過多久的sql會被log下來,這裏是2秒
log-slow-queries= /usr/local/mysql/log/slowquery.log --將查詢返回較慢的語句進行記錄
log-queries-not-using-indexes = nouseindex.log --就是字面意思,log下來沒有使用索引的query

log=mylog.log --對全部執行語句進行記錄


windows下開啓mysql日誌:

在[mysql]下加入這些(基本上等於加在最後面):
log-error=
name for the query log file. Otherwise a default name will be used.
#注:(寫成txt文件editplus能夠及時重載,不過有時要放在C盤下editplus才能夠及時重載)
log= c:/mysql_query.log.txt
#Enter a name for the slow query log file. Otherwise a default name will be used.
log-slow-queries=
#Enter a name for the update log file. Otherwise a default name will be used.
log-update=
#Enter a name for the binary log. Otherwise a default name will be used.
log-bin=
相關文章
相關標籤/搜索