update沒帶where,尋找問題的思路

haoge0205發表於2016-11-21
資料庫版本:5.6.16

前幾天,在測試環境中,不知道為什麼突然之間,所有的一個欄位值全部變成了12,需要將備份還原後開發重新清理垃圾資料並開始測試。

在開發提供 SQL語句的情況下,能否查到是誰做了這個操作?  但是在binlog中能找到SQL,可以看到SQL執行的ID,但是在binlog中是不會記錄連線的IP地址。

MySQL的審計功能特別影響效能,或者是付費的MySQL版本。

胡扯半天最重要的是解決此問題的一個思路吧,update不帶where條件,一張表有500W+的資料量,那麼SQL必屬於慢SQL,透過binlog中找到的id,在慢查詢去尋找,開啟slow.log,確實找到了這條update不帶where條件的SQL,
同時也找到了連線的IP地址,是程式裡的!!

後來想起一個網友寫的一個外掛,即是審計功能,據說不影響效能,有待驗證,只敢在測試環境中使用,生產沒膽量,本人膽小,在此也跟大家分享一下吧,在測試環境可以玩玩。



該外掛可以測試使用,不影響資料庫效能,
線上資料庫請測試環境測試完之後使用

一、查詢外掛所在位置
mysql> show variables like '%plugin_dir%';
+---------------+------------------------------+
| Variable_name | Value                        |
+---------------+------------------------------+
| plugin_dir    | /usr/local/mysql/lib/plugin/ |
+---------------+------------------------------+
1 row in set (0.00 sec)
二、將audit_版本號.so外掛下載後放到plugin_dir位置
    mv audit_版本號.so  audit.so
三、載入外掛
install plugin audit  SONAME 'audit.so';
四、解除安裝外掛
uninstall plugin audit;


使用外掛
mysql> show variables like '%audit%';
+----------------+----------------------+
| Variable_name  | Value                |
+----------------+----------------------+
| audit_logfile  | /tmp/mysql_audit.log |
| audit_myswitch | OFF                  |
| audit_num      | 0                    |
| audit_sql      | all_sql              |
| audit_user     | all_user             |
+----------------+----------------------+
5 rows in set (0.01 sec)


mysql> 
mysql> set global audit_logfile='/tmp/mysql_audit_1.log';----只讀變數,審計僅指定在/tmp/mysql_audit.log檔案,保障許可權可以寫
ERROR 1238 (HY000): Variable 'audit_logfile' is a read only variable


set global audit_sql='update';   -----這些審計關鍵字用;分開
set global audit_user='user2;user3';         ----審計使用者用;隔開
set global num =0;                          ----審計sql影響的最少行數(對delete無效)
set global audit_myswitch=on|off|ON|OFF|1|0;       -----開啟關閉審計

檢視日誌linux下tailf /tmp/mysql_audit.log

mysql5.6.tar.gz到mysql-5.7.8-rc.tar.gz是一個版本
mysql5.7.9.tar.gz---mysql5.7.11.tar.gz是一個版本



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28939273/viewspace-2128813/,如需轉載,請註明出處,否則將追究法律責任。

相關文章