1. 程式人生 > >mysql的日誌類型及作用

mysql的日誌類型及作用

mysql 日誌

mysql的日誌類型及作用


當服務起不來或者報錯的時候,我們第一時間想到的就是日誌,日誌這個東西記載了許多重要的信息,有利於我們排除故障。當然,mysql也有日誌。

先來說說,mysql日誌的作用,當數據庫遭到意外損壞,服務起不來等等,可以通過日誌文件來拍錯。

還可以利用日誌文件來進行數據恢復。


一、日誌的分類

1、錯誤日誌:記錄了mysql服務的啟動,關閉和運行時發生的錯誤;

2、通用查詢日誌:記錄用戶的所有操作,包括啟動、關閉服務,插入、查詢等語句;

3、二進制日誌:以二進制的形式記錄了數據庫中的操作,但不記錄查詢語句;

4、慢日誌:記錄了mysql 所有查詢超時的語句


二、日誌設置
1、除了二進制日誌,其他都是文本文件

2、日誌文件通常存儲在Mysql數據目錄下
3、默認只啟動了錯誤日誌功能,其他需要手工啟動
4、但啟動日誌功能會降低Mysql的執行速度,因為一條操作寫進日誌中是要花時間的

二進制日誌

以二進制文件的形式記錄了數據庫的操作,但是不記錄查詢語句,也叫變更日誌

啟動與設置二進制日誌,在mysql配置文件中添加

[root@localhost data]# cat /etc/my.cnf
log-bin = /data/mysql-bin


啟動與設置二進制日誌:在Mysql的配置文件中,log-bin=DIR/filename
DIR是存放二進制日誌的目錄;
每啟動一次Mysql,該目錄下就會生成一個filename.00000x的文件;

目錄下還有一個filename.index的文件,用於存儲所有二進制文件清單;
如果我們沒有設置DIR和filename,則默認在數據目錄下以hostname-bin.00000x命名


去到/data目錄下查看是否有文件生成

[root@localhost ~]# cd /data/

[root@localhost data]# ls

aria_log.00000001 ibdata1 ib_logfile1 mysql-bin.000001 performance_schema xhk

aria_log_control ib_logfile0 mysql mysql-bin.index test


臨時停止與啟動二進制日誌

MariaDB [(none)]>  set sql_log_bin=0; 停止
MariaDB [(none)]>  set sql_log_bin=1; 啟動

註意:二進制日誌文件與數據庫數據文件最好不要放在同一塊硬盤上,如果存放數據文件的硬盤壞了,可以用另一塊硬盤的二進制日誌來恢復數據


查看二進制日誌

[root@localhost data]# mysqlbinlog mysql-bin.000001


刪除二進制日誌

刪除所有

MariaDB [(none)]> reset master;


刪除00004之前的所有

MariaDB [(none)]> purge master logs to ‘mysql-bin.000004‘;


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

MariaDB [(none)]> purge master logs to ‘2016-08-10 15:00:00‘;


使用二進制日誌還原數據庫

[root@localhost data]# mysqlbinlog mysql-bin.000001 | mysql -u root -p

[root@localhost data]# mysqlbinlog mysql-bin.000002 | mysql -u root -p

這條命令可以理解為:使用mysqlbinlog讀取二進制日誌文件然後使用mysql命令還原到數據庫中

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


還可以制定你想恢復的時間點

[root@localhost data]# mysqlbinlog --start-position="213" sstop-position="456" mysql-bin.000001 | mysql -u root -p

數值為二進制文件中的pos號


========================================================================

錯誤日誌

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

錯誤日誌是默認開啟的,且錯誤日誌無法被關閉

設置錯誤日誌:在配置文件中,log-error=DIR/filename

[root@localhost ~]# cat /etc/my.cnf
log-error = /data/mysql-error.log


======================================================================

通用查詢日誌

用來記錄用戶的所有操作:啟動和關閉mysql、更新語句、查詢語句

啟用和設置通用查詢日誌:配置文件中,log=DIR/filename


============================================================================

慢查詢日誌

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

啟動和設置慢查詢日誌:在配置文件中

log-slow-queries=DIR/filename

long_query_time=n #設置時間為n秒,默認為10s


刪除日誌

mysqladmin -u root -p flush-logs



本文出自 “xhk__運維” 博客,請務必保留此出處http://xhk777.blog.51cto.com/13405744/1980893

mysql的日誌類型及作用