国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

深入分析mysql日志教程

2024-07-24 12:39:30
字體:
供稿:網(wǎng)友

mysql日志我們可以總結(jié)有以下幾種,錯(cuò)誤日志、查詢?nèi)罩尽⒙樵內(nèi)罩尽⒍M(jìn)制日志了,這些日志每種都有自己的用處了,在mysql中日志也起到非常重要的作用了.

1.錯(cuò)誤日志

錯(cuò)誤日志主要用于定位mysql啟動(dòng)和運(yùn)行中的一些問題,錯(cuò)誤日志是默認(rèn)開啟的,可以通過show global variables查看錯(cuò)誤日志文件的位置:

  1. mysql> show global variables like '%log_error%'
  2. +---------------+--------------------------+ 
  3. | Variable_name | Value                    | 
  4. +---------------+--------------------------+ 
  5. | log_error     | /var/log/mysql/error.log | 
  6. +---------------+--------------------------+ 
  7. 1 row in set (0.00 sec) 

也可以通過mysql配置文件my.cnf查看錯(cuò)誤日志文件的位置:

# Error log - should be very few entries.

log_error = /var/log/mysql/error.log

常見的錯(cuò)誤日志也包括存儲(chǔ)引擎相關(guān)的信息,常見的格式如下:

  1. 140716 20:24:11 [Note] Plugin 'FEDERATED' is disabled. 
  2. 140716 20:24:11 InnoDB: The InnoDB memory heap is disabled 
  3. 140716 20:24:11 InnoDB: Mutexes and rw_locks use GCC atomic builtins 
  4. 140716 20:24:11 InnoDB: Compressed tables use zlib 1.2.3.4 
  5. 140716 20:24:11 InnoDB: Initializing buffer pool, size = 128.0M 
  6. 140716 20:24:11 InnoDB: Completed initialization of buffer pool 
  7. 140716 20:24:11 InnoDB: highest supported file format is Barracuda. 
  8. 140716 20:24:11  InnoDB: Waiting for the background threads to start 
  9. 140716 20:24:12 InnoDB: 5.5.37 started; log sequence number 20673572 
  10. 140716 20:24:13 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306 
  11. 140716 20:24:13 [Note]   - '127.0.0.1' resolves to '127.0.0.1'; 
  12. 140716 20:24:13 [Note] Server socket created on IP: '127.0.0.1'. 
  13. 140716 20:24:13 [Note] Event Scheduler: Loaded 0 events 
  14. 140716 20:24:13 [Note] /usr/sbin/mysqld: ready for connections. 

2.查詢?nèi)罩?/strong>

查詢?nèi)罩居糜谟涗浰玫脑鰟h查改信息,由于在并發(fā)量大時(shí)會(huì)產(chǎn)生大量信息,所以默認(rèn)是關(guān)閉的,可以通過show global variables查看查詢?nèi)罩镜奈恢靡约笆欠耖_啟.

  1. mysql> show global variables like '%general_log%'
  2. +------------------+----------------------------+ 
  3. | Variable_name    | Value                      | 
  4. +------------------+----------------------------+ 
  5. | general_log      | OFF                        | 
  6. | general_log_file | /var/lib/mysql/mysql.log | 
  7. +------------------+----------------------------+ 

本例中查詢?nèi)罩臼顷P(guān)閉的,我們可以在my.cnf中開啟查詢?nèi)罩?開啟后會(huì)影響mysql服務(wù)的性能,所以一般只用在開發(fā)環(huán)境中.

  1. # Be aware that this log type is a performance killer. 
  2. As of 5.1 you can enable the log at runtime! 
  3. general_log_file        = /var/log/mysql/mysql.log 
  4. general_log             = 1 

查詢?nèi)罩景薽ysql執(zhí)行的每一條sql信息以及會(huì)話信息,日志格式如下:

  1. 140716 20:33:46     9 Connect   user@localhost on domain 
  2.             9 Query select url,url_token from articles where url_md5 = 'c473c205d1ee72cecf2546d332abbbcd' 
  3.             9 Query select title,url from hot_articles limit 60 ,10 
  4.             9 Quit 

3.慢查詢?nèi)罩?/strong>

慢查詢?nèi)罩緫?yīng)該是對(duì)調(diào)試程序最有用的日志了,可以通過慢查詢?nèi)罩菊业侥男﹕ql語句是性能瓶頸,一般情況下,正常的web應(yīng)用時(shí)不會(huì)出現(xiàn)大量的慢查詢?nèi)罩镜?因此強(qiáng)烈建議開啟,可以通過show global variables查看慢查詢?nèi)罩镜奈恢靡约笆欠耖_啟.

  1. mysql> SHOW  GLOBAL VARIABLES LIKE '%slow%';                
  2. +---------------------+-------------------------------+  --Vevb.com 
  3. | Variable_name       | Value                         | 
  4. +---------------------+-------------------------------+ 
  5. | log_slow_queries    | ON                            | 
  6. | slow_launch_time    | 2                             | 
  7. | slow_query_log      | ON                            | 
  8. | slow_query_log_file | /var/log/mysql/mysql-slow.log | 
  9. +---------------------+-------------------------------+ 

慢查詢默認(rèn)記錄超過10秒的查詢語句,可以精確到毫秒:

  1. mysql> SHOW  GLOBAL VARIABLES LIKE '%long_query_tim%'
  2. +-----------------+-----------+ 
  3. | Variable_name   | Value     | 
  4. +-----------------+-----------+ 
  5. | long_query_time | 10.000000 | 
  6. +-----------------+-----------+ 

