mysql中logs库_MySQL Logs
摘要
一、MySQL日志
1.1 查詢日志
1.2 慢查詢日志
1.3 錯誤日志
1.4 二進制日志
一、 MySQL日志
MySQL服務器上一共有六種日志:錯誤日志,查詢日志,慢查詢日志,二進制日志,中繼日志以及事務日志。
1.1 查詢日志
查詢日志就是用來記錄查詢的,但是查詢日志會增加很多的磁盤I/O,所以如非處于調試目的,不建議開啟查詢日志
general_log: ON表示開啟,OFF表示關閉,默認是關閉
log_output: 日志輸出類型,FILE|TABLE|NONE
general_log_file=HOSTNAME.log 日志輸出路徑
#General logging.:
log-output=FILE
general-log=1general_log_file="filename.log"
1.2 慢查詢日志
執行時長(包括等待CPU/IO的時間)超過long_query_time定義時長的查詢。慢查詢日志開銷較小,可以用于定位性能問題,建議開啟
相關參數:
slow_query_log = {ON|OFF}:是否啟用慢查詢日志
slow_query_log = /path/to/somefile: 日志文件路徑
log_slow_filter = admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
log_slow_rate_limit = 限制記錄日志的速率
log_slow_verbosity = 慢查詢日志詳細程度,越詳細越容易分析,消耗越大
demo:
mysql> SHOW VARIABLES LIKE ‘slow_query_log%‘;+---------------------+--------------------------------------------------+| Variable_name | Value |+---------------------+--------------------------------------------------+| slow_query_log |OFF|
| slow_query_log_file |/usr/local/var/mysql/upstreamdeMac-mini-slow.log |+---------------------+--------------------------------------------------+
1.3 錯誤日志
錯誤日志不僅僅記錄錯誤信息,它記錄的事件有:
-mysqld啟動和關閉過程中輸出的信息;
-mysqld運行中產生的錯誤信息;
-event scheduler運行一個event時產生的日志信息;
-在主從復制架構中的從服務器上啟動從服務器線程時產生的日志信息;
log_error = {ON | OFF | /path/to/somefile}
定義錯誤日志文件。ON的話有默認路徑
log_warnings = {ON|OFF}:是否記錄警告信息于錯誤日志中;
1.4 二進制日志
記錄了MySQL數據庫中所有與更新相關的操作,常用于恢復數據庫和主從復制
(1) 查看日志文件
顯示所有的日志文件:
mysql> show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 276665 |
+------------------+-----------+
1 row in set (0.03 sec)
顯示當前正在使用的日志文件:
mysql>show master status;+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000003 | 107| | |+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
(2) 查看日志內容
SHOW BINLOG EVENTS [IN ‘log_name‘] [FROM pos] [LIMIT [offset,] row_count]
(3) 日志文件說明
有三種格式:
基于"語句"記錄: statement,只記錄語句
基于"行"記錄:row,記錄數據,因此數據量更大
混合模式:mixed,系統自行判定
由二部分文件構成:
日志文件:mysql-bin.文件名后綴,是二進制格式
索引文件:mysql-bin.index 是文本格式
(4) 相關變量
sql_log_bin=ON|OFF 是否記錄二進制日志
log_bin={ON | OFF |/PATH/TO/BIN_LOG_FILE}: ?記錄位置
binlog_format = {statement | row | mixed} 日志格式
max_binlog_size=1073741824 單個二進制日志文件的最大體積,默認是1G,到達1G會自動滾動
max_binlog_cache_size=18446744073709547520 日志io相關,數據內存緩存
max_binlog_stmt_cache_size = 18446744073709547520 日志io相關,語句內存緩存
expire_logs_days=0 自動日志清理功能 0表示永不清理
sync_bin_log=1 | 0 為了盡量不影響性能,日志的寫入也是異步的,設定多久同步一次二進制日志文件
設定0表示不同步,可能會影響數據
(5) 客戶端工具: mysqlbinlog
-j, start-position=#: 從指定的事件位置查看
--stop-position=#: 只顯示到指定的事件位置
--start-datetime=name
--stop-datetime=name
YYYY-MM-DD hh:mm:ss
-u
-h
-p
日志信息格式說明:
# at 13383#161021 4:31:55 server id 1 end_log_pos 13509 Query thread_id=18 exec_time=0 error_code=0
SET TIMESTAMP=1476995515/*!*/;
ALTERTABLE`test`.`t1`ADDINDEX `INDEX_T1_NAME` (`name` ASC)/*!*/;
# at13509事件發生的日期和時間;(161021 4:31:55)
事件發生在服務器的標識(server id)
事件的結束位置:(end_log_pos13509)
事件的類型:(Query)
事件發生時所在的服務器執行此事件的線程的ID:(thread_id=18)
語句的時間戳與將其寫入二進制文件中的時間差:(exec_time=0)
錯誤代碼:(error_code=0)
事件內容:SET TIMESTAMP=1476995515/*!*/;
ALTERTABLE`test`.`t1`ADDINDEX `INDEX_T1_NAME` (`name` ASC)/*!*/;
GTID事件專屬:
事件所屬的全局事務的GTID:(GTID0-1-2)
演示:
c、提取指定position位置的binlog日志并輸出到壓縮文件
# mysqlbinlog--start-position="120" --stop-position="332" /opt/data/APP01bin.000001 |gzip >extra_01.sql.gz
d、提取指定position位置的binlog日志導入數據庫
# mysqlbinlog--start-position="120" --stop-position="332" /opt/data/APP01bin.000001 | mysql -uroot -p
e、提取指定開始時間的binlog并輸出到日志文件
# mysqlbinlog--start-datetime="2014-12-15 20:15:23" /opt/data/APP01bin.000002 --result-file=extra02.sql
f、提取指定位置的多個binlog日志文件
# mysqlbinlog--start-position="120" --stop-position="332" /opt/data/APP01bin.000001 /opt/data/APP01bin.000002|more
g、提取指定數據庫binlog并轉換字符集到UTF8
# mysqlbinlog--database=test --set-charset=utf8 /opt/data/APP01bin.000001 /opt/data/APP01bin.000002 >test.sql
h、遠程提取日志,指定結束時間
# mysqlbinlog-urobin -p -h192.168.1.116 -P3306 --stop-datetime="2014-12-15 20:30:23" --read-from-remote-server mysql-bin.000033 |more
i、遠程提取使用row格式的binlog日志并輸出到本地文件
# mysqlbinlog-urobin -p -P3606 -h192.168.1.177 --read-from-remote-server -vv inst3606bin.000005 >row.sql
總結
以上是生活随笔為你收集整理的mysql中logs库_MySQL Logs的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 电影《辛德勤名单》的内容是?
 - 下一篇: 《秋池》第四句是什么