程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL文件

編輯:MySQL綜合教程

MySQL文件


1.參數文件   這是MySQL啟動時需要讀取的配置文件,可以通過mysql --help | grep my.cnf來查看啟動時查找的順序。這些參數的值取決於編譯MySQL時指定的默認值或源代碼中指定參數的默認值。可以通過show variables查看數據庫中的參數,也可以通過like來過濾參數名,還可以通過information_schema.global_variables視圖來查找。MySQL參數可以分為兩類:   a.靜態(static)參數   在整個實例生命周期內都不得更改,只讀(read only)的。   b.動態(dynamic)參數   在整個實例生命周期內可以更改。通過命令SET | [global | session] system_var_name=expr | [@@global. | @@session. |@@]system_var_name=expr來改變值。其中global表示該參數是基於整個實例的生命周期的,而session是基於當前回話的。   2.日志文件   記錄了影響MySQL數據庫的各種類型活動。以下配置文件的參數影響二進制日志記錄的信息和行為:max_binlog_size、binlog_cache_size、sync_binlog、binlog-do-db、binlog-ignore-db、log-slave-update、binlog_format。這些參數的含義是什麼,我會在以後的博客中有一篇專門來講解參數,這裡就不多說啦。常見的日志文件有:   a.錯誤日志(error log)   記錄了MySQL的啟動、關閉、運行過程。在遇到問題時應該首先查看該文件以便於定位問題。該文件不僅記錄了所有的錯誤信息,也記錄一些警告信息或正確的信息。通過show variables like 'log_error'來定位該文件的位置。在默認情況下,錯誤文件的文件名為服務器的主機名。   b.慢查詢日志(slow query log)   記錄可能存在"問題"的SQL語句,從而進行SQL語句層面的優化。其格式有:FILE和TABLE(information_schema.slow_log)兩種格式,可以通過參數log_output(動態參數)選擇輸出的格式。使用mysqldumpslow命令來查看慢日志文件的內容。被記錄到該文件的幾種情況:   1.通過參數long_query_time來設置被記錄到該文件的閥值。會記錄運行時間超過(大於)該值的所有SQL語句。   2.通過參數long_queries_not_using_indexes來設置將沒有使用索引的SQL語句記錄到慢日志文件中。MySQL5.6版本新增一個參數log_throttle_queries_not_using_indexes來設置每分鐘記錄到slow log的且未使用索引的SQL語句的次數(主要是為了頻繁記錄防止slow log文件不斷增大)。   3.通過參數long_query_io指定將超過設置邏輯IO次數的SQL語句記錄到slow log文件中。   c.二進制日志(binlog)   記錄了對MySQL數據庫執行IUD操作。其作用主要有以下幾種:   1.恢復(recovery) 某些數據的恢復需要二進制日志.如,在一個數據庫全備文件恢復後,用戶可以通過二進制日志進行point-in-time的恢復   2.復制(replication) 主要用在master-slave上。   3.審計(audit) 通過二進制日志中的信息來進行審計,判定是否有對數據庫進行注入的攻擊。   d.查詢日志(log)   記錄了所有對MySQL數據庫請求的信息,無論這些請求是否得到正確的執行。默認文件名為主機名.log。從MySQL5.1版本開始也可以將該日志記錄到information_chema.general_log表中。   3.套接字文件   在unix下本地連接MySQL可以采用unix域套接字方式,這種方式需要一個套接字(socket)文件。套接字文件可有參數socket控制一般在/tmp目錄下且名稱為mysql.sock。   4.pid文件   當MySQL實例啟動是,會將自己的進程ID寫入一個文件中(pid文件)。該文件可有參數pid_file控制,默認位於數據庫目錄下,文件文件名為主機名.pid.   5.表結構定義文件   MySQL數據的存儲是根據表進行的,每個表都會有與之對應的文件。不論表采用何種存儲引擎,MySQL都有一個以.frm為後綴名的文件,這個文件記錄了該表的表結構定義。   6.InnoDB存儲引擎文件   上邊介紹的文件都是MySQL數據庫本身的文件,和存儲引擎無關。除了這些文件之外,每個表存儲引擎還有其自己獨有的文件。與InnoDB存儲引擎密切相關的文件包括重做日志文件(redo log)和表空間文件(tablespace)。   1.表空間文件   InnoDB采用將存儲的數據按表空間進行存放。默認配置下會有一個初始大小為10M名為ibdata1的文件。該文件就是默認的表空間文件,可通過參數innodb_data_file_path對其進行設置。默認情況下InnoDB存儲引擎的表的數據都會記錄到該共享表空間中,但是可以通過參數innodb_file_per_table設置,為每個基於InnoDB存儲引擎的表產生一個獨立表空間。該獨立表空間只是存儲該表的數據、索引和插入緩沖BITMAP等信息,其余的信息還是存放在默認的表空間中。   2.重做日志文件   默認情況下在數據目錄下會有兩個名為ib_logfile0和ib_logfile1的文件。記錄了對於InnoDB存儲引擎的事務日志。當數據庫宕機時,InnoDB存儲引擎會使用重做日志恢復到故障之前的時刻,以此來保證數據的完整性。以下參數影響重做日志文件的屬性:innodb_log_file_size、innodb_log_files_in_group、innodb_mirrored_log_groups、innodb_log_group_home_dir  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved