資料備份的重要性
1、在生產環境中,資料的安全性是至關重要的,任何資料的丟失都可能產生嚴重的後果2、造成資料丟失的原因程式錯誤人為錯誤計算機失敗磁碟失敗災難(如**等)和偷竊
資料庫備份的分類
一、從物理與邏輯的角度,備份可分為:
1、物理備份:對資料庫作業系統的物理檔案(如資料檔案、日誌檔案等)的備份
物理備份又可以分為離線備份(冷備份)和聯機備份(熱備份):
-冷備份:是在關閉資料庫的時候進行的
-熱備份:資料庫處於執行狀態,這種備份方法依賴於資料庫的日誌檔案
2、邏輯備份:對資料庫邏輯元件(如表等資料庫物件)的備份
二、從資料庫的備份策略角度, 備份可分為:
1、完全備份:每次對資料進行完整的備份
2、差異備份:備份那些自從上次完全備份之後被修改過的檔案
3、增量備份:只有那些在.上次完全備份或者增量備份後被修改的檔案才會被備份
注意點:差異備份與增量備份相輔相成
一、mysql完全備份(全量備份)1、完全備份是對整個資料庫的備份、資料庫結構和檔案結構的備份
2、完全備份儲存的是備份完成時刻的資料庫
3、完全備份是增量備份的基礎
完全備份的優點
備份與恢復操作簡單方便完全備份的缺點
1.資料存在大量的重複
2.占用大量的備份空間
3.備份與恢復時間長
備份方法
一、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 資料庫名 表名 > /備份路徑/備份檔案名恢復資料庫
一、使用mysqldump命令匯出的sql備份指令碼,在進行資料恢復時可使用以下方法匯入
source命令 #資料庫模式中執行
mysql命令 #linux模式中執行
1、使用source恢復資料庫的步驟
●登入到mysql資料庫
●執行source備份sq|指令碼的路徑(絕對路徑)
mysql [(none)] > source /backup/all-data.sql
#source命令恢復
2、使用mysql命令恢復資料
mysql -u使用者名稱 -p [密碼] < 庫備份指令碼的路徑mysql -u root -p < /backup/all-data.sql
#mysql命令恢復
二、使用mysqldump進行完全備份的存在的問題
●備份資料中有重複資料
●備份時間與恢復時間長
恢復資料表操作1、恢復表時同樣可以使用source或者mysql命令進行
2、source恢復表的操作與恢復庫的操作相同
3、當備份檔案中只包含表的備份,而不包括建立庫的語句時,必須指定庫名,且目標庫必須存在.生產環境中,可以使用shell指令碼自動實現定期備份
mysql -u使用者名稱-p [密碼] < 表備份指令碼的路徑
mysql -u root -p mysql < /backup/mysql-user.sql
#mysql命令恢復表
mysql備份思路1、定期實施備份,制定備份計畫或者策略,並嚴格遵守
2、除了進行完全備份,開啟mysql伺服器的日誌功能是很重要的
●完全備份加上日誌,可以對mysql進行最大化還原
mysql-bin:mysql資料庫的二進位制日誌,用於記錄使用者對資料庫操作的sql語句((除了資料查詢語句)資訊。可以使用mysqlbin命令檢視二進位制日誌的內容
3、使用統一的和易理解的備份檔案名稱
●不要使用backup1、backup2等這樣沒有意義的名字
●推薦使用庫名或者表名加上時間的命名規則
二、mysql增量備份
增量備份就是備份自上一次備份之後增加或變化的檔案或者內容增量備份的特點
●沒有重複資料,備份量不大,時間短
●恢復麻煩:需要上次完全備份及完全備份之後所有的增量備份才能恢復,而且要對所有增量備份進行逐個反推恢復
mysql沒有提供直接的增量備份方法
可以通過mysql提供的二進位制日誌(binary logs)間接實現增量備份mysql二進位制日誌對備份的意義
●二進位制日誌儲存了所有更新或者可能更新資料庫的操作
●二進位制日誌在啟動mysql伺服器後開始記錄,並在檔案達到max_ binlog_size所設定的大小或者接收到flush logs命令後重新建立新的日誌檔案
●只需定時執行flush logs方法重新建立新的日誌,生成二進位制檔案序列,並及時把這些舊的日誌儲存到安全的地方就完成了乙個時間段的增量備份
檢視二進位制日誌檔案(解碼)mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002 > /opt/ bak. txtmysql資料庫增量恢復概述
一般恢復
基於位置回覆
就是將某個起始時間的二進位制日誌匯入資料庫中,從而跳過某個發生錯誤的時間點實現資料的恢復
基於時間點恢復
使用基於時間點的恢復,可能會出現在乙個時間點裡既同時存在正確的操作又存在錯誤的操作,所以我們需要一種更為精確的恢復方式
增量恢復的方法
1.一般恢復
mysqlbinlog [--no-defaults] 增量備份檔案 | mysql -u使用者名稱 -p2.基於位置的恢復恢復資料到指定位置
mysqlbinlog --stop-position=操作'id' 進製日誌 | 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 -u使用者名稱 -p 密碼
mysql 備份與恢復 全量與增量
全量備份使用自帶的mysqldump命令 備份命令 mysqldump u username p password database table backup.sql 恢復命令 mysql u username p password database backuo.sql 注意恢復命令是mysql不...
Mysql增量備份與全量備份
1.首先確保已開啟binlog日誌功能。在my.cnf中包含下面的配置以啟用二進位制日誌 mysqld log bin mysql bin 2.建立兩份指令碼檔案,乙份為增量備份的指令碼檔案,另乙份為全量備份的指令碼檔案。指令碼檔案放這裡 全量備份指令碼start bin bash program ...
MySQL 全備份與增量備份 全恢復與增量恢復
一,全備份 與 全恢復 1 vim root db backup mysqldump mraz.php,內容如下 date default timezone set prc d date ymd his exec usr local mysql bin mysqldump uroot p111111...