您好,登錄后才能下訂單哦!
數據備份的重要性
1、在生產環境中,數據的安全性是至關重要的,任何數據的丟失都可能產生嚴重的后果
2、造成數據丟失的原因
程序錯誤
人為錯誤
計算機失敗
磁盤失敗災難(如地震等)和偷竊
數據庫備份的分類
一、從物理與邏輯的角度,備份可分為:
1、物理備份:對數據庫操作系統的物理文件(如數據文件、日志文件等)的備份
物理備份又可以分為脫機備份(冷備份)和聯機備份(熱備份):
-冷備份:是在關閉數據庫的時候進行的
-熱備份:數據庫處于運行狀態,這種備份方法依賴于數據庫的日志文件
2、邏輯備份:對數據庫邏輯組件(如表等數據庫對象)的備份
二、從數據庫的備份策略角度, 備份可分為:
1、完全備份:每次對數據進行完整的備份
2、差異備份:備份那些自從上次完全備份之后被修改過的文件
3、增量備份:只有那些在.上次完全備份或者增量備份后被修改的文件才會被備份
MySQL完全備份(全量備份)
1、完全備份是對整個數據庫的備份、數據庫結構和文件結構的備份
2、完全備份保存的是備份完成時刻的數據庫
3、完全備份是增量備份的基礎
完全備份的優點
備份與恢復操作簡單方便
完全備份的缺點
1.數據存在大量的重復
2.占用大量的備份空間
3.備份與恢復時間長
mysqldump備份庫
一、MySQL數據庫的備份可以采用用多種方式
1.直接打包數據庫文件夾,如/usr/local/mysql/data
2.使用專用備份工具mysqldump
二、mysqldump命令
1.MySQL自帶的備份工具,相當方便對MySQL進行備份
2.通過該命令工具可以將指定的庫、表或全部的庫導出為SQL腳本,在需要恢復時可進行數據恢復
三、使用mysqldump命令對單個數據庫進行完全備份
mysqldump -u用戶名-p [密碼] [選項] [數據庫名] > /備份路徑/備份文件名
四、使用mysqldump命令對多個庫進行完全備份
mysqldump -u 用戶名 -p [密碼] [選項] --databases 庫名1 [庫名2]... >/備份路徑/備份文件名
五、使用mysqldump命令對所有庫進行完全備份
mysqldump -u用戶名-p [密碼] [選項] --all-databases > /備份路徑/
mysqldump備份表
在實際生產環境中,存在對某個特定表的維護操作,此時mysqldump同樣發揮重大作用
1.使用mysqldump備份表的操作
mysqldump -u 用戶名 -p [密碼] [選項] 數據庫名 表名 > /備份路徑/備份文件名
2.使用mysqldump備份表結構的操作
mysqldump -u 用戶名 -p [密碼] [選項] -d 數據庫名 表名 > /備份路徑/備份文件名
MySQL增量備份
增量備份就是備份自上一次備份之后增加或變化的文件或者內容
增量備份的特點
●沒有重復數據,備份量不大,時間短
●恢復麻煩:需要上次完全備份及完全備份之后所有的增量備份才能恢復,而且要對所有增量備份進行逐個反推恢復
MySQL沒有提供直接的增量備份方法
可以通過MySQL提供的二進制日志(binary logs)間接實現增量備份
MySQL二進制日志對備份的意義
●二進制日志保存了所有更新或者可能更新數據庫的操作
●二進制日志在啟動MySQL服務器后開始記錄,并在文件達到max_ binlog_size所設置的大小或者接收到flush logs命令后重新創建新的日志文件
●只需定時執行flush logs方法重新創建新的日志,生成二進制文件序列,并及時把這些舊的日志保存到安全的地方就完成了一個時間段的增量備份
MySQL數據庫增量恢復
基于位置回復
就是將某個起始時間的二進制日志導入數據庫中,從而跳過某個發生錯誤的時間點實現數據的恢復
基于時間點恢復
使用基于時間點的恢復,可能會出現在一個時間點里既同時存在正確的操作又存在錯誤的操作,所以我們需要一種更為精確的恢復方式
增量恢復的方法
1.一般恢復
mysqlbinlog [--no-defaults]增量備份文件 | mysql -u用戶名 -p
2.基于位置的恢復
恢復數據到指定位置
mysqlbinlog --stop-position=操作'id' 1進制日志 | mysql -u用戶名 -p 密碼
從指定的位置開始恢復數據
mysqlbinlog --start-position=操作'id'二進制日志 | mysql -u用戶名 -p 密碼
3.基于時間點的恢復
從日志開頭截止到某個時間點的恢復
mysqlbinlog [--no-defaults] --stop-datetime='年-月-日 小時:分鐘:秒'二進制日志 | mysql -u用戶名 -p 密碼
某個時間點到日志結尾的恢復
mysqlbinlog [--no defaults] --start-datetime='年-月-日 小時:分鐘:秒'二進制日志 | mysql -u用戶名 -p 密碼
從某個時間點到某個時間點的恢復
mysqlbinlog [--no defaults] --start-datetime='年-月-日 小時:分鐘:秒' --stop-datetime='年-月-日 小時:分鐘:秒'二進制日志 | mysql
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。