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

mysql日志系統,mysql日志

編輯:MySQL綜合教程

mysql日志系統,mysql日志


日志
  mysql日志的分類:
  • 服務器日志
    • 記錄進程啟動運行過程中的特殊事件,幫助分析mysql服務遇到的問題。
    • 根據需求抓取特定的SQL語句,追蹤性能可能存在的問題的業務SQL。
  • 事務日志--記錄內容不記錄狀態
    • 記錄應用程序對數據的所有更改
    • 可用於數據恢復
    • 可用於實例間數據同步
  服務器日志:   事務日志:   服務器錯誤日志:
  • 記錄實例啟動運行過程中重要消息
  • 配置參數
    • log_error=/data/mysql_data/node-1/mysqld.log
  • 內容並非全是錯誤消息
  • 如果mysqld進程無法正常啟動首先查看錯誤日志
mysql> show global variables like "log_error";
+---------------+--------------------------+
| Variable_name | Value                    |
+---------------+--------------------------+
| log_error     | /var/log/mysql/error.log |
+---------------+--------------------------+
1 row in set (0.00 sec)
 
##tail -f  error.log 實時監控這個文件中的;
tail -f  error.log 實時監控這個文件中的;   慢查詢日志
  • 記錄執行時間超過一定阈值的SQL語句
  • 配置參數
    • slow_query_log =1-----是否打開
    • slow_query_log_file = /data/mysql_data/node-1/mysql-slow.log --位置
    • long_query_time=5-----阈值時間
  • 用於分析系統中可能存在性能問題的SQL
    #查看慢日志是否打開以及日志路徑
mysql> show global variables like '%slow%';
+---------------------+----------------------------------+
| Variable_name       | Value                            |
+---------------------+----------------------------------+
| log_slow_queries    | OFF                              |
| slow_launch_time    | 2                                |
| slow_query_log      | OFF                              |
| slow_query_log_file | /var/lib/mysql/itcast01-slow.log |
+---------------------+----------------------------------+
4 rows in set (0.00 sec)
  #打開慢查詢日志
mysql> set global slow_query_log =1;
Query OK, 0 rows affected (0.00 sec)
 
mysql> show global variables like '%slow%';
+---------------------+----------------------------------+
| Variable_name       | Value                            |
+---------------------+----------------------------------+
| log_slow_queries    | ON                               |
| slow_launch_time    | 2                                |
| slow_query_log      | ON                               |
| slow_query_log_file | /var/lib/mysql/itcast01-slow.log |
+---------------------+----------------------------------+
4 rows in set (0.00 sec)

 

#查看慢查詢日志的阈值
mysql> show global variables like 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+

 

設置阈值,通常5秒;
mysql> set global  long_query_time = 1;
Query OK, 0 rows affected (0.00 sec)
 
mysql> show global variables like 'long_query_time';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 1.000000 |
+-----------------+----------+
1 row in set (0.00 sec)

 

  綜合查詢日志
  • 如果開啟將會記錄系統中所有SQL語句
  • 配置參數
    • general_log = 1
    • general_log_file =  /data/mysql_data/node-1/mysql-gen.log
  • 偶爾用於幫助分析系統問題,對性能有影響
 
mysql> show global variables like '%general%';
+------------------+-----------------------------+
| Variable_name    | Value                       |
+------------------+-----------------------------+
| general_log      | OFF                         |
| general_log_file | /var/lib/mysql/itcast01.log |
+------------------+-----------------------------+
2 rows in set (0.00 sec)
  查詢日志的輸出與文件切換
  • 日志 輸出參數
    • log_output = {file|table|none}
  • 如果日志文件過大,可以定期截斷並切換新文件
    • flush logs;
mysql> show global variables like '%log_output%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |
+---------------+-------+
1 row in set (0.00 sec)

 

