最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL誤操作恢復(fù)的完全指南

 更新時(shí)間:2026年04月07日 09:27:48   作者:腦袋空白的此刻  
本文詳細(xì)介紹了使用MySQL的ROW格式binlog和my2sql工具生成回滾SQL以恢復(fù)誤操作數(shù)據(jù)的方法,包括前置準(zhǔn)備、生成回滾SQL(使用my2sql工具)和執(zhí)行恢復(fù)等步驟,同時(shí)提供了避免誤操作的最佳實(shí)踐,需要的朋友可以參考下

文檔目標(biāo)

當(dāng)發(fā)生 UPDATE、DELETE 等誤操作時(shí),利用 MySQL 的 ROW 格式 binlog 和 my2sql 工具,精準(zhǔn)生成回滾 SQL 并恢復(fù)數(shù)據(jù)。

第一部分:前置準(zhǔn)備與 binlog 定位

1.1 確認(rèn) binlog 配置與狀態(tài)

在 MySQL 客戶端中執(zhí)行以下命令,確認(rèn) binlog 已開啟且為 ROW 格式:

SHOW VARIABLES LIKE 'log_bin';              -- 必須為 ON
SHOW VARIABLES LIKE 'binlog_format';        -- 必須為 ROW
SHOW VARIABLES LIKE 'log_bin_basename';     -- 獲取 binlog 文件存儲(chǔ)路徑前綴

1.2 查看所有 binlog 文件

SHOW BINARY LOGS;

輸出示例

Log_nameFile_size
DESKTOP-H12BE21-bin.0002011252269
DESKTOP-H12BE21-bin.0002021024

1.3 定位誤操作時(shí)間對應(yīng)的 binlog 文件

核心思路:通過 mysqlbinlog 工具檢查每個(gè)文件的起止時(shí)間,找到覆蓋誤操作時(shí)間點(diǎn)(如 2026-04-02 14:56:00 ~ 15:05:00)的文件。

方法一:查看單個(gè)文件的起始時(shí)間

cd /d "D:\base\mysql8\bin"
mysqlbinlog --base64-output=decode-rows -vv "D:\base\mysql8\Data\DESKTOP-H12BE21-bin.000201" | findstr "Start time"

方法二:掃描文件中的具體時(shí)間戳

mysqlbinlog --base64-output=decode-rows -vv "D:\base\mysql8\Data\DESKTOP-H12BE21-bin.000201" | findstr "#230402"

輸出中若出現(xiàn) #230402 14:56:23,說明該文件包含誤操作時(shí)間點(diǎn)。

方法三(推薦):按時(shí)間范圍批量掃描多個(gè)文件

mysqlbinlog --base64-output=decode-rows -vv --start-datetime="2026-04-02 14:50:00" --stop-datetime="2026-04-02 15:10:00" "D:\base\mysql8\Data\DESKTOP-H12BE21-bin.00020*" > D:\binlog_scan.txt

此命令會(huì)掃描所有以 .00020 開頭的文件,并將包含時(shí)間范圍內(nèi)的事件輸出到文本文件,方便確認(rèn)目標(biāo)文件。

1.4 快速判斷技巧

  • 文件大小:接近 1GB 的文件可能包含長時(shí)間范圍;幾百 KB 的小文件通常時(shí)間范圍較短。
  • 文件序號:序號越大(如 .000201),文件越新。誤操作時(shí)間越近,應(yīng)優(yōu)先檢查序號較大的文件。
  • 當(dāng)前寫入文件:執(zhí)行 SHOW MASTER STATUS; 可查看當(dāng)前正在寫入的 binlog 文件。

第二部分:使用 my2sql 生成回滾 SQL

2.1 環(huán)境準(zhǔn)備

將確認(rèn)的 binlog 文件復(fù)制到 my2sql 工具所在目錄:

copy "D:\base\mysql8\Data\DESKTOP-H12BE21-bin.000201" D:\my2sql\my2sql-master\

2.2 執(zhí)行 my2sql 生成回滾 SQL

cd /d D:\my2sql\my2sql-master
my2sql.exe -user root -password 123456 -host 127.0.0.1 -port 3306 -mode file -local-binlog-file DESKTOP-H12BE21-bin.000201 -start-file DESKTOP-H12BE21-bin.000201 -work-type rollback -start-datetime "2026-04-02 14:56:00" -stop-datetime "2026-04-02 15:05:00" -databases sm-server -tables order_ai_record -output-dir D:\result

參數(shù)詳解

