MySQL日誌功能詳解(1)



MySQL日誌:(以下都位全局服務器變量)

MySQL > show global variables like '%log%';


MySQL 6類日誌簡單介紹

查詢日誌:默認爲關閉(產生大量寫操作) 所有跟查詢相關的語句

慢查詢日誌:查詢執行時長超過指定時長的查詢,即爲慢查詢
        (包括查詢本身,以及查詢所依賴的資源不被允許[表被鎖定])

錯誤日誌:跟錯誤信息相關,以及mysql啓動,關閉,主從複製等信息

二進制日誌:記錄跟修改相關的操作,用來實現複製的憑據(可是實現數據恢復)

中繼日誌:從服務器上的二進制日誌(從主服務器上覆制過來的)

事務日誌:將隨機I/O轉換爲順序I/O (事務支持回滾) 
  (查詢操作首先在innodb_buffer --> 事務日誌 --> 數據文件)
       日誌文件組:至少要存在兩個,實現輪詢(事務日誌所在的硬盤要足夠可靠)
       
       事務如果在數據庫內存中,回滾操作開銷很小
       如果數據庫內存空間不夠,事務會存到事務日誌中,回滾開銷適中
       如果事務日誌也寫滿,則需要同步到數據文件中,此時回滾操作開銷非常大(要刪除數據文件中的內容)
       所以:儘可能使用小事務來替代大事務來提升事務引擎的性能

       當一個事務提交後,數據會立即同步到事務日誌中去(順序I/O速度較快)
       此時如果系統崩潰,下次重新啓動後,事務日誌會將已經提交的數據同步到數據文件中去
       而將未提交的事務進行回滾,使數據恢復到一致性狀態 此過程叫做崩潰性恢復

       innodb等支持事務的存儲引擎,支持崩潰性恢復
       MyISAM不支持崩潰性恢復

       MySQL > show global variables like 'innodb%';
       ...
       | innodb_log_group_home_dir    ./ |    -->  事務日誌存儲位置         
       ...

       相對路徑都是相對於數據目錄


查詢日誌:

    log:{ON|oFF}:是否記錄所有語句的日誌信息於一般查詢日誌文件(general_log)

    log_output={TABLE|FILE|NONE}

        table和file 可以同時出現,用逗號分隔即可

        如果設置log_output爲table,表的位置爲mysql庫下的generan_log表

       

MySQL > show tables in mysql like 'general_log';
        +-------------------------------+
        | Tables_in_mysql (general_log) |
        +-------------------------------+
        | general_log             |
        +-------------------------------+
    general_log:是否啓用查詢日誌
    general_log_file:定義了一般查詢日誌保存的文件



MySQL > show global variables like 'log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log           | OFF   |
+---------------+-------+

MySQL > show global variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |
+---------------+-------+

MySQL > show global variables like 'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log   | OFF   |
+---------------+-------+

MySQL > show global variables like 'general_log_file';
+------------------+----------------------------+
| Variable_name    | Value                      |
+------------------+----------------------------+
| general_log_file | /var/run/mysqld/mysqld.log |
+------------------+----------------------------+




慢查詢日誌

    slow_query_log={ON|OFF} (0禁用,1啓用) (全局)

           是否啓用慢查詢日誌,它的輸出位置也取決

           log_output={table|file|none}

           表名及位置:mysql庫下的slow_log表

    slow_query_log_file:www-slow.log

           定義慢查詢日誌的文件路名稱徑及

    long_query_time : 10.00000 慢查詢的時間

           (將某張表鎖定,可進行實驗,不一定成功)

    long_slow_filter:不記錄慢查記錄(過濾器)

    log_slow_queries:會話變量,每個用戶可以自己管理

    log_slow_verbosity:是否記錄詳細的信息

    log_slow_rate_limit:速率



錯誤日誌:

    服務器啓動和關閉過程中的信息;

    服務器運行過程中的錯誤信息

    事件調度器運行一個事件時產生的信息

    在複製架構中的從服務器上啓動從服務器線程時產生的信息


    log_error = /path/to/error_log_file

    log_warnings = {1|0}

        是否記錄警告信息保存至錯誤日誌中


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章