程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 【SQL】MySQL之使用mysqlbinlog進行增量備份及恢復詳解

【SQL】MySQL之使用mysqlbinlog進行增量備份及恢復詳解

編輯:MySQL綜合教程

【SQL】MySQL之使用mysqlbinlog進行增量備份及恢復詳解   增量備份過程 (1)配置My.cnf文件 (Windows系統下配置my.ini文件),啟用二進制備份:   [sql]  log-bin=D:/Program Files (x86)/MySQL/mylog/juelog   在這裡指定把備份文件放到哪個文件下。   (2)重啟MySQL服務。 重啟後,在所配置的文件目錄下,將出現兩個二進制的配置文件。   如圖:     其中,juelog.index為備份文件的索引,指明有哪些備份文件;juelog.000001即為備份文件,存放用戶對數據庫的所有操作。   索引文件juelog.index中的內容如下:     (3)備份日志的自動更新 當對數據庫進行相應的操作時,備份日志會發生相應的更新。這點可以從備份文件的時間上觀察得到。   經檢測,備份文件中會記錄創建表的語句、刪除表的語句、insert語句、delect語句、update語句等,而不會記錄select語句。   (4)查看備份日志中內容 可以使用MySQL自帶的mysqlbinlog程序,來查看備份文件中的內容。   進入cmd控制台,以:   [sql]  mysqlbinlog 備份文件的路徑   的方式來查看備份文件中的內容。     通過上圖可以看到,MySQL會把每一個操作的時間記錄下來,同時分配一個位置position。   由此,我們可以根據時間或者位置來恢復數據庫文件。   (5)按時間導出恢復日志。 [sql]  mysqlbinlog --start-datetime="2013-08-11 23:00:00" --stop-datetime="2013-08-11 23:20:59" juelog.000001 -r Test2.sql       以上操作即是把從2013-08-11 23:00:00到2013-08-11 23:20:59的所有操作都導入進Test2.sql中。   執行成功該語句後,在備份目錄下即會生成Test2.sql文件。   其中,--start-datetime和--stop-datetime是可選的。   按位置導出日志與此同理。   (6)按位置進行恢復: 為了檢驗恢復效果,我們可以先將該表清空。   [sql]  D:\Program Files (x86)\MySQL\mylog>mysqlbinlog --stop-position="102" juelog.0000   01 | mysql -uroot -p   Enter password: ***       即可恢復表中內容。   按時間進行恢復與此同理。   (7)自動刪除備份日志。 由於備份日志會占用大量的硬盤空間,所有我們需要定時的刪除備份日志。   可以在my.cnf文件(Windows系統下配置my.ini文件)中設置EXPIRE_LOGS_DAYS參數。   例如:   [sql]  EXPIRE_LOGS_DAYS=7   則超過7天的備份日志會自動刪除。   (8)開啟binlog日志 [sql]  mysql -hlocalhost -uroot -pjue -e "set global sql_log_bin=1";   mysql -hlocalhost -uroot -pjue -e "show global variables like 'sql_log_bin'\G";   執行結果:   [sql]  *************************** 1. row ***************************   Variable_name: sql_log_bin           Value: ON   (9)禁止binlog日志 [sql]  mysql -hlocalhost -uroot -pjue -e "set global sql_log_bin=0";   mysql -hlocalhost -uroot -pjue -e "show global variables like 'sql_log_bin'\G";   執行結果:   [sql]  *************************** 1. row ***************************   Variable_name: sql_log_bin           Value: OFF   總結 Mysql數據庫會以二進制形式,自動把用戶對mysql數據庫的操作,記錄到備份文件中。   當用戶希望恢復的時候,可以使用備份文件,來進行相應的恢復。   備份文件中會記錄創建表的語句、刪除表的語句、insert語句、delect語句、update語句等,而不會記錄select語句。   增量備份記錄的內容包括:   (1)操作語句本身。   (2)操作的時間。   (3)操作的位置。  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved