MySQL的日志文件

本文將重點介紹MySQL的日志文件類型,并講解其作用 , 并結合一定實操演示 , 相信跟著做下來你會對MySQL有更深的理解 。
文件的概念【MySQL的日志文件】在開始講MySQL日志文件之前,首先我們要明確一下文件的概念 。MySQL數據庫是存放在硬盤上的,用戶進程通過和一個運行的MySQL實例進程通信(也就是需要一個運行的MySQL服務),通過這個服務去操作磁盤上的MySQL數據庫文件,實現數據存取修改的目的,因此,我們先來看看都有哪些文件 。
# 在MySQL登錄狀態下,執行這個命令可以查看我們數據庫主要數據文件的位置mysql> show variables like 'datadir';+---------------+------------------------+| Variable_name | Value|+---------------+------------------------+| datadir| /usr/local/mysql/data/ |+---------------+------------------------+# 得知路徑之后在Linux終端進行查看sudo ls -lh /usr/local/mysql/data/# 下面是執行了命令之后的部分展示(這里列出了MySQL的各種日志文件、索引相關的文件、你建立的數據庫的文件等,先有個概念 , 等閱讀下面講到的各種文件時可以回上來看一看)-rw-r-----1 _mysql_mysql6.7K1 19 10:51 binlog.000006-rw-r-----1 _mysql_mysql179B1 24 15:04 binlog.000007-rw-r-----1 _mysql_mysql48B1 24 15:05 binlog.index-rw-r-----1 _mysql_mysql4.1K1 24 15:04 ib_buffer_pool-rw-r-----1 _mysql_mysql48M2 26 14:06 ib_logfile0-rw-r-----1 _mysql_mysql48M 10 11 11:37 ib_logfile1drwxr-x---5 _mysql_mysql160B 10 13 15:01 blog-rw-r-----1 _mysql_mysql12M2 26 14:04 ibdata1-rw-r-----1 _mysql_mysql12M1 24 15:05 ibtmp1-rw-r-----1 _mysql_mysql180B32 17:28 lilithgamesdeMacBook-Pro-42-slow.log-rw-r-----1 _mysql_mysql249B32 17:55 lilithgamesdeMacBook-Pro-42.log-rw-r-----1 _mysql_mysql24M2 26 14:04 mysql.ibd-rw-r-----1 _mysql_mysql11K1 24 15:05 mysqld.local.err-rw-r-----1 _mysql_mysql4B1 24 15:05 mysqld.local.pid-rw-r-----1 _mysql_mysql16M2 26 14:06 undo_001-rw-r-----1 _mysql_mysql16M2 26 14:06 undo_002參數文件MySQL登錄狀態下使用show variables命令查看所有參數(key-value形式),這些參數控制著MySQL的各種狀態屬性 。這個命令在我們需要獲取MySQL的各種狀態時會被高頻使用到 。
# 查詢所有參數mysql> show variables;# 也可以使用like參數指定需要查詢的參數mysql> show variables like 'warning_count';# 設置全局參數值,鍵值對的形式mysql> set global 參數名=參數值日志文件錯誤日志(error log)錯誤日志記錄了MySQL的啟動、運行、關閉的過程 。遇到例如MySQL無法正常啟動 , 可以查看錯誤日志文件 。而且錯誤日志會記錄MySQL運行過程中的警告(warning),通過查看這些警告?可以針對出現警告的原因進行優化,從而達到優化數據庫的目的 。
# 在MySQL登錄狀態下 , 使用下面命令可以查看error log在服務器上的位置mysql> show variables like 'log_error';+---------------+----------------------------------------+| Variable_name | Value|+---------------+----------------------------------------+| log_error| /usr/local/mysql/data/mysqld.local.err |+---------------+----------------------------------------+# 然后通過tail -n 50 查看倒數50行的錯誤日志內容去定位錯誤(不是在MySQL登錄狀態下,而是在Linux用戶態下,sudo獲取訪問權限)sudo tail -n 50 /usr/local/mysql/data/mysqld.local.err# 具體日志內容不作展示慢查詢日志(slow query log)慢查詢日志的作用是將運行時間超過設定值的所有SQL語句都記錄到慢查詢日志中 , 通過定期檢查慢查詢日志,通過定位到慢SQL語句之后,對其進行分析,是否是因為索引未生效的等原因導致查詢過慢,可以對查詢過慢的SQL語句進行優化 。
# 在MySQL登錄狀態下查看慢查詢日志閾值 , 執行時間超過這個值的SQL會被記錄下來mysql> show variables like 'long_query_time';+-----------------+-----------+| Variable_name| Value|+-----------------+-----------+| long_query_time | 10.000000 |+-----------------+-----------+# 查詢是否開啟慢查詢日志(默認關閉)mysql> show variables like 'slow_query_log';+----------------+-------+| Variable_name| Value |+----------------+-------+| slow_query_log | OFF|+----------------+-------+# 開啟慢查詢日志mysql> set global slow_query_log=on;一個和慢查詢日志有關的參數是log_queries_not_using_indexes,開啟之后 。如果運行的SQL沒有使用索引,則MySQL數據庫同樣會將這條SQL語句記錄到慢查詢日志文件中 。
# 查詢是否將未執行索引的SQL加入到慢查詢日志當中(默認關閉)mysql> show variables like 'log_queries_not_using_indexes';+-------------------------------+-------+| Variable_name| Value |+-------------------------------+-------+| log_queries_not_using_indexes | OFF|+-------------------------------+-------+# 開啟參數mysql> set global log_queries_not_using_indexes=on;

推薦閱讀