Mysql

使用 100 個二進制日誌文件中的事件位置恢復 Mysql 時間點

  • August 1, 2022

我堅持一個問題!問題是我在生產環境中有一個大型數據庫,我有一個完整的增量備份,直到下午 2 點和 1 小時後我突然執行“刪除數據庫”命令,現在我想在“刪除數據庫”語句之前恢復該數據庫從二進制日誌文件。困難在於,當有這麼多像 100 個文件這樣的二進制日誌文件時,我怎麼知道我必須從哪個二進制日誌文件中恢復我的數據?

您轉儲每個 binlog 文件並對其進行 grep,直到找到您要查找的文件和位置。

範例:我在本地實例上執行了“drop schema test2”,然後檢查了最後一個二進制日誌文件。我使用grep -B3which 輸出匹配的行和該行之前的 3 行。

mysqlbinlog binlog.000069 | grep -B3 'drop schema test2'

# at 43985
#220801 10:12:41 server id 1  end_log_pos 44090 CRC32 0xaf5591a1    Query   thread_id=107   exec_time=0 error_code=0    Xid = 1016
SET TIMESTAMP=1659373961/*!*/;
drop schema test2

如果你有 100 個二進制日誌文件,你需要一一搜尋。這是一項乏味的家務活,既費時又無聊。但這是做到這一點的方法。

引用自:https://dba.stackexchange.com/questions/315078