mysql的日誌檔案詳解

weixin_33912246發表於2018-04-28

一,查詢日誌

  1. 建議不建議開啟
  2. 記錄查詢操作
  3. 儲存型別 檔案:file,表:table
  4. general_log=ON|OFF
  5. general_log_file=HOSTNAME.log
  6. log_output=TABLE|FILE|NONE

二,慢查詢日誌

  1. 查詢時長超出指定時長的查詢操作,建議修改配置檔案全域性開啟
  2. show global variables like 'long_query_time'
  3. set @@global.long_query_time=
  4. select @@global.long_query_time
  5. slow_query_log=ON|OFF
  6. slow_query_log_file=hostname-slow.log
  7. log_slow_filter
  8. log_slow_queries =OFF
  9. log_slow_rate_limit=1
  10. log_slow_verbosity

三,錯誤日誌

  1. mysqld啟動或關閉過程中輸出的事件資訊
  2. mysqld執行中產生的錯誤資訊
  3. event scheduler 執行一個event時產生的日誌資訊
  4. 在主從複製架構中的從伺服器上啟動沖伺服器執行緒時產生的資訊
  5. log_error=path
  6. log_warnings=1|0

四,二進位制日誌

  1. 導致資料改變的sql語句
  2. show master logs 檢視可用日誌
  3. show master status 檢視正在使用的日誌
  4. show binlog events [ in 'log_name'] [from pos] [limit [offset,] row_count]
  5. 記錄格式如下
  6. 基於語句記錄 statement
  7. 基於行記錄row
  8. 混合模式 mixed
  9. 檔案型別:mysql二進位制檔案,mysql二進位制索引檔案 mysql-bin .0001,mysql-bin.index
  10. 功能:利用重放方式生產資料副本
  11. sql_log_bin=ON|OFF 是否記錄二進位制日誌
  12. log_bin=path 記錄的檔案位置,通常為OFF,預設通過滾動的方式記錄
  13. binlog_format=statment|row|mixed 二進位制日誌的格式
  14. max_binlog_size=1G 單個二進位制檔案大小的最大體積,預設1G,到達最大值會自動滾動,不會那麼精確
  15. sync_binlog=1|0 設定是否啟動二進位制日誌同步功能
  16. 二進位制日誌的格式
  17. log_bin 開啟記錄二進位制日誌
  18. mysqlbinlog 可以檢視二進位制日誌內容
ps:mysqlbinlog 用法
二進位制日誌的格式:

            # at 19364
            #140829 15:50:07 server id 1  end_log_pos 19486     Query   thread_id=13    exec_time=0 error_code=0
            SET TIMESTAMP=1409298607/*!*/;
            GRANT SELECT ON tdb.* TO tuser@localhost
            /*!*/;
            # at 19486

            事件發生的日期和時間;(140829 15:50:07)
            事件發生在伺服器的標識(server id)
            事件的結束位置:(end_log_pos 19486)
            事件的型別:(Query)
            事件發生時所在的伺服器執行此事件的執行緒的ID:(thread_id=13)
            語句的時間戳與將其寫入二進位制檔案中的時間差:(exec_time=0)
            錯誤程式碼:(error_code=0)
            事件內容:(SET TIMESTAMP=1409298607/*!*/;
                        GRANT SELECT ON tdb.* TO tuser@localhost)                       
            
            GTID事件專屬:
            事件所屬的全域性事務的GTID:(GTID 0-1-2)

        二進位制日誌的檢視命令:
            mysqlbinlog
                -j, --start-position=#:從指定的事件位置檢視
                --stop-position=#:只顯示到指定的事件位置

                --start-datetime=name
                --stop-datetime=name
                    YYYY-MM-DD hh:mm:ss

                -u
                -h
                -p

五,中繼日誌

1.類似二進位制
2.複製架構中,從伺服器用於從主伺服器中二進位制檔案取的事件

