MySQL日誌

1、MySQL日誌類型簡介

    在MySQL中,主要有5種日誌文件:html

日誌類型 寫入日誌的信息
錯誤日誌(Error log) 啓動,運行或中止mysqld遇到的問題
通用查詢日誌(General query log) 創建的客戶端鏈接和從客戶端收到的語句
二進制日誌(Binary log) 記錄更改數據的語句(也用於複製)
中繼日誌(Relay log) 從主服務器收到的數據更改
慢查詢日誌(Slow query log) 記錄執行耗時超過long_query_time的查詢
DDL日誌(metadata log) DDL語句執行的元數據操做

2、各大日誌類型簡單介紹

1.錯誤日誌

    錯誤日誌文件默認爲datadir目錄下的 hostname.err文件,hostname表示當前的主機名。固然你也能夠經過在[mysqld]配置下配置log-error=[file_path]來指定錯誤日誌文件的名字和路徑。MySQL啓動時若是沒有錯誤日誌,則會自動建立錯誤日誌,可是若是在運行時刪除了錯誤日誌則不會從新建立。
若是不知道錯誤日誌的位置,能夠在MySQL命令行經過變量log_error來查看。mysql

mysql> show variables like 'log_error';
+---------------+----------------------------------------+
| Variable_name | Value                                  |
+---------------+----------------------------------------+
| log_error     | ./luther.err |
+---------------+----------------------------------------+

2.通用查詢日誌

    常規查詢日誌是mysqld在作什麼的常規記錄 。當客戶端鏈接或斷開鏈接時,服務器會將信息寫入此日誌,並按照接收語句的順序記錄從客戶端收到的每一個SQL語句。查詢日誌默認是關閉的,默認爲datadir目錄下的 hostname.log文件,hostname表示當前的主機名。固然你也能夠經過在[mysqld]配置下配置general_log=ON來打開查詢日誌、general_log_file=[file_path]來指定查詢日誌文件的名字和路徑。因查詢日誌在生產中通常是不會打開的(不推薦打開,由於查詢日誌記錄的太多,會致使頻繁IO消耗大量資源),因此此處不作過多介紹,有興趣的請參考官網。sql

3.二進制日誌(詳細待補充,查看詳細能夠參考https://blog.csdn.net/demonson/article/details/80664141

    二進制日誌包含描述數據庫更改(例如表建立操做或表數據更改)的事件。除非是使用基於行的日誌記錄,不然它還包含針對可能進行了更改的語句的事件(例如, DELETE不匹配任何行)。二進制日誌還包含有關每一個語句更新數據花費時間的信息。二進制日誌有兩個重要目的:數據庫

  • 用於複製,主服務器上的二進制日誌提供了要發送到從服務器上數據更改的記錄。bash

  • 某些數據恢復操做須要使用二進制日誌。服務器

    二進制日誌文件默認爲hostname-bin開始的文件(例如:mysql-bin.000001和mysql-bin.index),hostname表示當前的主機名。工具

    二進制日誌支持三種格式類型:spa

  1. 基於行的日誌:主服務器將影響各個錶行的事件寫入二進制日誌。 --binlog-format=ROW
  2. 基於語句的日誌:基於SQL語句。 --binlog-format=STATEMENT
  3. 基於混合的日誌:默認狀況下使用基於語句的日誌記錄。 --binlog-format=MIXED

     查看二進制日誌須要使用mysql客戶端工具mysqlbinlog去查看.net

4.中繼日誌(詳細待補充)

    中繼日誌也是一種二進制日誌,只不過該日誌是保存在從服務器中,是從服務器I/O線程將主服務器的二進制日誌讀取過來記錄到從服務器本地文件,而後從服務器SQL線程會讀取relay-log日誌的內容並應用到從服務器,從而使從服務器和主服務器的數據保持一致。主要用於主從同步。命令行

5.慢查詢日誌(詳細待補充)

    慢查詢日誌記錄了執行花費超過 long_query_time時間(查詢獲取鎖(包括鎖等待)的時間不計入查詢時間內),而且有超過min_examined_row_limit行的結果的查詢SQL。慢查詢日誌是在查詢執行完畢且已經徹底釋放鎖以後才記錄的,所以慢查詢日誌記錄的順序和執行的SQL查詢語句順序可能會不一致(例如語句1先執行,查詢速度慢,語句2後執行,但查詢速度快,則語句2先記錄)。默認狀況下,慢查詢日誌是禁用的。要明確指定初始慢查詢日誌狀態,請使用 --slow_query_log[={0|1}]。不帶參數或參數爲1時, --slow_query_log啓用日誌。參數爲0時,此選項禁用日誌。默認狀況下,慢查詢日誌不記錄管理語句(例如:ALTER TABLE等),也不記錄不使用索引的查詢。能夠使用log_slow_admin_statements和  log_queries_not_using_indexes參數去修改該設置。

6.DDL日誌(詳細待補充)

    DDL日誌或元數據日誌記錄由數據定義語句(如DROP TABLE和ALTER TABLE)生成的元數據操做,並將其寫入MySQL數據目錄(datadir)中的文件ddl_log.log中。 MySQL使用此日誌從元數據操做中發生的crash中恢復。ddl_log.log是一個二進制文件,它不是想要人爲可讀的,因此你不該該以任何方式嘗試修改其內容。在實際須要記錄元數據語句以前,不會建立ddl_log.log,並在mysqld成功啓動後被刪除。所以,該文件可能不會以徹底正常的方式運行在MySQL服務器上。目前,ddl_log.log最多可容納1048573個輸入,大小至關於4 GB。超出此限制後,您必須重命名或刪除該文件,才能執行任何其餘DDL語句。

    如今沒有用戶可配置的與此文件關聯的服務器選項或變量。

相關文章
相關標籤/搜索