存儲引擎事務日志---只記錄數據變化;
  • 部分存儲引擎擁有重做日志(redo log)
  • 如innodb,TokuDB等WAL(Write Ahead Log)機制存儲引擎
  • 日志隨著事務commit優先持久化,確保異常恢復不丟數據。
  • 日志順序寫性能較好
  innodb事務日志重用機制
  • innodb事務日志采用兩組文件交替重用
     情況一:       

 

  

 

  情況二:   

 

  所以在寫入頻繁的線上業務中,建議將ib_logfile的大小調大;這樣有利於並發;     二進制日志binlog
  • binlog(binary log)
  • 記錄數據引起數據變化的SQL語句數據邏輯變化的內容
  • mysql服務層記錄,無關存儲引擎
  • binlog的主要作用:
    • 基於備份恢復數據
    • 數據庫主從同步
    • 挖掘分析SQL語句
  開啟binlog
  • 參數
    • log_bin = c:/tmp/mylog/mysql-bin(靜態參數,設置為非0,就認為binlog打開;設置為1,則目錄在mysql數據目錄中)
    • sql_log_bin = 1(mysql選擇session是否記錄binlog )
    • sync_binlog = 1(mysql,binlog持久化的方式;0,不主動刷新到磁盤,而是由髒數據刷新時來刷;1,則每一條就主動刷新到磁盤;100,則是每100條才主動刷新到磁盤)
 
mysql> show global variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | OFF   |
+---------------+-------+
1 row in set (0.00 sec)

 

binlog管理
  • 主要參數
    • max_binlog_size  = 100MB
    • expire_logs_days  =7---------自動保存多少天的binlog文件
  • binlog始終生成新文件,不會重用
  • 手工清理binlog
    • purge binary logs to 'mysql-bin.000009'
    • purge binary logs before '2015-06-01 22:45:34'
      查看binlog內容
  • 日志(log)
    • show binlog events in 'mysql-bin.000011'
    • show binlog events in 'mysql-bin.000011' from 60(position) limit 3;
  • mysqlbinlog工具
    • mysqlbinlog c:/tmp/mylog/mysql-bin.000001 --start-datetime| --stop--datetime --start-position|--stop-position
    binlog格式
  • 主要參數
    • binlog_format={row|satement|mixed}
  • 查看row模式的binlog內容
    • mysqlbinlog --base64-output=decode-rows -v c:/tmp/mylog/mysql-bin.000001
 
show binary logs;
show binlog events in 'mysql-bin.000001'

 

binlog 只記錄對數據產生變化的 語句;   但是有局限: 如果使用uuid(),每次產生不一樣的值;來插入數據, binlog,記錄的是 insert into tab values (uuid()); 此時通過回放,binlog不能得到原數據; 因為每次uuid()產生不一樣的值。   所以mysql允許使用另一種格式記錄binlog,只記錄數據變化值; 可以將binlog_format 設置成row;   而binlog_format 設置成satement,記錄具體操作語句;   而binlog_format 設置成mixed,mysql自動判斷使用row,還是satement;   總結
 
  • 服務日志:
    • log_error
      • 記錄實例啟動運行過程中重要消息,
      • 內容並非全是錯誤消息,
      • mysqld無法啟動首先查看錯誤日志;
    • 慢查詢日志;
    • 綜合查詢日志
      • 會記錄系統中所有SQL語句,
      • 偶爾用於幫助分析系統問題,對性能有影響;
  • 日志的輸出:
    • log_output=file,table,none;
    • 如果日志文件過大,可以定期截斷並切換新文件,flush logs;
  • 事務日志:
    • redo log
      • 只記錄數據變化
      • innodb事務日志重用機制,ib_logfile大會利於寫多業務;
    • bin log
      • 記錄引起數據變化的SQL語句或數據變化的內容,
      • 在mysql服務層記錄,
      • 主要用於:
        • 基於備份恢復數據,
        • 數據庫主從同步,
        • 挖掘分析SQL;
      • 主要參數:
        • row 只記錄數據變化,
        • satement 記錄引起數據變化的SQL,
        • max混合兩種;

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