配置方法:mysql
vim /etc/my.cnf
[mysqld]
log-error=/tmp/mysql.log
查看配置方式:sql
show variables like '%log%error%';
做用:數據庫
記錄mysql數據庫的通常狀態信息及報錯信息,是咱們對於數據庫常規報錯處理的經常使用日誌。
配置方法:vim
vim /etc/my.cnf [mysqld] general_log=on general_log_file=/data/mysql/server2.log
查看配置方式:服務器
show variables like '%gen%';
做用:函數
記錄mysql全部執行成功的SQL語句信息,能夠作審計用,可是咱們不多開啓;
能夠做爲審計功能,通常狀況下這個日誌不會開,除非有特殊要求 例如:ELK
建議剛部署mysql數據庫的時候就開啓二進制日誌工具
二進制日誌不依賴於存儲引擎的,依賴於sql層,記錄和sql語句有關的信息性能
已提交的數據記錄,以事件的形式記錄到二進制文件中測試
必定要配置好二進制日誌spa
配置文件開啓:
vim /etc/my.cnf log-bin=/data/mysql-bin ---- 在全局打開,二進制日誌的「總閘」 命令行開啓: set sql_log_bin=1/0; ---- 在會話級別臨時生效 二進制日誌的「分開關」,只有總閘開啓纔有意義(默認打開),有時候會臨時關閉掉,隻影響當前會話
做用:
一、是否開啓
二、二進制日誌路徑/data
三、二進制日誌文件名前綴mysql-bin
四、文件名名以「前綴」.000001~N
配置文件中修改:
vim /etc/my.cnf binlog-format=row 改完以後重啓
命令行修改:
mysql> SET GLOBAL binlog_format = 'STATEMENT'; mysql> SET GLOBAL binlog_format = 'ROW'; mysql> SET GLOBAL binlog_format = 'MIXED';
查看binlog設置
show variables like '%binlog%';
查看binlog原始信息
mysqlbin mysql-bin.000002
在row模式下,翻譯成語句
mysqlbinlog --base64-output='decode-rows' -v mysql-bin.000002
查看binlog事件
show binary logs; 全部在使用的binlog信息,查看全部存在的二進制日誌文件 show binlog events in ''; 查看文件內容 show master status; 查看當前正在使用的二進制日誌文件
默認狀況下,不會刪除舊的日誌文件。
根據存在時間刪除日誌:
SET GLOBAL expire_logs_days = 7; 或者PURGE BINARY LOGS BEFORE now() - INTERVAL 3 day; reset master; 將全部binlog日誌刪除,並從新生成,從000001開始
根據文件名刪除日誌:
PURGE BINARY LOGS TO 'mysql-bin.000010';
flush logs
mysqlbinlog --start-position=XX --stop-position=XX >a.sql
(1)、使用show binary logs; show master status; 查看當前正在使用的文件
(2)、show binlog events in ''; 從後往前看,找到誤操做的事務,判斷事務開啓position和結束position
(3)、把誤操做的剔除掉,留下正常操做到兩個腳本中 :mysqlbinlog --start-position=XX --stop-position=XX 二進制日誌文件 >/tmp/in.sql
(4)、先測試庫操做,把誤操做的數據導出,而後生產庫恢復 ### 使用:source 恢復,恢復的時候,在當前窗口臨時關閉二進制日誌記錄
遇到的問題:
一、時間長
二、對生產數據有必定影響,有可能會出現冗餘數據
好的解決方案:
一、flashback(閃回功能)
二、經過備份,延時從庫
是將mysql服務器中影響數據庫性能的相關SQL語句記錄到日誌文件
經過對這些特殊的SQL語句分析,改進以達到提升數據庫性能的目的。
調優過程當中的工具日誌,統計收集執行慢的語句
配置方法:
vim /etc/my.cnf slow_query_log=NO slow_query_log_file=/tmp/slow.log