一、啟用 binary log
修改 mysql server 的系統設定檔案(eg. /etc/my.cnf),在 [mysqld] 區塊中加上 log-bin=mysql-bin 選項,然後重新啟動 mysql server,例如:
[mysqld]
log-bin
啟用後你應該可以在 mysql 的 data dir 裡面發現如下的檔案:mysql-bin.index
mysql-bin.000001
mysql-bin.000002
mysql-bin.00000x
mysql 在以下幾種情況會進行 lograrote:
* 執行 flush logs 命令
* mysql server 重新啟動
* 設定檔案中有進行額外的設定
注:請注意,當你使用 mysqldump 進行資料庫備份時請記得加上 --flush-logs 選項,例如:
mysqldump --flush-logs -u root -p 資料庫名稱 > example.sql
這麼做的目的是在備份時讓 mysql server 進行 logrotate,這樣子日後要辨別 "最後一次備份時間點" 之後的 binary log 會比較方便,因為若你沒有主動(或通過設定)去刪除 binary log,則只要你的硬碟空間夠大,mysql 會無限期的儲存 binary log,也就是說你的 binary log 裡面所記載的資料有可能包含 "最後一次備份時間點" 之前的資料。
定期執行mysqladmin flush-log來實現記錄日誌檔案
二:還原增量備份
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日誌將反應事務執行的原時間。
三, 實際執行轉換後的 binary log
很簡單,只要一行簡單的命令:
mysql < example.sql
總結:(1)指定點恢復:
mysqlbinlog --stop-position=2448 --start-position=918 mysqld-bin.000007 |mysql -d test
其中--stop-position和--start-position的值為檔案中的end_log_pos
(2)指定時間點恢復
mysqlbinlog --start-date="2009-06-24 13:11:01" --stop-date="2009-06-24 14:27:31" mysqld-bin.000007 |mysql -d test
分享到:
2011-03-29 18:05
瀏覽 2383
mysql增量備份檔案 mysql增量備份
突然說要我研究下增量備份,表示在此之前真的不知道這是什麼意思,網上搜說 是指在一次全備份或上一次增量備份後,以後每次的備份只需備份與前一次相比增加或者被修改的檔案。我通俗理解就是 在前一次的備份基礎上去增刪改。然後就花費了我一下午的時間,中間的心酸就不提了,正式來吧 1 首先進去cmd以管理員身份進...
mysql增量備份
一 環境描述 使用rsync進行mysql的增量備份 192.168.0.2為備份伺服器 192.168.0.3為需要經常備份的mysql資料庫 二 主要配置 1.備份伺服器配置 useradd mysql db d data bak passwd rsync server 密碼我配置的為 123 ...
mysqldump備份 mysql增量備份
一 mysql資料庫自帶備份命令 mysqldump 1 備份 mysqldump u使用者名稱 p 密碼 資料庫名 備份的檔名 如 1 mysqldump uroot p 123 zdh opt mysql bak.sql 2 mysqldump uroot p 123 b zdh opt mys...