Mysql
使用 100 個二進制日誌文件中的事件位置恢復 Mysql 時間點
我堅持一個問題!問題是我在生產環境中有一個大型數據庫,我有一個完整的增量備份,直到下午 2 點和 1 小時後我突然執行“刪除數據庫”命令,現在我想在“刪除數據庫”語句之前恢復該數據庫從二進制日誌文件。困難在於,當有這麼多像 100 個文件這樣的二進制日誌文件時,我怎麼知道我必須從哪個二進制日誌文件中恢復我的數據?
您轉儲每個 binlog 文件並對其進行 grep,直到找到您要查找的文件和位置。
範例:我在本地實例上執行了“drop schema test2”,然後檢查了最後一個二進制日誌文件。我使用
grep -B3
which 輸出匹配的行和該行之前的 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 個二進制日誌文件,你需要一一搜尋。這是一項乏味的家務活,既費時又無聊。但這是做到這一點的方法。