任何一種資料庫中,都有各種各樣的日誌。mysql也不例外,在mysql中有4種不同的日誌、分別錯誤日誌、二進位制日誌、查詢日誌和慢查詢日誌。這些日誌記錄著mysql資料庫不同方面的蹤跡。下文將介紹這4種不同的日誌作用和用途。
一.錯誤日誌
錯誤日誌在mysql資料庫中很重要,它記錄著mysqld啟動和停止,以及伺服器在執行過程中發生的任何錯誤的相關資訊。
1.配置資訊
--log-error=[file-name]用來指定錯誤日誌存放的位置。
如果沒有指定[file-name],預設hostname.err做為檔名,預設存放在datadir目錄中。
也可以將log-error配置到my.cnf檔案中,這樣就省去了每次在啟動mysqld時都手工指定--log-error.例如:
[mysql@test2]$ vi /etc/my.cnf
# the mysql server
[mysqld]
log-error = /var/lib/mysql/test2_mysqld.err
二.二進位制日誌
二進位制日誌也通常被稱為binlog,它記當著所有的ddl和dml,但不包括資料查詢語句。
1.配置資訊
--log-bin=[file-name]用來指定錯誤日誌存放的位置。
如果沒有指定[file-name],預設為主機名後面跟-bin做為檔名,預設存放在datadir目錄中。
也可以將log-bin配置到my.cnf檔案中,這樣就省去了每次在啟動mysqld時都手工指定--log-bin.例如:
# the mysql server
[mysqld]
log-bin = /var/lib/mysql/log-bin
2.檢視blnlog
由於binlog以是binary方式訪問,不能直接檢視,需要用mysql提供的mysqlbinlog工具檢視。
3.刪除binlog
(1).用reset master命令刪除所有日誌,新日誌重新從000001開始編號
(2).用purge master logs to 'mysq-bin.******' 命令可以刪除指定編號前的所有日誌
(3).用purge master logs to before 'yyyy-mm-dd hh24:mi:ss'命令可以刪除'yyyy-mm-dd hh24:mi:ss'之前的產生的所有日誌
(4).可以在my.cnf中指定--expire_logs_days=#,此引數設定了binlog日誌的過期天數
三.查詢日誌
查詢日誌記錄了clinet的所有的語句。
note:由於log日誌記錄了資料庫所有操作,對於訪問頻繁的系統,此種日誌會造成效能影響,建議關閉。
1.配置資訊
--log=[file-name]用來指定錯誤日誌存放的位置。
如果沒有指定[file-name],預設為主機名(hostname)做為檔名,預設存放在datadir目錄中。
也可以將log配置到my.cnf檔案中,這樣就省去了每次在啟動mysqld時都手工指定--log.例如:
# the mysql server
[mysqld]
#query-log
log = /var/lib/mysql/query_log.log
2.讀取查詢日誌
查詢日誌是純文字格可,可以使用os文字讀取工具直接開啟檢視。例如:
[mysql@test2]$ tail -n 15 query_log.log
080313 7:58:28 17 query show tables
080313 8:07:45 17 quit
080313 10:01:48 18 connect root@localhost on
080313 10:02:38 18 query select database()
18 init db test
080313 10:02:42 18 query show tables
080313 10:03:07 18 query select * from pet
080313 10:06:26 18 query insert into pet values('hunter','yxyup','cat','f','1996-04-29',null)
080313 10:06:39 18 query select * from pet
080313 10:07:13 18 query update pet set ***='m' where name='hunter'
080313 10:07:38 18 query delete from pet where name='hunter'
080313 10:13:48 18 query desc test8
080313 10:14:13 18 query create table t1(id int,name char(10))
080313 10:14:41 18 query alter table t1 add *** char(2)
四.慢查詢日誌
慢查詢日誌是記錄了執行時間超過引數long_query_time(單位是秒)所設定值的sql語句日誌。
note:慢查詢日誌對於我們發現效能有問題的sql有很幫助,建議使用並經常分析
1.配置資訊
--log-slow-queries=[file-name]用來指定錯誤日誌存放的位置。
如果沒有指定[file-name],預設為hostname-slow.log做為檔名,預設存放在datadir目錄中。
也可以將log-slow-queries配置到my.cnf檔案中,這樣就省去了每次在啟動mysqld時都手工指定--log-slow-queries.例如:
# the mysql server
[mysqld]
#slow-query-log
log-slow-queries = /var/lib/mysql/slow_query_log.log
2.讀取慢查詢日誌
[mysql@test2]$ cat slow_query_log.log
/usr/local/mysql/bin/mysqld, version: 5.0.26-standard-log. started with:
tcp port: 3306 unix socket: /var/lib/mysql/mysql.sock
time id command argument
# time: 080313 5:41:46
# user@host: root[root] @ localhost
# query_time: 108 lock_time: 0 rows_sent: 0 rows_examined: 8738
use test;
select count(1) from t1 a, t1 b,t1 c where a.id=b.id and b.name=c.name;
# time: 080313 5:52:04
# user@host: root[root] @ localhost
# query_time: 583 lock_time: 0 rows_sent: 0 rows_examined: 508521177
select count(1) from t1 a, t1 b where a.id=b.id;
/usr/local/mysql/bin/mysqld, version: 5.0.26-standard-log. started with:
tcp port: 3306 unix socket: /var/lib/mysql/mysql.sock
time id command argument
# time: 080313 10:39:59
# user@host: root[root] @ localhost
# query_time: 11 lock_time: 0 rows_sent: 4537467 rows_examined: 4537467
use test;
select id from tail;
如果慢查詢日誌記錄很多可以使用mysqldumpslow進行分類彙總
[mysql@test2]$ mysqldumpslow slow_query_log.log
reading mysql slow query log from slow_query_log.log
count: 1 time=583.00s (583s) lock=0.00s (0s) rows=0.0 (0), root[root]@localhost
select count(n) from t1 a, t1 b where a.id=b.id
count: 1 time=108.00s (108s) lock=0.00s (0s) rows=0.0 (0), root[root]@localhost
select count(n) from t1 a, t1 b,t1 c where a.id=b.id and b.name=c.name
count: 1 time=11.00s (11s) lock=0.00s (0s) rows=4537467.0 (4537467), root[root]@localhost
select id from tail;
是否啟用了日誌
mysql>show variables like 'log_%';
怎樣知道當前的日誌
mysql> show master status;
顯示二進位制日誌數目
mysql> show master logs;
php mysql日誌系統設計
日誌系統的作用 1 了解線上系統的執行狀態 2 快速準確定位線上問題 3 發現系統瓶頸 4 預警系統潛在風險 5 挖掘產品最大價值 6 設計目標 1 支援高併發日誌寫入 2 億級訊息內容儲存 3 支援監控報警 4 分布式 高可用 儲存選擇 mysql tokudb redis mysql tokud...
php mysql查詢 php查詢mysql的例項
php查詢mysql的例項 背景 從mysql查詢各字段值輸出並且按照條件用紅色字型顯示滿足條件字段值。條件 1.syntime小於當前前一周時間的話顯示紅色。2.a欄位為 無 的話,顯示紅色。3.b欄位為 無 的話,顯示紅色。圖一資料庫結構 圖二資料庫各字段值 我的 我只滿足了第乙個條件,其餘兩個...
php mysql例子 PHP連線mysql例子
我準備建立乙個簡單的通訊錄,資料庫的名字叫txl,資料庫只有乙個表叫personal info,表中有5個字段 pi id pi name pi tel pi qq pi email 首先我們要建立資料庫 create database txl 然後我們建立表 create table person...