可以通過在my.cnf中設(shè)置慢查詢相關(guān)選項(xiàng),比如超時(shí)時(shí)間、記錄無索引查詢等:

  1. # Here you can see queries with especially long duration 
  2. log_slow_queries    = /var/log/mysql/mysql-slow.log 
  3. long_query_time = 10 
  4. log-queries-not-using-indexes 

常見的慢查詢?nèi)罩靖袷饺缦?其中包含用戶、查詢耗時(shí)、sql語句、結(jié)果集數(shù)量等信息:

  1. Time: 140716 20:47:59 
  2. User@Host: user[user] @ localhost [] 
  3. # Query_time: 12.00012  Lock_time: 0.000136 Rows_sent: 1  Rows_examined: 1 
  4. use test; 
  5. SET timestamp=1405514879; 
  6. select url,url_token from articles where url_md5 = '817563bd7ef4b2a476f1f55d0b558cd1'

4.二進(jìn)制日志

二進(jìn)制日志也叫作變更日志,主要用于記錄修改數(shù)據(jù)或有可能引起數(shù)據(jù)改變的mysql語句,可以在my.cnf中配置二進(jìn)制日志相關(guān)參數(shù),如文件路徑、過期時(shí)間、文件大小等,也可以從二進(jìn)制日志中導(dǎo)出sql,用于恢復(fù)數(shù)據(jù)庫.

  1. log_bin = /var/log/mysql/mysql-bin.log 
  2. expire_logs_days = 10 
  3. max_binlog_size = 100M 

使用show binary log查看mysql產(chǎn)生的bin log信息,包括文件名、文件大小,單位為字節(jié)等.

  1. mysql> show binary logs; 
  2. +------------------+-----------+ 
  3. | Log_name         | File_size | 
  4. +------------------+-----------+ 
  5. | mysql-bin.000001 |      6252 | 
  6. | mysql-bin.000002 |       295 | 
  7. | mysql-bin.000003 |       126 | 
  8. | mysql-bin.000004 |       107 | 
  9. +------------------+-----------+ 
  10. rows in set (0.00 sec) 

4.1 查看二進(jìn)制日志

可以通過show master status和show binlog events查詢定位binlog信息:

  1. #使用show master status查看下一條binlog的偏移起始位置: 
  2. mysql> show master status; 
  3. +------------------+----------+--------------+------------------+ 
  4. | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | 
  5. +------------------+----------+--------------+------------------+ 
  6. | mysql-bin.000004 |      870 |              |                  | 
  7. +------------------+----------+--------------+------------------+ 
  8. #使用show binlog events查詢某條binglog記錄 
  9. #語法:show binlog events [int 'log_file'] [from position] [limit [offset,] row_count] 
  10. #一下是查看一個(gè)完整的事務(wù)執(zhí)行binlog記錄 
  11. mysql> show binlog events in 'mysql-bin.000004' from 870 limit 4/G; 
  12. *************************** 1. row *************************** 
  13.    Log_name: mysql-bin.000004 
  14.         Pos: 870 
  15.  Event_type: Query 
  16.   Server_id: 1 
  17. End_log_pos: 941 
  18.        Info: BEGIN 
  19. *************************** 2. row *************************** 
  20.    Log_name: mysql-bin.000004 
  21.         Pos: 941 
  22.  Event_type: Intvar 
  23.   Server_id: 1 
  24. End_log_pos: 969 
  25.        Info: INSERT_ID=277 
  26. *************************** 3. row *************************** 
  27.    Log_name: mysql-bin.000004 
  28.         Pos: 969 
  29.  Event_type: Query 
  30.   Server_id: 1 
  31. End_log_pos: 1247 
  32.        Info: use `user`; insert into test (title,url,url_md5,url_token,view_time) values('test','www.baidu.com','ae98f26d3b883f80b3eadb8709467607','1438524738','1405517003'
  33. *************************** 4. row *************************** 
  34.    Log_name: mysql-bin.000004 
  35.         Pos: 1247 
  36.  Event_type: Xid 
  37.   Server_id: 1 
  38. End_log_pos: 1274 
  39.        Info: COMMIT /* xid=137 */ 
  40. rows in set (0.00 sec) 

4.2 使用二進(jìn)制日志恢復(fù)數(shù)據(jù)

使用mysql的命令行工具,可以方便的將binlog中的sql語句導(dǎo)出,導(dǎo)出后的sql語句可以方便的用于恢復(fù)數(shù)據(jù)庫,具體格式可以參考mysqlbinlog --help的輸出,下面是兩個(gè)最常用的例子:

  1. #將mysql中的命令點(diǎn)870到命令點(diǎn)1274之間的sql語句導(dǎo)出到文件中 
  2. mysqlbinlog --start-position=870 --stop-position=1274 mysql-bin.000004  > /tmp/mysql_restore.sql  
  3. #將mysql中的binlog中某段時(shí)間內(nèi)的sql導(dǎo)出,可用于恢復(fù)一段時(shí)間的數(shù)據(jù) 
  4. mysqlbinlog --start-datetime="2012-07-16 00:00:00" --stop-datetime="2012-07-17 00:00:00" mysql-bin.000004 > /tmp/mysql_restore.sql

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 普洱| 抚顺市| 大同市| 辽宁省| 南召县| 雅江县| 河北省| 芮城县| 巩留县| 贡嘎县| 杭锦后旗| 宝鸡市| 射阳县| 利辛县| 景泰县| 凤庆县| 大埔区| 都安| 绥芬河市| 英吉沙县| 白沙| 平江县| 河南省| 邓州市| 安平县| 乐山市| 江都市| 大竹县| 朝阳市| 聂荣县| 海阳市| 深泽县| 新乡市| 华亭县| 平阳县| 越西县| 浮梁县| 磐安县| 房产| 盐边县| 乐陵市|