Mysql的日志文件種類比較多,有的日志文件記錄了mysql的服務狀態以及mysql在工作中產生的系統信息,我們利用這些信息可以更方便的對mysql服務進行運維,但是有的日志文件如果我們進行了不正確的配置將對mysql的服務器主機造成不良的後果,下面我們就來看看mysql有哪些日志文件以及他們的各自的作用。
Mysql相關的日志文件,主要有兩大類:事務日志和事件日志:
【事務日志】
事務日志:詳細的記錄了在什麼時間發生了什麼時候,在哪個時間對哪些數據進行了改變,能後實現事件的重放,一般只記錄對數據進行改變的操作,對於讀操作一般不進行記錄
事物日志為數據庫服務器實現以下功能:
1、將隨機IO轉換為順序IO,大大的提高了數據庫的性能,存儲的數據可能存在在磁盤的不同位置,降低了數據的讀取和操作性能。轉換為順序IO的原理為,先將數據存放在日志文件中,然後由RDBSM的後台將日志中的數據存放到磁盤上,這樣就保證了存儲的數據是連續的。
2、為事件重放提供基礎,事務日志詳細的記錄了時間發生的時間以及操作的數據對象,事務進程可以根據這些信息進行時間重放
默認的事務日志文件有兩個,位於數據目錄下以ibdata+number結尾的數字,我們可以對事務日志的位置、文件大小、增長方式進行定義,定義的方法如下:
這裡以使用支持事務的Innodb存儲引擎為例
在服務器的主配置文件/etc/my.cnf中:
innodb_data_home_dir = /innodata 定義存放事務日志的目錄
innodb_data_file_path = ibdata1:1024M 定義日志的名字和大小
innodb_data_file_path = ibdata2:50M:autoextend 定義日志大小的增長方式
【事件日志】
事件日志:記錄了服務器的歷史事件,即在生麼時間發生了什麼事,其中根據記錄內容的不同可以將事件日志分為一下幾種:
1、 the error log錯誤日志:在對應的數據目錄中,以主機名+.err命名的文件。
錯誤日志記錄的信息類型:
1、記錄了服務器運行中產生的錯誤信息
2、記錄了服務在啟動和停止是所產生的信息
3、在從服務器上如果啟動了復制進程的時候,復制進程的信息也會被記錄
啟用錯誤日志:默認情況下,系統已近將其自動啟動
在主配置文件中:
log-error= 指定錯誤日志的位置,這個位置myaql用戶必須有寫權限,
2、the binary log二進制日志:默認開啟。精確的記錄了用戶對數據庫中的數據進行操作的命令和操作的數據對象。
二進制日志文件的作用:
1、提供了增量備份的功能
2、提供了數據基於時間點的恢復,這個恢復的時間點可以由用戶控制
3、為mysql的復制架構提供基礎,將這主服務器的二進制日志復制到從服務器上並執行同樣的操作,就可將數據進行同步
啟用:默認在數據目錄下以mysql-bin.number命名的文件
log-bin= 指定二進制日志文件的名字
log-bin-index= 定義二進制日志文件的名字的索引文件的位置,其用來保存可用的二進制日志文件的名字
(注:二進制日志文件的刪除和一般文件的刪除是不同的,我們可以采用以下的方法
PURAGE BINARYLOGS BEFORE ‘mysql-bin.00001’清除某個二進制日志文件之前的二進制日志文件
PURAGE BINARYLOGS BEFORE ‘2011-3-5 23:00:00'清除某個時間點之前的所有二進制日志的記錄
3、the general query log查詢日志:對除了慢查日志中記錄的查詢信息都將記錄下來,這將對服務器主機產生大量的壓力,所以對於繁忙的服務器應該關閉這個日志
啟用和關閉的方法:
在主配置文件中:
general_log=[ON/OFF]
log_output=指定存放查詢日志的位置,可以放在文件中,也可以放在數據庫的表中,放在表中比放在文件中更容易查看
4、the slow query log慢查日志:默認為關閉狀態,記錄下來查詢時間超過設定時長的查詢,這些查詢日志將被慢查日志記錄下來
在主配置文件中配置:
通過long_query_time=num 定義默認的時長,默認時長為10秒
在配置文件中啟用:
slow_query_log=ON
slow_query_log_file= 指定慢查日志的位置及名字
在mysql中啟用的方法:
mysql>SET GLOBAL slow_query_log=ON
5、the relay log中繼日志,主要是在mysql服務器的中從架構中的從服務器上用到的,當從服務器想要和主服務器進行數據的同步時,從服務器將主服務器的二進制日志文件拷貝到己的主機上放在中繼日志中,然後調用SQL線程按照拷中繼日志文件中的二進制日志文件執行以便就可達到數據的同步。
開啟的方法:(只在從服務器上開啟)
配置mysql的主配置文件:
relay-log= 指定中繼日志的位置和名字
relay-log-index= 指定中繼日志的名字的索引文件的位置和名字
6、the ratationg logs 滾動日志,只要是針對二進制日志進行滾動的,對某個類型的日志文件滾動一次就生成一個新的相對應的日志文件,通過這種方法保證日志文件的特定大小,從而保證服務器在對日志文件查詢時有較高的響應能力
滾動二進制日志的命令:FLUSH LOGS
事務日志和二進制日志文件的區別:
兩者都能夠實現對數據操作的還原,但是前者的還原操作都是有系統自動完成的,不需要也不允許人為進行干預,而後者的恢復是完全依靠人為進行的。
作者 “redhat”