1. 程式人生 > >mysql與mariaDB涉及到的檔案(日誌檔案、程序檔案、套接字檔案)

mysql與mariaDB涉及到的檔案(日誌檔案、程序檔案、套接字檔案)

文章目錄

1、引數配置檔案

MySQL例項啟動時,資料庫會先去讀一個配置引數檔案,用來尋找資料庫的各種檔案所在位置以及指定某些初始化引數。就是my.cnf

檔案,通過命令mysql --help | gerp my.cnf去檢視。

每個引數都可以通過show variables去查詢,例如:
在這裡插入圖片描述

也可以通過@@session@@global去查詢,例如:
在這裡插入圖片描述

my.cnf檔案中的引數分為兩類:動態(dynamic)引數靜態(static)引數,動態引數可以在MySQL例項執行中進行更改,靜態引數可以在整個例項生命週期內都不能修改,只能檢視。修改動態引數是可以通過set命令進行修改:
在這裡插入圖片描述

上面的查詢和修改中涉及到sessionglobal指的是該引數的修改是基於當前會話還是整個例項的生命週期。有些引數只能在會話中進行修改,如autocommit;而有些引數修改完後,在整個例項生命週期中都會生效,如binlog_cache_size;而有些引數既可以在會話中又可以在整個例項的生命週期內生效,如read_buffer_size。

注意:利用這種方式修改的引數,並不會對MySQL的配置檔案進行修改,MySQL下一次啟動時,還是會重新讀取配置檔案中的引數。

2、日誌檔案

2.1 錯誤日誌

錯誤日誌檔案對MySQL的啟動、執行、關閉過程進行了記錄。不僅記錄了錯誤資訊,也記錄一些警告資訊或正確的資訊。可以通過show variables like 'log_error';命令去查詢錯誤日誌的位置。
在這裡插入圖片描述
錯誤日誌的檔名一般都用主機名字來命名。檢視錯誤日誌內容可用這個命令去看tail -n 50 msmk02-OptiPlex-7040.err

2.2 慢查詢日誌

  • 記錄執行比較慢的sql語句,把執行超過某個時間的sql語句全部都記錄到該日誌檔案中去。這時間值可以通過引數long_query_time

    來設定,預設值為10,代表10秒。這樣執行時間超過10s的sql語句就會被記錄下來。

  • 預設情況下,MySQL是不會啟動慢查詢日誌的,使用者需要手動將這個引數slow_query_log設定為ON。引數slow_query_log_file表示的是日誌的名稱,該日誌檔案的位置在mysql的data目錄下。
    在這裡插入圖片描述

  • 使用者可以通過mysqldumpslow來檢視慢查詢日誌,也可以按照一定條件去檢視。
    在這裡插入圖片描述

  • MariaDB還支援將慢查詢日誌儲存到一張表格mysql.slow_log中。通過show create table mysql.slow_log可以檢視該表的表結構:在這裡插入圖片描述

  • 引數log_output決定了日誌輸出的型別。預設為FILE型別,可以將它修改為TABLE型別。
    在這裡插入圖片描述

2.3 查詢日誌

查詢日誌記錄了所有對MySQL資料庫請求的資訊,無論這些請求是否得到了正確的執行。預設為主機名.log。

2.4 二進位制日誌

二進位制日誌記錄了對MySQL資料庫執行更改的所有操作,但是不包括selectshow這類操作,因為這類操作不可能對資料本身做修改。update類的操作,即使changed=0也會被二進位制日誌記錄。

二進位制檔案預設情況下是不開啟的。

3、套接字檔案

在UNIX系統下本地連線MySQL可以採用UNIX套接字方式,這種方式需要一個套接字(socket)檔案。套接字檔案可由引數socket控制。一般在/tmp目錄下,名為mysql.sock
在這裡插入圖片描述

4、pid檔案

MySQL例項啟動時,會將自己的程序ID寫入一個檔案中,該檔案即為pid檔案。該檔案由pid_file控制。

在這裡插入圖片描述

5、表結構定義檔案

frm為字尾名的檔案,這個檔案記錄的是表結構的而定義。因為MySQL資料的儲存是根據表進行的,每個表都會有與值對應的檔案。frm檔案還用來存放檢視的定義。可以直接用cat命令進行檢視frm檔案。

6、InnoDB儲存引擎檔案

6.1 表空間檔案

InnoDB採用將儲存的資料按表空間(tablespace)進行存放的設計。在預設配置下會有一個初始大小的為10MB,名為ibdata1的檔案。該檔案就是預設的表空間檔案(tablespace file),使用者可以通過引數innodb_data_file_path對其進行設定。設定之後所有基於InnoDB儲存引擎的表的資料都會記錄到該共享表空間中。
在這裡插入圖片描述

引數innodb_file_per_table的設定,可以將每個基於InnoDB儲存引擎的表產生一個獨立表空間。獨立表空間的命名規則為:表名.ibd

在這裡插入圖片描述

查看錶空間的命令ls -lh /opt/mariadb-enterprise-10.1.14-linux-x86_64/data/*
在這裡插入圖片描述

6.2 重做日誌檔案

在InnoDB儲存引擎的data目錄下會有兩個名為ib_logfile0ib_logfile1的檔案。這兩個就是重做日誌檔案(redo log file),如下:
在這裡插入圖片描述

重做日誌檔案對於InnoDB儲存引擎至關重要,他們記錄了對於InnoDB儲存引擎的事務日誌。

當資料庫由於所在主機忽然斷電導致例項失敗,InnoDB儲存引擎會使用重做日誌恢復到斷電之前的狀態,以此來保證資料的完整性。

影響重做日誌的引數:

  • innodb_log_file_size:指定每個重做日誌檔案的大小。InnoDB1.2.x版本之前,重做日誌大小不得大於等於4GB。1.2.x以後將該限制擴大為512G。
  • innodb_log_file_in_group:指定了日誌檔案組中重做日誌檔案的數量,預設為2.
  • innodb_mirrired_log_group:指定了日誌映象檔案組的數量,預設為1。表示只有一個日誌檔案組,沒有映象
  • innodb_log_group_home_dir:指定了日誌檔案組所在路徑,預設為./。表示在data的目錄下。