日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL日志分析

發(fā)布時間:2025/3/15 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL日志分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、MySQL日志簡介

(一)、mysql日志的種類,一般來說,日志有五種,分別為:

  • 錯誤日志:log_error (記錄啟動,運行,停止mysql時出現的信息)
  • 二進制日志:log_bin (記錄所有更改數據的語句,還用于復制,恢復數據庫用)
  • 通用查詢日志:general_log (記錄建立的客戶端連接和執(zhí)行的語句)
  • 慢查詢日志: log_slow_queries (記錄所有執(zhí)行超過long_query_time秒的所有查詢)
  • 更新日志: log_update (二進制日志已經代替了老的更新日志,更新日志在MySQL 5.1中不再使用)
  • (二)、 查詢當前日志記錄的狀況:

  • mysql>show variables like ‘%log%’;(查看是否啟用了日志)
  • mysql> show master status;(怎樣知道當前的日志)
  • mysql> show master logs;(顯示二進制日志的數目)
  • (三)、MySQL日志狀態(tài)圖示

  • 錯誤日志(默認開啟)
  • 二進制日志
  • 通用查詢日志
  • 慢查詢日志
  • 二、MySQL日志分類

    (一)、錯誤日志

  • 說明:錯誤日志默認是啟用的,一般存放在數據目錄下,如無特別指定,默認以 $HOSTNAME.err 為文件名稱。錯誤日志中除了記錄錯誤相關的信息之外,默認還記錄 MySQL 初始化、啟動和關閉過程中輸出的信息(未必是錯誤信息)、event scheduler 運行時所產生的信息、主從架構中的從 I/O Thread 的信息,還包括服務器運行過程中所發(fā)生的任何嚴重的錯誤信息。通常,當數據庫出現問題不能正常啟動,應當首先想到的就是查看錯誤日志。從中可以看到此日志文件記錄的MySQL數據庫啟動和關閉信息。

  • –log-error=[file-name]用來指定錯誤日志存放的位置。
      如果沒有指定[file-name],默認hostname.err(hostname為主機名)做為文件名,默認存放在DATADIR目錄中。也可以將log-error配置到my.cnf文件中,這樣可省去每次啟動mysqld時都手工指定–log-error.

    在mysql配置文件my.ini中添加:log-error = D:\ProgramFiles\MySQL\mysqld.err如果執(zhí)行了FLUSH LOGS,錯誤日志文件將被命名為后綴old文件,并且會創(chuàng)建一個新的空文件。錯誤日志文件的格式:時間 [錯誤級別] 錯誤信息
  • MySQL客戶端可以通過下列方法來獲取錯誤日志的詳細位置:

    mysql> show variables like ‘log_error’;
    ±---------------------±------------------------------------------------------+
    | Variable_name | Value                |
    ±---------------------±------------------------------------------------------+
    | log_error    | D:\ProgramFiles\MySQL\Data\jevo.err |
    ±----------------------±-----------------------------------------------------+

    1 row in set (0.00 sec)

  • 錯誤日志-記錄級別

    錯誤日志文件的記錄級別:錯誤日志有3個level等級:error、warning 和information。
  • (二)、二進制日志

  • 二進制日志主要用來記錄操作MySQL數據庫中的寫入性操作(增刪改,但不包括查詢),相當于sqlserver中的完整恢復模式下的事務日志文件。

  • 二進制日志的作用:1、用于復制,配置了主從復制的時候,主服務器會將其產生的二進制日志發(fā)送到slave端,slave端會利用這個二進制日志的信息在本地重做,實現主從同步。2、用戶恢復,MySQL可以在全備和差異備份的基礎上,利用二進制日志進行基于時間點或者事物Id的恢復操作。原理雷同于主從復制的日志重做。

  • 開啟二進制日志:開啟二進制日志需要指定一個log-bin參數的路徑,比如:log_bin="D:\phpStudy\MySQL\mysql_log\log_bin"。開始二進制日志之后會自動生成一個管理二進制日志的log_bin_index文件。log_bin選項也顯示為on,即開啟了二進制日志。

  • MySQL客戶端可以通過下列方法來獲取二進制日志的詳細位置:

    mysql> show variables like ‘log_bin’;
    ±---------------------±----------------+
    | Variable_name | Value    |
    ±---------------------±-----------------+
    | log_bin    | ON    |
    ±----------------------±----------------+
    1 row in set (0.00 sec)

  • (三)、通用查詢日志

  • 通用查詢日志主要記錄建立的客戶端連接和執(zhí)行的語句,MySQL中的參數general_log用來控制開啟、關閉MySQL查詢日志,參數general_log_file用來控制查詢日志的位置。所以如果你要判斷MySQL數據庫是否開啟了查詢日志,可以使用下面命令。general_log為ON表示開啟查詢日志,OFF表示關閉查詢日志。
  • 開啟查詢日志-在my.ini(windows系統)或my.cnf(linux系統)中添加一下內容:
  • #通用查詢日志-開啟general_log=on#通用查詢日志-日志存儲目錄general_log_file="D:\phpStudy\MySQL\mysql_log\general_log.log"
  • MySQL客戶端可以通過下列方法來獲取查詢日志的詳細位置
    mysql> show variables like ‘%general_log%’;
    ±--------------------±---------------------------------------+
    | Variable_name | Value            |
    ±---------------------±--------------------------------------+
    | general_log  | ON           |
    | general_log_file | /var/lib/mysql/DB-Server.log |
    ±----------------------±--------------------------------------+
    2 rows in set (0.00 sec)
  • (四)、慢查詢日志

  • MySQL的慢查詢日志是MySQL提供的一種日志記錄,它用來記錄在MySQL中響應時間超過閥值的語句,具體指運行時間超過long_query_time值的SQL,則會被記錄到慢查詢日志中。long_query_time的默認值為10,意思是運行10S以上的語句。默認情況下,Mysql數據庫并不啟動慢查詢日志,需要我們手動來設置這個參數,當然,如果不是調優(yōu)需要的話,一般不建議啟動該參數,因為開啟慢查詢日志會或多或少帶來一定的性能影響。慢查詢日志支持將日志記錄寫入文件,也支持將日志記錄寫入數據庫表。

  • 慢查詢設置的相關參數

    slow_query_log :是否開啟慢查詢日志,1表示開啟,0表示關閉。 log-slow-queries :舊版(5.6以下版本)MySQL數據庫慢查詢日志存儲路徑。可以不設置該參數,系統則會默認給一個缺省的文件host_name-slow.log slow-query-log-file:新版(5.6及以上版本)MySQL數據庫慢查詢日志存儲路徑。可以不設置該參數,系統則會默認給一個缺省的文件host_name-slow.log long_query_time :慢查詢閾值,當查詢時間多于設定的閾值時,記錄日志。 log_queries_not_using_indexes:未使用索引的查詢也被記錄到慢查詢日志中(可選項)。 log_output:日志存儲方式。log_output='FILE'表示將日志存入文件,默認值是'FILE'。 log_output='TABLE'表示將日志存入數據庫,這樣日志信息就會被寫入到mysql.slow_log表中。MySQL數據庫支持同時兩種日志存儲方式,配置的時候以逗號隔開即可,如:log_output='FILE,TABLE'。日志記錄到系統的專用日志表中,要比記錄到文件耗費更多的系統資源,因此對于需要啟用慢查詢日志,又需要能夠獲得更高的系統性能,那么建議優(yōu)先記錄到文件。
  • 注意:找到mysql的安裝目錄,找到my.ini文件夾在[mysqld]處加入以下代碼開啟慢查詢,永久有效。

    #開啟慢查詢 slow_query_log = ON #log-slow-queries:代表MYSQL慢查詢的日志存儲目錄,此目錄文件一定要有寫權限; #最長執(zhí)行時間 (查詢的最長時間,超過了這個時間則記錄到日志中) . long_query_time = 5 #慢查詢日志存儲方式 log_output='FILE' log-slow-queries="C:/Program Files (x86)/MySQL/MySQL Server 5.0/log/mysql-slow.log" #沒有使用到索引的查詢也將被記錄在日志中 log-queries-not-using-indexes = ON
  • 三、修改MySQL配置參數-日志參數

    (一)、動態(tài)修改(臨時修改,重啟失效)

  • 說明:靜態(tài)變量不能修改,但是可以修改全局變量。
  • 通用查詢日志
  • #臨時開啟通用查詢日志mysql > set global general_log=on;#臨時設置通用查詢日志文件目錄mysql > set global general_log_file='/tmp/mariadb_general_log.log';#臨時關閉通用查詢日志mysql > set global general_log=off;#把日志直接存放到表里面mysql > set global log_output='table';
  • 慢查詢日志
  • #臨時開啟慢查詢日志mysql> set global slow_query_log='ON'; #或mysql> set global slow_query_log=1;#查詢超過4秒就記錄mysql> set global long_query_time=4;#設置慢查詢日志存放的位置mysql> set global slow_query_log_file='/usr/local/mysql/data/slow.log';

    (二)、永久修改

    1、說明
      在配置文件中(my.ini或my.cnf)添加配置信息后,重啟MySQL后就是永久修改,永久生效。直到再次修改配置信息并重啟MySQL為止。

    總結

    以上是生活随笔為你收集整理的MySQL日志分析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。