參數(shù)示例值說明
-modefile離線解析模式,直接讀取本地 binlog 文件
-local-binlog-fileDESKTOP-H12BE21-bin.000201已復(fù)制到當(dāng)前目錄的 binlog 文件名
-start-fileDESKTOP-H12BE21-bin.000201指定起始文件(與 -local-binlog-file 保持一致)
-work-typerollback生成回滾 SQL(反向補(bǔ)償)
-start-datetime"2026-04-02 14:56:00"誤操作開始時(shí)間,精確到秒
-stop-datetime"2026-04-02 15:05:00"誤操作結(jié)束時(shí)間
-databasessm-server限定數(shù)據(jù)庫名,提高解析效率
-tablesorder_ai_record限定表名,只處理該表的變更
-output-dirD:\result生成的回滾 SQL 文件輸出目錄

2.3 檢查生成的回滾 SQL

  • 打開 D:\result\rollback.201.sql
  • 確認(rèn)內(nèi)容為將 DELETE_FG'1' 改回原值的 UPDATE 語句。
  • 檢查是否有語法錯(cuò)誤或意外操作。

第三部分:執(zhí)行恢復(fù)與驗(yàn)證

3.1 執(zhí)行回滾 SQL

mysql -u root -p123456 sm-server < D:\result\rollback.201.sql

3.2 驗(yàn)證恢復(fù)結(jié)果

-- 檢查誤操作標(biāo)記字段是否已恢復(fù)
SELECT COUNT(*) FROM order_ai_record WHERE DELETE_FG = '1';
-- 抽查特定記錄
SELECT * FROM order_ai_record WHERE ID = 11675;

第四部分:完整流程圖

1. 確認(rèn) binlog 開啟且為 ROW 格式
   ↓
2. SHOW BINARY LOGS 列出所有文件
   ↓
3. 用 mysqlbinlog 掃描文件時(shí)間范圍 → 定位誤操作對應(yīng)的 binlog 文件
   ↓
4. 復(fù)制 binlog 文件到 my2sql 目錄
   ↓
5. 使用 my2sql 生成回滾 SQL(指定 -work-type rollback 和時(shí)間范圍)
   ↓
6. 檢查生成的 rollback.xxx.sql 文件內(nèi)容
   ↓
7. 執(zhí)行回滾 SQL 恢復(fù)數(shù)據(jù)
   ↓
8. 查詢驗(yàn)證數(shù)據(jù)是否恢復(fù)正確

第五部分:避免誤操作的最佳實(shí)踐

5.1 安全更新習(xí)慣(生產(chǎn)環(huán)境強(qiáng)烈推薦)

-- 1. 開啟事務(wù)
BEGIN;

-- 2. 先查詢影響范圍
SELECT * FROM order_ai_record WHERE ID = 11675;

-- 3. 執(zhí)行更新/刪除
UPDATE order_ai_record SET DELETE_FG = '1' WHERE ID = 11675;

-- 4. 再次確認(rèn)
SELECT * FROM order_ai_record WHERE ID = 11675;

-- 5. 確認(rèn)無誤再提交
COMMIT;

-- 如果發(fā)現(xiàn)錯(cuò)誤,立即回滾
ROLLBACK;

5.2 其他建議

  • 定期備份:結(jié)合 mysqldumpxtrabackup 進(jìn)行全量備份。
  • 權(quán)限控制:生產(chǎn)環(huán)境核心表禁止直接 DELETE,僅允許邏輯刪除(如 UPDATE DELETE_FG = '1')。
  • 操作審計(jì):啟用 MySQL 審計(jì)插件,記錄所有高風(fēng)險(xiǎn)操作。

附錄:常用命令速查表

目的命令
查看所有 binlog 文件SHOW BINARY LOGS;
查看當(dāng)前寫入的 binlog 文件SHOW MASTER STATUS;
查看 binlog 文件起始時(shí)間mysqlbinlog -vv 文件名 | findstr "Start time"
查看文件中的具體時(shí)間戳mysqlbinlog -vv 文件名 | findstr "#230402"
按時(shí)間范圍掃描多個(gè) binlogmysqlbinlog --start-datetime="..." --stop-datetime="..." binlog.20*
生成回滾 SQL(my2sql)my2sql.exe -mode file -work-type rollback -start-datetime "..." -stop-datetime "..."

生成的SQL

生成的文件

記得要下載go去編譯這個(gè)代碼

