mysql binlog查看歷史sql執(zhí)行記錄方式
前情提要
最近有開發(fā)同學把測試庫的數(shù)據(jù)干沒了,反饋說是orm做了字段text轉(zhuǎn)mediumtext操作導致的。
作為變更字段類型,且是兼容的理論上不可能存在這個問題,所以為了一探究竟他到底說的是不是假話,我決定在binlog里找找蛛絲馬跡。
mysql binlog介紹
首先確認數(shù)據(jù)庫是否開啟了binlog
mysql -u username -p SHOW VARIABLES LIKE 'log_bin';
該命令將顯示MySQL是否啟用了二進制日志,以及日志文件的名稱。如果輸出結(jié)果中的Value為ON,則表示MySQL已經(jīng)啟用了二進制日志。如果Value為OFF,則表示MySQL沒有啟用二進制日志。
如果需要啟用或禁用二進制日志,可以使用以下命令:
- 啟用二進制日志:
SET GLOBAL log_bin = ON;
- 禁用二進制日志:
SET GLOBAL log_bin = OFF;
通過時間范圍查找sql歷史記錄
mysqlbinlog --base64-output=decode-rows -vv --start-datetime='2023-04-04 14:00:00' --stop-datetime='2023-04-04 15:00:00' /home/mysql/logs/mysql-bin.000043 > /tmp/sql_record.txt
過濾表名、字段等關(guān)鍵字定位sql
grep config_json /tmp/sql_record.txt ALTER TABLE `t_config` DROP COLUMN `config_json` ALTER TABLE `t_config` ADD `config_json` text NOT NULL
至此真相已經(jīng)出來!
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MYSQL之Doublewrite?Buffer雙寫緩存區(qū)詳解
由于MySQL頁(16KB)與Linux文件系統(tǒng)頁(4KB)不匹配,可能導致部分頁寫入損壞,Redo日志無法修復,Doublewrite?Buffer通過內(nèi)存+磁盤雙緩沖確保數(shù)據(jù)可靠性,與Redo日志協(xié)作實現(xiàn)故障恢復,相關(guān)參數(shù)用于配置2025-08-08
ERROR 1222 (21000): The used SELECT statements have a differ
mysql 提示SQL-ERROR summary different number of columns2011-07-07
mysql中的delete,drop和truncate有什么區(qū)別
這篇文章主要介紹了mysql中的delete,drop和truncate有什么區(qū)別,三者的用法和使用場景又完全不同,接下來我們來看看具體的區(qū)別吧,希望對你的學習有所幫助2022-06-06
MySQL使用navicat premium 15導出數(shù)據(jù)為批量插入格式實現(xiàn)方式
本文介紹了使用Navicat進行數(shù)據(jù)傳輸?shù)暮喴襟E,包括選擇數(shù)據(jù)傳輸工具、設置文件保存路徑、勾選“使用擴展插入語句”選項、依次點擊下一步直至傳輸完成2025-10-10

