1. 程式人生 > >MySQL 第20天 MySQL日誌 錯誤日誌、二進位制日誌、查詢日誌和慢查詢日誌

MySQL 第20天 MySQL日誌 錯誤日誌、二進位制日誌、查詢日誌和慢查詢日誌

MySQL日誌

在任何一種資料庫中,都會有各種各樣的日誌,記錄著資料庫工作的方方面面,以幫助資料
庫管理員追蹤資料庫曾經發生過的各種事件

在 MySQL 中,有 4 種不同的日誌,分別是錯誤日誌、二進位制日誌(BINLOG 日誌)、查詢日誌和慢查詢日誌

錯誤日誌

錯誤日誌是 MySQL 中最重要的日誌之一,它記錄了當 mysqld 啟動和停止時,以及伺服器在
執行過程中發生任何嚴重錯誤時的相關資訊。當資料庫出現任何故障導致無法正常使用時,
可以首先檢視此日誌

可以用--log-error[=file_name]選項來指定 mysqld
( MySQL 伺服器)儲存錯誤日誌檔案的位置。
如果沒有給定 file_name 值,mysqld 使用錯誤日誌名 host_name.err(host_name 為主機名)
並預設在引數 DATADIR(資料目錄)指定的目錄中寫入日誌檔案

二進位制日誌

二進位制日誌(BINLOG)記錄了所有的 DDL(資料定義語言)語句和 DML(資料操縱語言)
語句,但是不包括資料查詢語句。語句以“事件”的形式儲存,它描述了資料的更改過程。
此日誌對於災難時的資料恢復起著極其重要的作用

日誌的位置和格式

當用--log-bin[=file_name]選項啟動時, mysqld 將包含所有更新資料的 SQL 命令寫入日誌檔案。
如果沒有給出 file_name 值,預設名為主機名後面跟“-bin”。如果給出了檔名,但沒有包
含路徑,則檔案預設被寫入引數 DATADIR(資料目錄)指定的目錄。

日誌的讀取

由於日誌以二進位制方式儲存,不能直接讀取,需要用 mysqlbinlog 工具來檢視,語法如下

shell> mysqlbinlog log-file;

日誌的刪除

對於比較繁忙的 OLTP(線上事務處理)系統,由於每天生成日誌量大,這些日誌如果長時
間不清除,將會對磁碟空間帶來很大的浪費。因此,定期刪除日誌是 DBA 維護 MySQL 資料
庫的一個重要工作內容。下面將介紹幾種刪除日誌的常見方法。

1.方法 1

執行“RESET MASTER;”命令,該命令將刪除所有 BINLOG 日誌,新日誌編號從“000001”
開始

2.方法 2

執行“PURGE MASTER LOGS TO 'mysql-bin.******'”命令,該命令將刪除“******”編號之前
的所有日誌

3.方法 3

執行“PURGE MASTER LOGS BEFORE 'yyyy-mm-dd hh24:mi:ss'”命令,該命令將刪除日期為
“yyyy-mm-dd hh24:mi:ss”之前產生的所有日誌

mysql> system ls -ltr localhost-bin*     檢視日誌

4.方法 4

設定引數--expire_logs_days=#,此引數的含義是設定日誌的過期天數,過了指定的天數後日
志將會被自動刪除,這樣將將有利於減少 DBA 管理日誌的工作量。

其他選項
二進位制日誌由於記錄了資料的變化過程,對於資料的完整性和安全性起著非常重要的作用。
因此,MySQL 還提供了一些其他引數選項來進行更小粒度的管理,具體介紹如下。

 --binlog-do-db=db_name

該選項告訴主伺服器,如果當前的資料庫(即 USE 選定的資料庫)是 db_name,應將更新記錄
到二進位制日誌中。其他所有沒有顯式指定的資料庫更新將被忽略,不記錄在日誌中。

 --binlog-ignore-db=db_name

該選項告訴主伺服器,如果當前的資料庫(即 USE 選定的資料庫)是 db_name,不應將更新保
存到二進位制日誌中,其他沒有顯式忽略的資料庫都將進行記錄。

--innodb-safe-binlog

此選項經常和--sync-binlog=N(每寫 N 次日誌同步磁碟)一起配合使用,使得事務在日誌中

的記錄更加安全。

 SET SQL_LOG_BIN=0

具有 SUPER 許可權的客戶端可以通過此語句禁止將自己的語句記入二進位制記錄。這個選項在
某些環境下是有用的,但是使用時一定要小心,因為它很可能造成日誌記錄的不完整或者在
複製環境中造成主從資料的不一致。

查詢日誌

查詢日誌記錄了客戶端的所有語句,而二進位制日誌不包含只查詢資料的語句。

日誌的位置和格式

