Mysql 日誌管理

2022-07-03 20:54:11 字數 4911 閱讀 3170

mysql日誌——記錄著mysql資料庫執行期間的操作和資訊

日誌作用

(1)當資料庫遭到意外損害,可以通過日誌檔案來查詢出錯原因

(2)利用日誌檔案進行資料恢復

日誌分類

(1)二進位制日誌:以二進位制檔案的形式記錄了資料庫中的操作,但是不記錄查詢語句

(2)錯誤日誌:記錄mysql伺服器的啟動、關閉和執行錯誤等資訊

(3)慢查詢日誌:記錄執行時間超過指定時間的操作

(4)通用查詢日誌:記錄使用者的所有操作,包括啟動和關閉mysql服務、更新語句、查詢語句等

日誌設定

(1)除了二進位制日誌,其他都是文字檔案

(2)日誌檔案通常儲存在mysql資料目錄下

(3)預設只啟動了錯誤日誌功能,其他需要手工啟動

(4)但啟動日誌功能會降低mysql的執行速度,因為一條操作寫進日誌中是要花時間的

二進位制日誌

(1) 以二進位制檔案的形式記錄了資料庫中的操作,但是不記錄查詢語句

(2) 也叫變更日誌(update log),主要用於記錄資料庫的變化

(3) 啟動與設定二進位制日誌:在mysql的配置檔案中,log-bin=dir/filename

dir是存放二進位制日誌的目錄;

每啟動一次mysql,該目錄下就會生成乙個filename.00000x的檔案;

目錄下還有乙個filename.index的檔案,用於儲存所有二進位制檔案清單;

如果我們沒有設定dir和filename,則預設在資料目錄下以hostname-bin.00000x命名

# cat /etc/my.cnf|egrep "log-bin"

log-bin = /data/mysqldb/binlog/mysql-bin

# ls /data/mysqldb/binlog/

mysql-bin.000001 mysql-bin.000003 mysql-bin.000005 mysql-bin.000007 mysql-bin.index

mysql-bin.000002 mysql-bin.000004 mysql-bin.000006 mysql-bin.000008

(4)臨時停止與啟動二進位制日誌

-> set sql_log_bin=0

; 停止

-> set sql_log_bin=1; 啟動

(5)注意:二進位制日誌檔案與資料庫資料檔案最好不要放在同一塊硬碟上,如果存放資料檔案的硬碟壞了,可以用另一塊硬碟的二進位制日誌來恢復資料

(6)檢視二進位制日誌:

# mysqlbinlog mysql-bin.000001

(7)刪除二進位制日誌:

//

刪除所有

->reset master;

//刪除00004之前的所有

->purge master logs to 'mysql-bin.000004';

//刪除指定日期時間之前的所有

->purge master logs to '

2016-08-10 15:00:00';

(8)使用二進位制日誌還原資料庫

# mysqlbinlog mysql-bin.000001 | mysql -u root -p

# mysqlbinlog mysql-bin.000002 | mysql -u root -p

這條命令可以理解為:使用mysqlbinlog讀取二進位制日誌檔案然後使用mysql命令還原到資料庫中

注意還原時必須是編號小的先還原

(9)使用二進位制日誌檔案的pos號|時間點恢復

//

先執行3條操作

->create database 2test

->create database alvin

->drop database 2test

//檢視二進位制日誌,觀察每乙個命令的起始/結束pos號,和起始/結束時間

# mysqlbinlog mysql-bin.000001

# at 120

#160813 15:13:53serverid 706end

_log_pos217crc32 0x781f816e query thread_id=21 exec_time=0 error_code=0

set timestamp=1471072433/*!*/;

set @@session.pseudo_thread_id=21/*!*/;

set @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;

set @@session.sql_mode=1075838976/*!*/;

set @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;

/*!\c utf8 *//*!*/;

set @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;

set @@session.lc_time_names=0/*!*/;

set @@session.collation_database=default/*

!*/;create database 2test/*!*/

;# at

217

#160813 15:14:11server id 706end_log_pos314crc32 0x0fde9820 query thread_id=21 exec_time=0 error_code=0

set timestamp=1471072451

/*!*/;create database alvin/*!*/;

//想回到什麼哪條命令時的狀態,可以指定起始/結束pos號恢復# mysqlbinlog --start-position="120" --stop-position="217" mysql-bin.000001 |mysql -u root -p

//日誌也會記錄下這條恢復語句,我們可以看到這條命令的時間和原來那條一模一樣

# mysqlbinlog mysql-bin.000001

# at 401

#160813 15:13:53server id 706 end_log_pos 498 crc32 0x3a899ca5 query thread_id=21 exec_time=619 error_code=0

set timestamp=1471072433/*!*/;

create database 2test

/*!*/;

//同理也可以用時間點來恢復

# mysqlbinlog –start-datetime=」2016-08-13 15:13:53」 –stop-datetime=」2016-08-13 15:14:11」 mysql-bin.000001 | mysql –uroot –p

錯誤日誌

(1)主要用於記錄mysql服務的開啟、關閉和錯誤資訊,若服務啟動不成功第一件事應該就是去看這個錯誤日誌

(2)錯誤日誌是預設開啟的,且錯誤日誌無法被關閉

(3)設定錯誤日誌:在配置檔案中,log-error=dir/filename

# cat /etc/my.cnf |egrep "log-error"

log-error = /data/mysqldb/log/mysql-error.log

# ls /data/mysqldb/log

mysql-error.log

(4)刪除錯誤日誌

mysqladmin -u root -p flush-logs

# ls

mysql-error.log mysql-slow_query.log

通用查詢日誌

(1)用來記錄使用者的所有操作:啟動和關閉mysql、更新語句、查詢語句

(2)啟用和設定通用查詢日誌:配置檔案中,log=dir/filename

(3)刪除通用查詢日誌:

# mysqladmin -u root -p flush-logs

或# echo >access.log

慢查詢日誌

(1)記錄執行時間超過指定時間的執行語句

(2)啟動和設定慢查詢日誌:在配置檔案中

log-slow-queries=dir/filename

long_query_time=n //

設定時間為n秒,預設為10s

(3)刪除慢查詢日誌:

# mysqladmin -u root -p flush-logs

mysql日誌管理

1,錯誤日誌 記錄啟動 執行或停止時出現的問題,一般也會記錄警告資訊。2,一般查詢日誌 記錄建立的客戶端連線和執行的語句。3,慢查詢日誌 記錄所有執行時間超過long query time秒的所有查詢或不使用索引的查詢,可以幫我們定位伺服器效能問題。1,錯誤日誌 錯誤日誌 記錄啟動 執行或停止時出現...

MySQL日誌管理

mysql日誌主要包含 錯誤日誌 一般查詢日誌 慢查詢日誌 二進位制日誌 中繼日誌 事務日誌。1.錯誤日誌 錯誤日誌大概記錄以下幾個方面的資訊 伺服器啟動和關閉過程中的資訊 未必是錯誤資訊,如mysql如何啟動innodb的表空間檔案的 如 何初始化自己的儲存引擎的等等 伺服器執行過程中的錯誤資訊 ...

MySQL 日誌管理

在 mysql 中,有 4 種不同的日誌,分別是錯誤日誌 二進位制日誌 查詢日誌和慢查詢日誌。錯誤日誌記錄了 mysql 啟動和停止時以及伺服器在執行過程中發生嚴重錯誤時的相關資訊。mysql show variables like log error variable name value log...