備份的目的
根據需求以及目的,選擇不同的備份方式。
做災難性恢復(對損壞的資料進行恢復和還原)
需求改變(因需求改變而需要把資料還原到改變以前)
測試根據不同情景選擇備份方式:
可以容忍丟失多長時間的資料?
恢復資料的時間有沒有限制?
恢復資料的同時,是否需要正常提供服務?
恢復的物件,整庫、多表、單庫、單錶?
備份分類
備份方式從物理與邏輯的角度分類,分為以下幾類:
物理備份(指對資料庫作業系統的物理檔案(如資料檔案、日誌檔案等)的備份,物理備份又可以分為離線備份(冷)和聯機備份(熱))
冷備:需要關閉mysql服務,讀寫請求均不允許的狀態下進行,但能夠較好的保證資料庫的完整性。
熱備:備份的同時,業務不受影響,這種備份方法依賴於資料庫的日誌檔案。
注意:選用什麼型別的備份,取決於業務的需求,myisam不支援熱備,innodb支援熱備,但是需要專門的工具
邏輯備份(指對資料庫邏輯元件如表等資料庫物件的備份)
從資料庫的備份策略角度分:
差異備份:備份那些自從上次完全備份之後被修改過的檔案,只備份資料庫部分的內容。它比最初的完全備份小,因為只包含自上次完全備份以來所改變的資料庫。它的優點是儲存和恢復速度快。
增量備份:只有那些在上次完全備份或者增量備份後被修改的檔案才會被備份,備份的頻率取決於資料更新頻率。
mysqldump工具
mysqldump:常用於做溫備,所以需要對想備份的資料施加讀鎖(非線上不需要加鎖)。
讀鎖--lock-all-tables:是對要備份的資料庫的所有表施加讀鎖。
--lock-table:僅對單張表施加讀鎖,即使是備份整個資料庫,它也是在我們備份某張表的時候才對該錶施加讀鎖,因此適用於備份單張表。
#施加鎖,表示把位於記憶體上的表統統都同步到磁碟上去,然後施加讀鎖
mysql>flush tables with read lock;#釋放讀鎖
mysql>flush tables with read lock;"""但這對於innodb儲存引擎來講,雖然你也能夠請求道讀鎖,但是不代表它的所有資料都已經同步到磁碟上,因此當面對innodb的時候,我們要使用。"""mysql>show engine innodb status;#看看innodb所有的資料都已經同步到磁碟上去了,才進行備份操作。
備份資料
找到mysql物理檔案儲存位置,一般預設在 /var/lib/mysql 目錄下。
可以看到我建立的daili庫,在這個資料夾下,執行下面命令進行備份。
mysqldump -uroot -p123456 daili >/root/daili.sql#如需同時備份多個資料庫
mysqldump -uroot -p123456 daili01 daili02 >/root/daili.sql#如需將全部資料庫備份
mysqldump -uroot -p123456 --opt --all-databases >/root/daili.sql#表結構進行備份
mysqldump -u root -p123456 -d daili tb_system> /opt/desc-tb_system.sql #備份daili庫下的tb_system表結構
恢復資料
如果想恢復資料,必須將原來的資料刪除,才能導回。步驟:刪除daili庫、新建乙個daili庫、執行恢復命令。
#將備份在root下的daili.sql還原進daili庫
mysql -uroot -p123456 daili < /root/daili.sql
更多方法更新中。。。。。。。。。。
mysql備份 MySQL備份指令碼
第乙個指令碼 bin bash mysql備份指令碼bak dir data backup date y m d mysqldb 資料庫名mysqluser 使用者mysqlpwd 密碼mysqlcmd usr bin mysqldumpmysqlser 資料庫伺服器mysqlport 埠if d ...
mysql月備份 MySQL 備份
備份資料庫 匯出全部資料庫 all databases,a 匯出幾個資料庫。引數後面所有名字參量都被看作資料庫名 databases,b 匯出儲存過程以及自定義函式 routines,r 匯出事件 events,e 不緩衝查詢,直接匯出到標準輸出。預設為開啟狀態,使用 skip quick取消該選項...
MYSQL備份 完全備份
mysql完全備份分為兩種 1 物理備份 通過cp,tar等命令拷貝資料庫的所有檔案,然後把這些檔案轉移到另一台資料庫備份伺服器上 使用scp 修改這些檔案的所有者以及所有組 chown r mysql mysql 把檔案放到對應的目錄下,然後重啟mysql服務。移檔案之前注意停止mysql服務 l...