mysql生成或相關聯的日誌文件種類繁多,這裏重點關注與mysql數據庫服務相關mysql
的幾類日誌文件:sql
一、錯誤日誌:數據庫
記錄mysql服務進程mysql的在啓動/關閉/運行過程當中遇到的錯誤信息;session
[mysqld_safe]日誌
log-error=/data/3306/mysql.errcode
二、查詢日誌:orm
(1)普通查詢日誌:索引
記錄客戶端鏈接信息和執行的sql語句信息;進程
[mysqld]io
#general_log = ON
#將全部到達MySQL Server的SQL語句記錄下來,默認關閉
#general_log_file = /data/3306/data
#general_log,默認在數據庫的data目錄下;
(2)慢查詢日誌:
記錄執行時間超出指定值(log_query_time)的sql語句;
[mysqld]
slow_query_log = ON
long_query_time = 2
slow_query_log_file = /data/3306/mysql-slow.log
#log-queries-not-using-indexes
#若是運行的SQL語句沒有使用索引,mysql會將這條SQL語句記錄到慢查詢日誌文件中。
三、二進制日誌:
記錄數據被修改的相關信息;
[mysqld]
log-bin = /data/3306/mysql-bin
#打開mysql的binlog日誌;
max_binlog_size = 512M
#binlog的最大值是多少;
expire_logs_days = 7
#超過7天的binlog會被刪除;
mysql> show variables like '%log_bin%';
sql_log_bin ON
#通常打開log-bin就打開了sql_log_bin記錄功能,使用set global sql_log_bin=off時
臨時不記錄binlog開關,用於增量恢復時不記錄某個時間點的binlog;
3 rows in set (0.01 sec)
(1)二進制的三種模式:
1)語句級:
statement(默認),包含的是原始的sql語句;
2)行級:
row,包含的是行的更改信息;
3)混合級:
mixed,前兩種模式的結合,mysql根據實際開銷狀況選擇到底選擇哪一種二進制模式;
4)修改binlog模式的方法:
配置文件修改my.cnf:
[mysqld]
binlog_format = mixed #row,statement
在線修改:
set session binlog_format = mixed;
set global binlog_format = mixed;
5)查看binlog日誌的方法:
binlog日誌模式爲row或者時statement時使用‘mysqlbinlog /data/3306/mysql-bin.000007’命令查看;
binlog日誌模式爲mixed時,使用‘mysqlbinlog --base64-output=decode-rows -v /data/3306/mysql-bin.000007’命令查看;
6)查看binlog的pos點:
show master logs; #查看binlog文件和對應的pos點的列表;
show master status; #查看當前binlog文件和對應的pos點;
7)對日誌文件進行切割的手動方法:
mysqladmin -uroot -p123456 flush-log