mysql與mariaDB涉及到的檔案(日誌檔案、程序檔案、套接字檔案)
文章目錄
1、引數配置檔案
MySQL例項啟動時,資料庫會先去讀一個配置引數檔案,用來尋找資料庫的各種檔案所在位置以及指定某些初始化引數。就是my.cnf
mysql --help | gerp my.cnf
去檢視。
每個引數都可以通過show variables
去查詢,例如:
也可以通過@@session
和@@global
去查詢,例如:
my.cnf
檔案中的引數分為兩類:動態(dynamic)引數、靜態(static)引數,動態引數可以在MySQL例項執行中進行更改,靜態引數可以在整個例項生命週期內都不能修改,只能檢視。修改動態引數是可以通過set
命令進行修改:
上面的查詢和修改中涉及到
session
和global
指的是該引數的修改是基於當前會話還是整個例項的生命週期。有些引數只能在會話中進行修改,如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
-
預設情況下,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資料庫執行更改的所有操作,但是不包括select
和show
這類操作,因為這類操作不可能對資料本身做修改。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_logfile0
和ib_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的目錄下。