**無論備份還是恢復,都要驗證用戶及權限**
一、數據備份
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