六,事務日誌

  1. 事務性儲存引擎自行管理和使用
  2. innodb
  3. ib_logfile0,ib_logfile1為事務日誌
  4. redo log undo log
  5. 不應該太大,從崩潰中恢復需要太久,評估一個合理的值
    補充材料:日誌相關的伺服器引數詳解:
    expire_logs_days={0..99}
    設定二進位制日誌的過期天數,超出此天數的二進位制日誌檔案將被自動刪除。預設為0,表示不啟用過期自動刪除功能。如果啟用此功能,自動刪除工作通常發生在MySQL啟動時或FLUSH日誌時。作用範圍為全域性,可用於配置檔案,屬動態變數。

    general_log={ON|OFF}
    設定是否啟用查詢日誌,預設值為取決於在啟動mysqld時是否使用了--general_log選項。如若啟用此項,其輸出位置則由--log_output選項進行定義,如果log_output的值設定為NONE,即使用啟用查詢日誌,其也不會記錄任何日誌資訊。作用範圍為全域性,可用於配置檔案,屬動態變數。
     
    general_log_file=FILE_NAME
    查詢日誌的日誌檔名稱,預設為“hostname.log"。作用範圍為全域性,可用於配置檔案,屬動態變數。


    binlog-format={ROW|STATEMENT|MIXED}
    指定二進位制日誌的型別,預設為STATEMENT。如果設定了二進位制日誌的格式,卻沒有啟用二進位制日誌,則MySQL啟動時會產生警告日誌資訊並記錄於錯誤日誌中。作用範圍為全域性或會話,可用於配置檔案,且屬於動態變數。

    log={YES|NO}
    是否啟用記錄所有語句的日誌資訊於一般查詢日誌(general query log)中,預設通常為OFF。MySQL 5.6已經棄用此選項。
     
    log-bin={YES|NO}
    是否啟用二進位制日誌,如果為mysqld設定了--log-bin選項,則其值為ON,否則則為OFF。其僅用於顯示是否啟用了二進位制日誌,並不反應log-bin的設定值。作用範圍為全域性級別,屬非動態變數。
     
    log_bin_trust_function_creators={TRUE|FALSE}
    此引數僅在啟用二進位制日誌時有效,用於控制建立儲存函式時如果會導致不安全的事件記錄二進位制日誌條件下是否禁止建立儲存函式。預設值為0,表示除非使用者除了CREATE ROUTING或ALTER ROUTINE許可權外還有SUPER許可權,否則將禁止建立或修改儲存函式,同時,還要求在建立函式時必需為之使用DETERMINISTIC屬性,再不然就是附帶READS SQL DATA或NO SQL屬性。設定其值為1時則不啟用這些限制。作用範圍為全域性級別,可用於配置檔案,屬動態變數。
     
    log_error=/PATH/TO/ERROR_LOG_FILENAME
    定義錯誤日誌檔案。作用範圍為全域性或會話級別,可用於配置檔案,屬非動態變數。
     
    log_output={TABLE|FILE|NONE}
    定義一般查詢日誌和慢查詢日誌的儲存方式,可以是TABLE、FILE、NONE,也可以是TABLE及FILE的組合(用逗號隔開),預設為TABLE。如果組合中出現了NONE,那麼其它設定都將失效,同時,無論是否啟用日誌功能,也不會記錄任何相關的日誌資訊。作用範圍為全域性級別,可用於配置檔案,屬動態變數。
     
    log_query_not_using_indexes={ON|OFF}
    設定是否將沒有使用索引的查詢操作記錄到慢查詢日誌。作用範圍為全域性級別,可用於配置檔案,屬動態變數。
     
    log_slave_updates
    用於設定複製場景中的從伺服器是否將從主伺服器收到的更新操作記錄進本機的二進位制日誌中。本引數設定的生效需要在從伺服器上啟用二進位制日誌功能。
     
    log_slow_queries={YES|NO}
    是否記錄慢查詢日誌。慢查詢是指查詢的執行時間超出long_query_time引數所設定時長的事件。MySQL 5.6將此引數修改為了slow_query_log。作用範圍為全域性級別,可用於配置檔案,屬動態變數。
     
    log_warnings=#
    設定是否將警告資訊記錄進錯誤日誌。預設設定為1,表示啟用;可以將其設定為0以禁用;而其值為大於1的數值時表示將新發起連線時產生的“失敗的連線”和“拒絕訪問”類的錯誤資訊也記錄進錯誤日誌。

    long_query_time=#
    設定區別慢查詢與一般查詢的語句執行時間長度。這裡的語句執行時長為實際的執行時間,而非在CPU上的執行時長,因此,負載較重的伺服器上更容易產生慢查詢。其最小值為0,預設值為10,單位是秒鐘。它也支援毫秒級的解析度。作用範圍為全域性或會話級別,可用於配置檔案,屬動態變數。

    max_binlog_cache_size{4096 .. 18446744073709547520}
    二進定日誌快取空間大小,5.5.9及以後的版本僅應用於事務快取,其上限由max_binlog_stmt_cache_size決定。作用範圍為全域性級別,可用於配置檔案,屬動態變數。

    max_binlog_size={4096 .. 1073741824}
    設定二進位制日誌檔案上限,單位為位元組,最小值為4K,最大值為1G,預設為1G。某事務所產生的日誌資訊只能寫入一個二進位制日誌檔案,因此,實際上的二進位制日誌檔案可能大於這個指定的上限。作用範圍為全域性級別,可用於配置檔案,屬動態變數。




    max_relay_log_size={4096..1073741824}
    設定從伺服器上中繼日誌的體積上限,到達此限度時其會自動進行中繼日誌滾動。此引數值為0時,mysqld將使用max_binlog_size引數同時為二進位制日誌和中繼日誌設定日誌檔案體積上限。作用範圍為全域性級別,可用於配置檔案,屬動態變數。

    innodb_log_buffer_size={262144 .. 4294967295}
    設定InnoDB用於輔助完成日誌檔案寫操作的日誌緩衝區大小,單位是位元組,預設為8MB。較大的事務可以藉助於更大的日誌緩衝區來避免在事務完成之前將日誌緩衝區的資料寫入日誌檔案,以減少I/O操作進而提升系統效能。因此,在有著較大事務的應用場景中,建議為此變數設定一個更大的值。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。
     
    innodb_log_file_size={108576 .. 4294967295}
    設定日誌組中每個日誌檔案的大小,單位是位元組,預設值是5MB。較為明智的取值範圍是從1MB到快取池體積的1/n,其中n表示日誌組中日誌檔案的個數。日誌檔案越大,在快取池中需要執行的檢查點刷寫操作就越少,這意味著所需的I/O操作也就越少,然而這也會導致較慢的故障恢復速度。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。
     
    innodb_log_files_in_group={2 .. 100}
    設定日誌組中日誌檔案的個數。InnoDB以迴圈的方式使用這些日誌檔案。預設值為2。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。
     
    innodb_log_group_home_dir=/PATH/TO/DIR
    設定InnoDB重做日誌檔案的儲存目錄。在預設使用InnoDB日誌相關的所有變數時,其預設會在資料目錄中建立兩個大小為5MB的名為ib_logfile0和ib_logfile1的日誌檔案。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。


    relay_log=file_name
    設定中繼日誌的檔名稱,預設為host_name-relay-bin。也可以使用絕對路徑,以指定非資料目錄來儲存中繼日誌。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。

    relay_log_index=file_name
    設定中繼日誌的索引檔名,預設為為資料目錄中的host_name-relay-bin.index。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。

    relay-log-info-file=file_name
    設定中繼服務用於記錄中繼資訊的檔案,預設為資料目錄中的relay-log.info。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。


    relay_log_purge={ON|OFF}
    設定對不再需要的中繼日誌是否自動進行清理。預設值為ON。作用範圍為全域性級別,可用於選項檔案,屬動態變數。

    relay_log_space_limit=#
    設定用於儲存所有中繼日誌檔案的可用空間大小。預設為0,表示不限定。最大值取決於系統平臺位數。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。


    slow_query_log={ON|OFF}
    設定是否啟用慢查詢日誌。0或OFF表示禁用,1或ON表示啟用。日誌資訊的輸出位置取決於log_output變數的定義,如果其值為NONE,則即便slow_query_log為ON,也不會記錄任何慢查詢資訊。作用範圍為全域性級別,可用於選項檔案,屬動態變數。

    slow_query_log_file=/PATH/TO/SOMEFILE
    設定慢查詢日誌檔案的名稱。預設為hostname-slow.log,但可以通過--slow_query_log_file選項修改。作用範圍為全域性級別,可用於選項檔案,屬動態變數。


    sql_log_bin={ON|OFF}
    用於控制二進位制日誌資訊是否記錄進日誌檔案。預設為ON,表示啟用記錄功能。使用者可以在會話級別修改此變數的值,但其必須具有SUPER許可權。作用範圍為全域性和會話級別,屬動態變數。

    sql_log_off={ON|OFF}
    用於控制是否禁止將一般查詢日誌類資訊記錄進查詢日誌檔案。預設為OFF,表示不禁止記錄功能。使用者可以在會話級別修改此變數的值,但其必須具有SUPER許可權。作用範圍為全域性和會話級別,屬動態變數。

    sync_binlog=#
    設定多久同步一次二進位制日誌至磁碟檔案中,0表示不同步,任何正數值都表示對二進位制每多少次寫操作之後同步一次。當autocommit的值為1時,每條語句的執行都會引起二進位制日誌同步,否則,每個事務的提交會引起二進位制日誌同步。

相關文章