以上就是MySQL誤操作恢復(fù)的完全指南的詳細(xì)內(nèi)容,更多關(guān)于MySQL誤操作恢復(fù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MySQL 觸發(fā)器定義與用法簡單實(shí)例

    MySQL 觸發(fā)器定義與用法簡單實(shí)例

    這篇文章主要介紹了MySQL 觸發(fā)器定義與用法,結(jié)合簡單實(shí)例形式總結(jié)分析了mysql觸發(fā)器的語法、原理、定義及使用方法,需要的朋友可以參考下
    2019-09-09
  • MYSQL?EXPLAIN結(jié)果解讀

    MYSQL?EXPLAIN結(jié)果解讀

    本文主要介紹了MySQL查詢中的一些關(guān)鍵字,如:SIMPLE,PRIMARY,UNION,DEPENDENTUNION,UNIONRESULT,SUBQUERY,DEPENDENTSUBQUERY,DERIVED,UNCACHEABLESUBQUERY等,文章詳細(xì)解析了這些關(guān)鍵字的含義和用途
    2024-10-10
  • Centos7 移動(dòng)mysql5.7.19 數(shù)據(jù)存儲(chǔ)位置的操作方法

    Centos7 移動(dòng)mysql5.7.19 數(shù)據(jù)存儲(chǔ)位置的操作方法

    這篇文章主要介紹了Centos7 移動(dòng)mysql5.7.19 數(shù)據(jù)存儲(chǔ)位置的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2017-10-10
  • mysql 字符串轉(zhuǎn)數(shù)組的實(shí)現(xiàn)示例

    mysql 字符串轉(zhuǎn)數(shù)組的實(shí)現(xiàn)示例

    有時(shí)候,我們需要將一個(gè)字符串拆分成一個(gè)數(shù)組,本文主要介紹了mysql 字符串轉(zhuǎn)數(shù)組的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • mysql從一張表查詢批量數(shù)據(jù)并插入到另一表中的完整實(shí)例

    mysql從一張表查詢批量數(shù)據(jù)并插入到另一表中的完整實(shí)例

    這篇文章主要給大家介紹了關(guān)于mysql從一張表查詢批量數(shù)據(jù)并插入到另一表中的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 解決MySQL報(bào)錯(cuò)Error 3948 (42000): Loading local data is disabled問題

    解決MySQL報(bào)錯(cuò)Error 3948 (42000): Loading loc

    在執(zhí)行MySQL項(xiàng)目過程中意外出現(xiàn)的報(bào)錯(cuò),之前也沒有遇到過,報(bào)錯(cuò)信息如下,Error 3948 (42000): Loading local data is disabled; this must be enabled on both the client an,本文小編就給大家介紹一下解決報(bào)錯(cuò)的方法,需要的朋友可以參考下
    2023-09-09
  • Docker MySQL啟動(dòng)問題及解決過程

    Docker MySQL啟動(dòng)問題及解決過程

    Docker MySQL啟動(dòng)失敗多因權(quán)限限制導(dǎo)致無法寫入/tmp和/var/run/mysqld目錄,推薦使用tmpfs掛載卷解決,同時(shí)需檢查SELinux和數(shù)據(jù)目錄權(quán)限,避免使用特權(quán)模式
    2025-09-09
  • OpenEuler系統(tǒng)MySQL故障排查終極指南實(shí)戰(zhàn)教程

    OpenEuler系統(tǒng)MySQL故障排查終極指南實(shí)戰(zhàn)教程

    本文介紹了在OpenEuler系統(tǒng)中針對/usr/local/mysql安裝路徑的MySQL服務(wù)進(jìn)行全面故障排查、根因定位、解決方案及性能優(yōu)化的方法,感興趣的朋友跟隨小編一起看看吧
    2026-04-04
  • MySQL kill不掉線程的原因

    MySQL kill不掉線程的原因

    這篇文章主要介紹了MySQL kill不掉線程的原因,幫助大家更好的理解和學(xué)習(xí)使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-05-05
  • mysql update case 更新字段值不固定的操作

    mysql update case 更新字段值不固定的操作

    這篇文章主要介紹了mysql update case 更新字段值不固定的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02

最新評論

海兴县| 如东县| 太湖县| 玉树县| 蓬溪县| 灌阳县| 当涂县| 西充县| 温宿县| 任丘市| 桃园县| 香河县| 湘乡市| 潼关县| 桓仁| 通化市| 桃江县| 盐池县| 北京市| 鄂托克前旗| 喀喇沁旗| 咸丰县| 临沭县| 桂东县| 东海县| 绿春县| 平远县| 兴安县| 张家口市| 武宁县| 锡林郭勒盟| 新邵县| 铜陵市| 开鲁县| 贵南县| 惠水县| 贺州市| 招远市| 陈巴尔虎旗| 石渠县| 永新县|