當用--log[=file_name]或-l [file_name]選項啟動 mysqld(MySQL 伺服器)時,查詢日誌開始被
記錄。和其他日誌一樣,如果沒有給定 file_name 的值,日誌將寫入引數 DATADIR(資料目
錄)指定的路徑下,預設檔名是 host_name.log。

日誌的讀取

因為查詢日誌記錄的格式是純文字,因此可以直接進行讀取。

注意:log 日誌中記錄了所有資料庫的操作,對於訪問頻繁的系統,此日誌對系統性能的影響較
大,建議一般情況下關

慢查詢日誌

慢查詢日誌記錄了包含所有執行時間超過引數 long_query_time(單位:秒)所設定值的 SQL
語句的日誌。獲得表鎖定的時間不算作執行時間。

檔案位置和格式

當用--log-slow-queries[=file_name]選項啟動 mysqld(MySQL 伺服器)時,慢查詢日誌開始被
記錄。和前面幾種日誌一樣,如果沒有給定 file_name 的值,日誌將寫入引數 DATADIR(數
據目錄)指定的路徑下,預設檔名是 host_name-slow.log。

日誌的讀取

和錯誤日誌、查詢日誌一樣,慢查詢日誌記錄的格式也是純文字,可以被直接讀取。

(1)首先查詢一下 long_query_time 的值

mysql> show variables like 'long%';

(2)為了方便測試,將修改慢查詢時間為 2 秒

mysql> set long_query_time=2;

(3)操作

(4)檢視慢查詢日誌

[[email protected] mysql]# more localhost-slow.log

如果慢查詢日誌中記錄內容很多,可以使用 mysqldumpslow 工具(MySQL 客戶端安裝自帶)
來對慢查詢日誌進行分類彙總。

注意:慢查詢日誌對於我們發現應用中有效能問題的 SQL 很有幫助,建議正常情況下,開啟此
日誌並經常檢視分析。

小結

 系統故障時,建議首先檢視錯誤日誌,以幫助使用者迅速定位故障原因。
 如果要記錄資料的變更、資料的備份、資料的複製等操作時,二進位制日誌必須開啟,以
幫助使用者進行資料恢復等操作。預設不記錄此日誌,建議通過--log-bin 選項將此日誌開啟。
 如果希望記錄資料庫發生的任何操作,包括 SELECT,則需要用--log 將查詢日誌開啟,
此日誌預設關閉,一般情況下建議不要開啟此日誌,以免影響系統整體效能。
 如 果 希 望 查 看 系 統 的 性 能 問 題 , 希 望 找 到 有 性 能 問 題 的 SQL 語 句 , 則 需 要 用
--log-slow-queries 開啟慢查詢日誌。對於大量的慢查詢日誌,建議使用 mysqldumpslow 工具
來進行彙總檢視。

相關推薦

MySQL 20 MySQL日誌 錯誤日誌二進位制日誌查詢日誌查詢日誌

MySQL日誌在任何一種資料庫中,都會有各種各樣的日誌,記錄著資料庫工作的方方面面,以幫助資料庫管理員追蹤資料庫曾經發生過的各種事件在 MySQL 中,有 4 種不同的日誌,分別是錯誤日誌、二進位制日誌(BINLOG 日誌)、查詢日誌和慢查詢日誌錯誤日誌錯誤日誌是 MySQL

巨蟒python全棧開發-20 核能來襲-約束 異常處理 MD5 日誌處理

一.今日主要內容 1.類的約束(對下面人的程式碼進行限制;專案經理的必備技能,要想走的長遠) (1)寫一個父類,父類中的某個方法要丟擲一個異常 NotImplementedError(重點) (2)抽象類和抽象方法 from abc import ABCMeta,abstractm

MySQL日誌檔案之錯誤日誌查詢日誌詳解

實驗環境:MySQL Community Server (GPL) 5.7.17、Ubuntu 16.04 一、MySQL日誌檔案分類 官方文件: 日誌檔案記錄了影響MySQL資料庫的各種型別活動。常見的日誌有以下幾個: 1、錯誤日誌(err

老男孩教育每日一題-106-MySQL如何授權用戶admin:password遠程訪問權限

每日一題 mysql添加用戶 解答:假定內網網段172.16.1.0,用戶admin,密碼password,數據庫oldboy。只創建用戶:create user [email protected]/* */%‘ identified by ‘password‘;創建用戶並授權數據庫權限,

mysql開啟binlog日誌查詢日誌

logs launch style spa 簡單 bsp mys 自動 文件的 1)首先,為什麽要開啟binlog日誌和慢查詢日誌呢? binlog日誌會記錄下數據庫的所以增刪改操作,當不小心刪除、清空數據,或數據庫系統出錯,這時候就可以使用binlog日誌來還原數據庫,

MySQL(用戶授權與撤銷,完全備份完全恢復)

