如果mysql伺服器啟用了二進位制日誌,你可以使用mysqlbinlog工具來恢復從指定的時間點開始 (例如,從你最後一次備份)直到現在或另乙個指定的時間點的資料。「mysqlbinlog:用於處理二進位制日誌檔案的實用工具」。
要想從二進位制日誌恢復資料,你需要知道當前二進位制日誌檔案的路徑和檔名。一般可以從選項檔案(即my.cnf or my.ini,取決於你的系統)中找到路徑。如果未包含在選項檔案中,當伺服器啟動時,可以在命令列中以選項的形式給出。啟用二進位制日誌的選項為--log-bin。要想確定當前的二進位制日誌檔案的檔名,輸入下面的mysql語句:
show binlog events /g
你還可以從命令列輸入下面的內容:
mysql --user=root -pmy_pwd -e 'show binlog events /g'
將密碼my_pwd替換為伺服器的root密碼。
1. 指定恢復時間
對於mysql 4.1.4,可以在mysqlbinlog語句中通過--start-date和--stop-date選項指定datetime格式的起止時間。舉例說明,假設在今天上午10:00(今天是2023年4月20日),執行sql語句來刪除乙個大表。要想恢復表和資料,你可以恢復前晚上的備份,並輸入:
mysqlbinlog --stop-date="2005-04-20 9:59:59" /var/log/mysql/bin.123456 /| mysql -u root -pmypwd
該命令將恢復截止到在--stop-date選項中以datetime格式給出的日期和時間的所有資料。如果你沒有檢測到幾個小時後輸入的錯誤的sql語句,可能你想要恢復後面發生的活動。根據這些,你可以用起使日期和時間再次執行mysqlbinlog:
mysqlbinlog --start-date="2005-04-20 10:01:00" /var/log/mysql/bin.123456 /| mysql -u root -pmypwd /
在該行中,從上午10:01登入的sql語句將執行。組合執行前夜的轉儲檔案和mysqlbinlog的兩行可以將所有資料恢復到上午10:00前一秒鐘。你應檢查日誌以確保時間確切。下一節介紹如何實現。
2. 指定恢復位置
也可以不指定日期和時間,而使用mysqlbinlog的選項--start-position和--stop-position來指定日誌位置。它們的作用與起止日選項相同,不同的是給出了從日誌起的位置號。使用日誌位置是更準確的恢復方法,特別是當由於破壞性sql語句同時發生許多事務的時候。要想確定位置號,可以執行mysqlbinlog尋找執行了不期望的事務的時間範圍,但應將結果重新指向文字檔案以便進行檢查。操作方法為:
mysqlbinlog --start-date="2005-04-20 9:55:00" --stop-date="2005-04-20 10:05:00" //var/log/mysql/bin.123456 > /tmp/mysql_restore.sql
該命令將在/tmp目錄建立小的文字檔案,將顯示執行了錯誤的sql語句時的sql語句。你可以用文字編輯器開啟該檔案,尋找你不要想重複的語句。如果二進位制日誌中的位置號用於停止和繼續恢復操作,應進行注釋。用log_pos加乙個數字來標記位置。使用位置號恢復了以前的備份檔案後,你應從命令列輸入下面內容:
mysqlbinlog --stop-position="368312" /var/log/mysql/bin.123456 /| mysql -u root -pmypwd
mysqlbinlog --start-position="368315" /var/log/mysql/bin.123456 /
| mysql -u root -pmypwd /
上面的第1行將恢復到停止位置為止的所有事務。下一行將恢復從給定的起始位置直到二進位制日誌結束的所有事務。因為mysqlbinlog的輸出包括每個sql語句記錄之前的set timestamp語句,恢復的資料和相關mysql日誌將反應事務執行的原時間。
mysql資料庫自動備份與恢復
建立目錄 home zf mysqlback 新增以下 到autobakcup檔案中 獲取當前時間當年月日作為備份檔案名的一部分 filename date y m d 設定mysql使用者名稱 user root 設定mysql使用者密碼 password root 設定mysql備份當資料庫名 ...
mysql資料庫的自動備份與恢復
一,備份 1,建立自動備份指令碼 vim root mysql backup.sh bin bash path usr local sbin usr bin bin the directory of backup backdir backup mysql 備份目錄 the password of m...
MySQL資料庫恢復
使用mysql命令 mysql u root p test home bak 2019 04 11 stumysql1.sql enter password song123 使用source命令恢復資料庫的說明 進入mysql資料庫控制台後,切換到想恢復資料的資料庫。mysql use 資料庫 接著...