mysql---整體備份和增量備份
整體備份:
對整張表或者整個資料庫甚至所有資料庫進行備份。
增量備份:
對某一範圍內的資料進行備份。
1、整體備份:
對錶進行備份:
針對儲存引擎為myisam的表,可以直接複製frm、myd、myi這三個檔案起到備份的效果。需要還原的時候,再複製回來就可以達到還原效果。
如果儲存引擎為innodb的表,就不這樣簡單了,因為所有表的資料和索引都存在一起(資料表空間)。一旦複製資料表空間,所有表的資料和索引就跟著一起複製過來。
如何進行備份?可以利用mysqldump工具
先建立一個表,並插入一些資料
備份前需要退出mysql,利用mysqldump -u使用者 -p 庫名 表名 > 輸出備份路徑
輸入密碼後匯出備份檔案
在E盤的備份目錄下出現了table1檔案
開啟table1檔案,可以看到檔案實際儲存的是建表語句和插入資料的SQL語句
現在我們刪除tab_one表,用table1來還原tab_one
再查看tab_one表,表已經被還原回來
如何備份多個表?
答:mysqldump -u使用者 -p 資料庫 表1 表2 …… 表N > 備份檔案路徑
如何備份1個資料庫?
答:mysqldump -u使用者 -p -B 資料庫 > 備份檔案路徑
如何備份多個資料庫?
答:mysqldump -u使用者 -p -B 庫1 庫2 …… 庫N >備份檔案路徑
如何備份所有資料?
答:mysqldump -u使用者 -p -A >備份檔案路徑
2、增量備份
首先啟動二進位日誌功能,通過設定my.ini或者my.conf
在mysqld下面添加二進位備份路徑(注意路徑是左斜杠‘/’而不是‘\’,與windows不同)
重啟mysql服務
會看到在E盤的beifen目錄下多了2個檔案
開啟index檔案,內容是記錄檔的路徑。記錄檔可以有多個,命名規則是log-bin中設定的testBei後面加上6位元(從000001一直遞增)
記錄檔無法直接開啟,可以利用mysqlbinlog工具開啟
退出mysql用戶端在windows控制台上(確保設定過環境變數,不然要進入mysql的bin目錄)輸入
mysqlbinlog 記錄檔路徑
二進位檔案記錄了除select操作以外的絕大多數操作(具體我也不太清楚,基本的增刪改查是肯定要記錄的)
因為每次操作的時間和“位置”都會被記錄下來。所以要想還原資料有兩種途徑通過“時間”或“位置”。
通過時間還原:
--start-datetime="還原資料的起始時間"
--stop-datetime="還原資料的結束時間"
mysqlbinlog --start-datetime=“時間” 記錄檔路徑 | mysql -u使用者 -p 從規定的起始時間還原到現在
mysqlbinlog --stop-datetime=“時間” 記錄檔路徑 | mysql -u使用者 -p 從最開始還原到規定的結束時間
mysqlbinlog --start-datetime=“時間” --stop-datetime=“時間” 記錄檔路徑 | mysql -u使用者 -p 從規定的起始時間還原到規定的結束時間
通過位置還原:
--start-position="還原資料的起始位置"
--stop-position="還原資料的結束位置"
mysqlbinlog --start-position=“位置” 記錄檔路徑 | mysql -u使用者 -p 從規定的起始位置還原到現在
mysqlbinlog --stop-position=“位置” 記錄檔路徑 | mysql -u使用者 -p 從最開始還原到規定的結束位置
mysqlbinlog --start-position=“位置” --stop-position=“位置” 記錄檔路徑 | mysql -u使用者 -p 從規定的起始位置還原到規定的結束位置
現在刪除tab_two表
查看日誌可以發現刪除tab_two的sql
現在想恢複tab_two,就應該設定好時間範圍(建表時間--刪除時間)。
再看一下結果