linux運維、架構之路-MySQL日誌(三)

1、MySQL日誌mysql

一、錯誤日誌sql

①配置方法數據庫

[mysqld] log-error=/data/mysql/mysql.log

②查看配置方式服務器

mysql> show variables like '%log%error%'; +---------------------+----------------------------------+
| Variable_name       | Value                            |
+---------------------+----------------------------------+
| binlog_error_action | IGNORE_ERROR                     |
| log_error           | /application/mysql/data/db01.err |
+---------------------+----------------------------------+
2 rows in set (0.00 sec)

③做用app

記錄MySQL數據庫的通常狀態信息及報錯信息,是數據庫常規報錯處理的經常使用日誌 

二、通常查詢日誌工具

①配置方法性能

[mysqld] general_log=on general_log_file=/data/mysql/server2.log

②查看配置方式優化

mysql> show variables like '%gen%'; +------------------+----------------------------------+
| Variable_name    | Value                            |
+------------------+----------------------------------+
| general_log      | OFF                              |
| general_log_file | /application/mysql/data/db01.log |
+------------------+----------------------------------+
2 rows in set (0.00 sec)

③做用spa

記錄全部的已執行成功的操做,能夠做爲審計功能,通常狀況下不會開,除非特殊要求:ELK日誌收集 

三、二進制日誌命令行

①二進制三種模式

row:行模式,數據行的變化過程 #推薦的格式 statement:語句模式 mixed:以上二者混合模式 

②開啓二進制日誌

[mysqld] log-bin=/application/mysql/data/mysql-bin

③設置二進制的日誌格式

[mysqld] binlog-format=row

命令行修改日誌格式

set global binlog_format = 'ROW';

④查看binlog使用的日誌格式

mysql> show variables like '%format%'; +--------------------------+-------------------+
| Variable_name            | Value             |
+--------------------------+-------------------+
| binlog_format            | STATEMENT         |
| date_format              | %Y-%m-%d          |
| datetime_format          | %Y-%m-%d %H:%i:%s |
| default_week_format      | 0                 |
| innodb_file_format       | Antelope          |
| innodb_file_format_check | ON                |
| innodb_file_format_max   | Antelope          |
| time_format              | %H:%i:%s          |
+--------------------------+-------------------+
8 rows in set (0.00 sec)

⑤查看binlog設置

show variables like '%binlog%';

⑥查看binlog及位置點

show binary logs; show master status;

⑦刷新binlog日誌

mysqladmin flush logs

⑧截取binlog日誌

mysqlbinlog --start-position=120 --stop-position=339 mysql-bin.000003 >/tmp/inc.sql

⑨使用source恢復

mysql> set sql_log_bin=0; #在當前恢復窗口臨時關閉二進制日誌記錄

⑩binlog日誌做用

一、記錄更改的二進制SQL語句 二、主從複製 三、增量數據備份 

四、二進制日誌管理

二進制日誌的刪除,默認狀況下,不會刪除舊的日誌文件

[mysqld] SET GLOBAL expire_logs_days = 7;#保留7天 PURGE BINARY LOGS BEFORE now() - INTERVAL 3 day; PURGE BINARY LOGS TO 'mysql-bin.000010';#根據文件名刪除日誌:
reset master;#清除binlog日誌

五、慢查詢日誌管理slow-log

①功能

記錄全部條件內的慢SQL語句,優化的一種工具日誌,將mysql服務器中影響數據庫性能的相關SQL語句記錄到日誌文件,經過對這些特殊的SQL語句分析,改進以達到提升數據庫性能的目的 

②慢查詢日誌設置

long_query_time        #設定慢查詢的閥值,超出次設定值的SQL即被記錄到慢查詢日誌,缺省值爲10s
slow_query_log         #指定是否開啓慢查詢日誌
slow_query_log_file    #指定慢日誌文件存放位置,能夠爲空,系統會給一個缺省的文件host_name-slow.log
min_examined_row_limit #查詢檢查返回少於該參數指定行的SQL不被記錄到慢查詢日誌
log_queries_not_using_indexes#不使用索引的慢查詢日誌是否記錄到索引  

③開啓數據庫的慢查詢

[mysqld] slow_query_log = ON slow_query_log_file = /usr/local/mysql/data/slow.log long_query_time = 1

④切割慢查詢日誌

cd /data/3306 &&\ /bin/mv show.log slow.log.$(date +%F) &&\ mysqladmin -uroot -p123456 flush-log #零點刷新

⑤慢查詢分析工具

pt-query-digest  
相關文章
相關標籤/搜索