日誌文件 | 選項 | 文件名 | 程序 |
---|---|---|---|
表名稱 | |||
錯誤 | --log-error | host_name.err | N/A |
常規 | --general_log | host_name.log | N/A |
general_log | |||
慢速查詢 | --slow_query_log long_query_time | host_name-slow. log slow_log | mysqldumpslow |
二進制 | --log-bin --expire-logs-days | host_name-bin.000001 | mysqlbinlog |
---|---|---|---|
審計 | --audit_log --audit_log_file ... | audit.log | N/A |
查看錯誤日誌mysql
查看錯誤日誌 mysql> show variables like 'log_error'; mysql> show variables like '%log%'; 配置: [mysqld] log-error=/data/mysql/mysql.log
錯誤日誌的做用:sql
記錄mysql數據庫的通常狀態信息及報錯信息,是咱們對於數據庫常規報錯處理的經常使用日誌。shell
記錄了服務器運行中產生的錯誤信息數據庫
記錄了服務在啓動和中止是所產生的信息vim
在從服務器上若是啓動了複製進程的時候,複製進程的信息也會被記錄服務器
記錄event錯誤日誌架構
genral_logapp
記錄全部的已執行成功的操做。工具
能夠做爲審計功能性能
[mysqld] general_log=on general_log_file=/tmp/general.log #修改完成重啓數據庫 cat /tmp/general.log
二進制日誌不依賴與存儲引擎的,依賴於SQL層
說明:默認開啓,精確的記錄了用戶對數據庫中的數據進行操做的命令和操做的數據對象。
二進制日誌文件的做用:
二進制日誌格式:
二進制日誌事件:
查看是否開啓
mysql> show variables like '%log%bin%'; +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | log_bin | OFF | | log_bin_basename | | | log_bin_index | | | log_bin_trust_function_creators | OFF | | log_bin_use_v1_row_events | OFF | | sql_log_bin | ON | +---------------------------------+-------+
開啓方式
vim /etc/my.cnf [mysqld] log-bin=/application/mysql/data/mysql-bin #配置文件修改,完成後重啓數據庫
查詢二進制日誌
mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 120 | | | | +------------------+----------+--------------+------------------+-------------
查詢bin log設置
mysql> show variables like '%binlog%';
定義記錄方式
statement :記錄量少,未來恢復的時候可能有問題 例子:一個表1000w行,update t1 name=‘a; 若是以statement(語句)記錄二進制日誌,將會記錄整個全部的1000W行變化。 只記錄update T1 set name='a'; 例子二:update ti set date=now(); 若是以statement (語句)記錄二進制日誌,只記錄update ti set date=now();未來恢復的時候 row =-------》推薦 基於行記錄,記錄數據的過程 以上例子1若是是row(行)模式記錄的全部整個1000W行的變化日誌。記錄的數據準確
缺點 :記錄量很是大.
mysql> show variables like '%format%';#查看
設置row模式
[root@db02 data]# vim /etc/my.cnf [mysqld] binlog-format=row 命令行修改 mysql> SET GLOBAL binlog_format= 'STATEMENT'; mysql> SET GLOBAL binlog_format= 'ROW'; mysql> SET GLOBAL binlog_format= 'MIXED';
查看
mysql> show variables like '%format%';
二進制日誌操做者
[root@db02 data]# ll mysql-bin.* -rw-rw---- 1 mysql mysql 143 Nov 21 10:12 mysql-bin.000001 -rw-rw---- 1 mysql mysql 120 Nov 21 10:12 mysql-bin.000002 -rw-rw---- 1 mysql mysql 82 Nov 21 10:12 mysql-bin.index
二進制文件是能夠滾動的,條件是:
重啓數據庫的時候會自動滾動一個新的
執行mysql> flush logs;命令的時候
mysql命令行彙總的查看:
查看當前在使用的二進制文件
mysql> show binary logs;
刪除二進制文件
默認狀況下,不會刪除舊的日誌文件
根據存在時間刪除日誌: SET GLOBAL expire_logs_days= 7;#以天爲單位 …或者… PURGE BINARY LOGS BEFORE now() -INTERVAL 3 day; 根據文件名刪除日誌: PURGE BINARY LOGS TO 'mysql-bin.000010';
查看二進制文件內容
1.events 事件
二進制日誌如何定義:命令的最小發生單元
2.position
每一個事件在整個二進制文件中的相對位置號就是position
截取一段有用的日誌
mysqlbinlog --start-position=120 --stop-position=384 mysql-bin.000004 >/tmp/inc.sql
恢復
1.臨時會話關閉二進制日誌
mysql> set sql_log_bin=0;
MySQL的慢查詢日誌是MySQL提供的一種日誌記錄,它用來記錄在MySQL中響應時間超過閥值的語句,具體指運行時間超過long_query_time值的SQL,則會被記錄到慢查詢日誌中。long_query_time的默認值爲10,意思是運行10s以上的語句。
默認狀況下,MySQL數據庫並不啓動慢查詢日誌,須要咱們手動來設置這個參數,固然,若是不是調優須要的話,通常不建議啓動該參數,由於開啓慢查詢日誌或多或少會帶來必定的性能影響。慢查詢日誌支持將日誌記錄寫入文件,也支持將日誌記錄寫入數據庫表。
慢查詢日誌
慢日誌設置
long_query_time:設定慢查詢的閥值,超出次設定值的SQL即被記錄到慢查詢日誌,缺省值爲10 slow_query_log:指定是否開啓慢查詢日誌 slow_query_log_file:指定慢日誌文件存放位置,能夠爲空,系統會給一個缺省的文件host_name-slow.log min_examined_row_limit:查詢檢查返回少於該參數指定行的SQL不被記錄到慢查詢日誌 log_queries_not_using_indexes: 不使用索引的慢查詢日誌是否記錄到索引
2. 開啓慢查詢日誌
查看:
mysql> show variables like '%slow_query_log%'; +---------------------+---------------------------------------+ | Variable_name | Value | +---------------------+---------------------------------------+ | slow_query_log | OFF | | slow_query_log_file | /application/mysql/data/db02-slow.log | +---------------------+---------------------------------------+
開啓:
配置文件修改
vim /etc/my.cnf
slow_query_log=on slow_query_log_file=/tmp/slow.log
mysqldumpslow命令/path/mysqldumpslow -s c -t 10 /database/mysql/slow-log這會輸出記錄次數最多的10條SQL語句,其中:
-s 按照那種方式排序 c:訪問計數 l:鎖定時間 r:返回記錄 al:平均鎖定時間 ar:平均訪問記錄數 at:平均查詢時間 -t 是top n的意思,返回多少條數據。 -g 能夠跟上正則匹配模式,大小寫不敏感。
例子:
/path/mysqldumpslow-s r -t 10 /database/mysql/slow-log獲得返回記錄集最多的10個查詢。
/path/mysqldumpslow-s t -t 10 -g 「left join」/database/mysql/slow-log獲得按照時間排序的前10條裏面含有左鏈接的查詢語句。