標籤:mysql 備份 恢複
**無論備份還是恢複,都要驗證使用者及許可權**
一、資料備份
1、資料備份的備份方式
物理備份:cp、tar、tar+gzip —> 相容性差,目標地址空間大,耗時
系統內建物理備份工具mysqlhotcopy --> 備份時鎖表
邏輯備份:備份產生資料的SQL語句 —> 相容性好,佔用空間小
系統內建完整備份工具Mysqldump(MySQL-client包產生) --> 備份時鎖表
2、資料備份的備份策略
完整備份: 完全備份,把資料庫伺服器上的所有庫所有表全部備份
差異備份: 自‘完整備份’之後,疊加備份所有產生的新資料。
優缺點:備份資料有冗餘,佔用空間,恢複時方便
例如:第1天做了完整備份,第2天產生3條記錄,差異備份時需備份3條記錄,第3天產生2條 記錄,差異備份時則需備份5條記錄
完整備份 1條記錄 1day 備份1條記錄
差異備份 3條記錄 2day 備份3條記錄
2條記錄 3day 備份5條記錄
……… ……………
增量備份:‘自上一次備份’之後,備份產生的新資料。
優缺點:備份節省空間的,恢複時調用的檔案多
完整備份 1條記錄 1day 1
增量備份 3 2day 3
2 3day 2
……… …………
3、工作中通常備份策略用法:
完整備份+差異備份
完整備份+增量備份
4、備份工具
1)完整備份工具mysqldump
**由mysql包提供,資料量不太大時用,
**備份的時候鎖表,備份期間別人不能對備份資料進行操作
格式:mysqldump [–h資料庫IP/主機名稱] -u登入使用者名稱 -p密碼 資料庫名 > 路徑/備份檔案名.sql
不寫路徑時,預設備份到當前命令所在的目錄下
若寫路徑,需事先建立好
若資料庫管理員從本機登入且沒有密碼:mysqldump 資料庫名 >路徑/xxx.sql
用來串連資料庫的使用者要對相應的資料庫有許可權
資料庫名的表示格式:
所有庫 --all-databases
指定單個庫下的所有表 資料庫名
某個庫下的某個表 資料庫名 表名
備份某幾個庫 -B 資料庫名1 資料庫名2 資料庫名N
例:mysqldump -uroot -p --all-databases > /mysqlbak/alldb.sql //備份資料庫伺服器上的所有庫
解決:將備份寫入計劃任務後,因備份名一樣,會複蓋前天的備份,可以用“時間”做備份檔案名。
擷取時間命令:#date +%F →2014-07-21
#date +%T →17:30:17
mysqldump webdb > webdb-`date +%F`.sql
mysqldump -h192.168.10.20 -uroot -ptarena webdb > /mysqllog/webdb-`date+%F`.sql //遠程備份
二、資料恢複
格式:mysql –h伺服器IP/主機名稱 -u登入使用者名稱 –p密碼 資料庫名 < 備份檔案名
mysql 資料庫名 < 備份檔案名 //若登入資料庫不需要使用者名稱密碼
注意:恢複資料時候“<”必須寫對千萬注意不要寫反,要是恢複的時候寫成“>”那麼會自動清除備份檔案內容
備份庫的時候,前面加-B備份出的檔案裡面帶“建立庫”的SQL語句,恢複的時候不用在資料庫裡在建立庫
資料庫名是可選項,恢複資料時候必須查看一下備份檔案裡面的SQL語句,當恢複時使用的備份檔案裡有建庫SQL語句時,資料庫名可以省略,反之沒有建庫SQL語句的時候必須“進資料庫裡面手動建一個庫(庫名可以隨便寫)”然後在恢複的時候寫上建立的資料庫名。
例:
mysql webdb < webdb-2014-01-06.sql
mysql -h192.168.10.20 -uroot -ptarena webdb < /mysqllog/webdb-2014-01-06.sql
本文出自 “Dave-技術部落格” 部落格,請務必保留此出處http://davewang.blog.51cto.com/6974997/1858713
MySQL資料備份與恢複