運維day04一、用戶授權與撤銷數據庫管理員密碼設置?1.1修改數據庫管理員本機登錄密碼[root@db2 ~]# mysqladmin -hlocalhost -uroot -p password "123456"Enter password: mysqladmin: [Warning]

MySQL(主從同步,數據讀寫分離)

dsfaday05一、數據備份與恢復-增量備份和增量恢復a.binlog日誌介紹(二進制文件):使用Mysql數據庫服務日誌文件類型的一種。記錄除查詢之外的sql命令。默認沒啟用 查詢的sql包括:select desc show 不是查詢的命令:insert update delete create dr

MySQL(增量備份增量恢復)

sfdsday05一、數據備份與恢復-增量備份和增量恢復a.binlog日誌介紹(二進制文件):使用Mysql數據庫服務日誌文件類型的一種。記錄除查詢之外的sql命令。默認沒啟用 查詢的sql包括:select desc show 不是查詢的命令:insert update delete create dr

MySQL(管理表記錄)

4564654day03一、管理表記錄?導入數據:把系統文件的內容存儲到數據庫服務器的表裏。 把系統用戶信息/etc/passwod存儲到數據庫服務器的db3庫下的user裏。 用戶名 密碼 UID GID 描述信息 家目錄shell mysql> create table user(-> nam

MySQL

分組聚合 事務 python MySQL第二天 關鍵詞:分組聚合 自關聯 物理上一張表,邏輯上是兩張表 create table areas( id int primary key, atitle varchar(20), pid int, foreign key(pid) referenc

LDAP MySQL+LDAP 安裝

pad 所有 ip) 復制代碼 soft 用戶 nta director slap https://www.easysoft.com/applications/openldap/back-sql-odbc.html OpenLDAP 使用 SQLServer 和

MySQL通用查詢日誌查詢日誌分析

MySQL中的日誌包括:錯誤日誌、二進位制日誌、通用查詢日誌、慢查詢日誌等等。這裡主要介紹下比較常用的兩個功能:通用查詢日誌和慢查詢日誌。 1)通用查詢日誌:記錄建立的客戶端連線和執行的語句。 2)慢查詢日誌:記錄所有執行時間超過longquerytime秒的所有查詢或者不使用索引的查詢

關於MySQL 通用查詢日誌查詢日誌分析

MySQL中的日誌包括:錯誤日誌、二進位制日誌、通用查詢日誌、慢查詢日誌等等。這裡主要介紹下比較常用的兩個功能:通用查詢日誌和慢查詢日誌。 1)通用查詢日誌:記錄建立的客戶端連線和執行的語句。 2)慢查詢日誌:記錄所有執行時間超過longquerytime秒的所有查詢或者不使用索引的查詢 (1)通用查詢

撩課-Mysql20部分索引

學習地址: 撩課-JavaWeb系列1之基礎語法-前端基礎 撩課-JavaWeb系列2之XML 撩課-JavaWeb系列3之MySQL 撩課-JavaWeb系列4之JDBC 撩課-JavaWeb系列5之web伺服器-idea 什麼是索引 索引用於快速找出 在某個列中有一特定值的行,

mysql學習筆記總結

修改表結構:alter table 【表名】 add 【drop】【欄位名】【型別】【位置】 新增命令add:first(第一位置)after(在什麼欄位名之後)例項應用: 刪除drop:drop(使用者名稱、資料庫、表、欄位)例項應用:修改:修改資料型別 modify例項應用:修改欄位名 change例

mysql學習筆記

一、單表查詢1、查詢所有記錄select from student;2、查詢指定欄位select s_name from student; 例子指定s_name欄位顯示。3、查詢指定條件select s_name from student where s_id>3;這例子是id大於3查詢結果。4、查詢

MySQL----Connection連線池包裝模式(裝飾模式)與動態代理模式

在上次寫的連線模板中,Connection是單例,只適用於單執行緒也就是一個使用者操作,一旦多執行緒同時執行,就會掛掉,這裡將探討原因和解決辦法。 單例工廠類的漏洞: 這裡寫了一個類,專門對此做了測試: TxDemo.java <span style="font-s

MySQL日誌之普通查詢日誌查詢日誌

Intro 之前的一篇分享提到,MySQL的日誌型別可以分為三種,錯誤日誌(error_log),查詢日誌(query_log),和二進位制日誌(binary_log),error_log的介紹與用法詳見MySQL日誌之error_log,本文主要介紹gene

MySql 5.7 開啟binlog查詢日誌

MySQL5.7版本中,my.cnf的位置一般在/etc/my.cnf,要在my.cnf中新增: [mysqld] log-bin=/var/log/mysql-binlog/mysql-binlog server-id=1 slow_query_log=ON slow_

11月20 sqlite3_open

container data database ria cat class play create compare 1. sqlite3_open 死鎖 * thread #1, queue = ‘com.apple.main-thread‘, stop re