2.5.1 MySQL数据库备份恢复基础讲解
生活随笔
收集整理的這篇文章主要介紹了
2.5.1 MySQL数据库备份恢复基础讲解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
MySQL數據庫備份恢復基礎
MySQL常見的故障類型
對于用戶來說,數據庫中保存的數據通常至關重要,所以要采取各種手段來防止各種可能的數據損失和數據故障。 DBA主要任務就是維持數據庫的高可靠性運行,盡量提高數據庫的連續可用時間,降低數據庫的平均恢復時間,最小化故障時的數據損失及業務影響。 在數據庫環境中,常見故障類型: 語句失敗,用戶進程失敗,用戶錯誤 實例失敗,介質故障,網絡故障 其中最為嚴重的故障主要是用戶錯誤和介質故障。 數據庫管理員(DBA)的目標是確保數據庫處于可用狀態,從而當用戶需要時可提供使用。要實現這個目標,DBA需要做的事: 1.預計導致出現故障的常見原因并努力避免出現這些原因 2.努力提高平均故障間隔時間(MTBF),確保硬件盡量可靠,也就是通過冗余方式保護關鍵組件,定期執行操作系統維護,如主從,集群,容災 3.減少平均恢復時間(MTTR),提前確定恢復過程方案并配置備份,以便在需要時隨時可用。 4.最大程度地減少丟失數據。 DBA可按照接受的最佳方案配置數據庫,以便永遠不丟失提交的事務處理。 故障類別-可分為以下幾類: ◆語句錯誤:單個數據庫操作(選擇、插入、更新或刪除)失敗,軟件邏輯問題。 ◆用戶進程錯誤:單個數據庫會話失敗,一般不需要干預,分析日志觀察。 ◆網絡故障:與數據庫的連接斷開,如:網卡壞,網絡配置問題。 ◆用戶錯誤用:戶成功完成操作但是操作不正確(刪了表,或輸入錯誤數據) ◆實例錯誤:實例意外關閉,看 error日志。 ◆介質故障:丟失了—個或多個數據庫文件(OS、文件系統、硬盤、存儲、主機)。MySQL備份的重要性
在MySQL數據庫維護中,備份與恢復是重中之重的問題,雖然有很多時候數據庫系統運行比較慢,但是對數據庫的數據丟失來說,顯然數據丟失的損失是最大的,也是一個企業的生命價值所在。 對關鍵業務數據進行持續定期的備份是恢復策略中的一個重要部分。 如果你只把它作為事后彌補,或者每年審計表中的應付,那么丟失關鍵數據的風險就會明顯增加。 因此,制定一套嚴格遵循規范的數據保護規則就顯得十分重要,這套規則應由一系列清晰的備份策略所定義,I和相關業務人員可以緊密地跟蹤監控。 通常來講,備份策略中一般包含磁盤或磁帶上初始數據的全備份,配合之后毎天的增量或差異備份。 無論采取哪種方式,至少要保持兩份備份拷貝,一份用于在線恢復,另一份則保留在離線環境中。 這樣,如果數據中心發生洪水、火災或其它災害事故,離線拷貝可用作恢復的最后手段。什么情況下會用到備份呢?
1)災難恢復 2)用于單位審計:數據庫在過去某一個時間點是什么樣的。 3)跨機房的災備,需要備份數據到遠端程序。 4)人為的DDI或者是DML的語句,導致主從庫的數據消失 5)用于業務測試。 根據服務器狀態來分,可將其分為冷備份、溫備份和熱備份三大類 冷備份(離線備份;讀、寫操作均中止) 備份系統未安裝或未配置成與當前使用的系統相同或相似的運行環境,應用系統數據沒有及時裝入備份系統。一旦發生災難,需安裝配置所需的運行環境,用數據備份介質(磁帶或光盤)恢復應用數據,手工逐步或自動批量追補孤立數據,將終端用戶通過通訊線路切換到備份系統,恢復業務運行。 優點:設備投資較少,節省費用,對環境要求不高。 缺點:恢復時間較長,一般要數天至1周,數據完整性與一致性較差。 溫備份(僅可以執行讀操作) 將備份系統已安裝配置成與當前使用的系統相同或相似的系統和網絡運行環境,安裝了應用系統業務定期備份數據。一旦發生災難,直接使用定期備份數據,手工逐步或自動批量追補孤立數據或將終端用戶通過通訊線路切換到備份系統,恢復業務運行。 優點:設備投資較少,對環境要求不高。 缺點:恢復時間長,一般要十幾個小時至數天,數據完整性與一致性較差。 熱備份(讀、寫不受影響) 備份處于聯機狀態,當前應用系統通過高速通信線路將數據實時傳送到備份系統,保持備份系統與當前應用系統數據的同步;也可定時在備份系統上恢復應用系統的數據。一旦發生災難,不用追補或只需追補很少的孤立數據,備份系統可快速接替生產系統運行,恢復營業。 優點∶恢復時間短,一般幾十分鐘到數小時,數據完整性與一致性最好,數據丟失可能性最小。 缺點:設備投資大,費用高,對環境要求高,平時運行管理較復雜。 總結: 冷備份服務器( cold server)是在主服務器丟失的情況下才使用的備份服務器。冷備份服務器基本上只在軟件安裝和配置的情況下打開,然后關閉直到需要時再打開。 溫備份服務器( Warm server)一般都是周期性開機,根據主服務器內容進行更新,然后關機。經常用溫備份服務器來進行復制和鏡像操作 熱備份服務器( hot server)時刻處于開機狀態,同主機保持同步。當主機失靈時,可以隨時啟用熱備份服務器來代替。MySQL備份的分類
按照備份后產生的副本文件是否可以編輯,可分為邏輯備份、物理備份。 1、物理備份: 物理備份產生的數據副本都是二進制文件,常常不可編輯,例如數據庫的二進制日志。 備份特點: 1)由數據庫文件和目錄組成,是mysql數據目錄的全部或者部分 2)一般備份比邏輯備份快,因為純屬是文件復制,不用像邏輯備份那樣,需要做sql的轉換; 3)備份的粒度比邏輯備份小,因為是全文件復制了,當然比sql要精確一些; 4)物理備份的文件可以不僅是數據庫,還可以是數據庫的日志,配置文件;物理備份(復制數據文件):
物理備份就是把 MYSQL存儲好的所有文件保存下來。比如創建一個數據庫db之后,mysql會在 datadir/目錄下面創建一個db的目錄,那么這個目錄下面的 所有文件保存下來,就是物理備份。 適用: 物理備份適用于大數據量的備份,比如你有百G級、TB級的數據,那你就適合使用物理備份; 備份方法 1.文件系統命令:cp,scp, tar, rsync; 2.MySQL是關備份軟件;系統快照 snapshot;邏輯備份(將數據導出至文本文件中):
邏輯備份就是把數據庫的結構定義語句,數據內容的插入語句,全部存儲下來。然后恢復的時候,在另一個mysql服務器執行這些語句,就可以創建另一個與之前一樣的數據庫了。備份后,數據庫管理員通常可以直接査看和編輯副本文件中的內容。 適用:這種比較適合數據量少的數據庫。 備份方法: 1.如,使用 mysqldump等程序可以把對遠程/本地數據庫進行邏輯備份 2.SELECT… INTO OUTFILE可以把數據進行邏輯備份,但備份文件只能存儲在 mysql- server的機器上; 邏輯備份特點 1)邏輯備份通過查詢數據庫的信息進行備份; 2)速度比較慢。因為獲取了信息,然后組裝成sql語句,如果調用命令是遠程,還要把sql語句遠程傳輸 3)備份文件要比物理備份小; 4)備份粒度只能到表 5)沒有日志或者配置文件; 6)備份文件是sql語句,邏輯語句,相對來說,可移植性要好。比如我在inux備份了,可以在 windows進行恢復,物理備份就不行;從數據收集來分,將數據備份分為完全備份、增量備份、差異備份。
1、完全備份: 完全備份是一個完整的數據備份,僅僅依靠該副本文件就可以將數據庫恢復到某個正確的狀態。如果不借助熱備份工具,完全備份可能需要停止MySQL服務。此時MySQL將無法提供服務,在真實的業務場景中,很少真正使用完全備份。 恢復:全備即可 2、增量備份 增量備份是指在完全備份的基礎上,對更新的數據進行備份,恢復時需要借助完全備份產生的副本文件。目前,MySQL還沒有提供真正的增量備份工具,非常菜。 簡單直接:僅備份自上一次完全備份或增量備份以來變化的那些數據; 恢復:恢復周五:全備+周一+周二+周三+周四+周五 3、差異增量: 僅備份自上一次完全備份以來變量的那部數據。 恢復:如果至周五,全備+周五的日志。MySQL備份都備份什么?
MySQL-般備份以下幾個部分: 1.數據文件 2.日志文件(比如事務日志,二進制日志) 3.存儲過程,存儲函數,觸發器 4.配置文件(十分重要,各個配置文件都要備份) 5.用于實現數據庫備份的腳本MySQL備份工具簡介
1) MySQLdump(單線程)/mysqlpump(多線程) mysql服務帶的備份工具,是一種邏輯備份工具,它支持以下方式備份: 完全、部分備份; InnoDB:熱備; MyISAM:溫備 2) mydumper 開源,是 mysqldump 的一個衍生,速度在兩者之間。 3)cp/tar lvm2:快照(請求一個全局鎖),之后立即釋放鎖,達到幾乎熱備的效果;物理備份; 注意:不能僅備份數據文件;要同時備份事務日志; 前提:要求數據文件和事務日志位于同一個邏輯卷; 4) innobackup[收費] /Xtrabackup[免費] 由 Percona提供,開源工具,支持對 iNnodB做熱備,物理備份工具;完全備份、部分備份;完全備份、增量備份;完全備份、差異備份; 5) mysqlhotcopy物理備份工具,但只支持 MyISAM引擎,基本上屬于冷備的范疇,物理備份,速度比較快。 6)主從復制 7)官方 mysql enterprise backup備份軟件,收費。 8)NBU等第三方備份廠家。企業場景全量和增量的使用方法是怎樣做的呢?
1)中小公司,全量一般是每天一次,業務流量低谷執行的是全備,備份時會鎖表。 2)單臺數據庫,如果增量。使用 rsync(配合定時任務頻率大點或者 inotify,主從復制),把所有的 binlog備份到遠程服務器,盡量做主從復制。 3)大公司,周備,每周六00點一次全量,下周日-下周六00點前都是增量。 優點:節省備份時間,減小備份壓力。缺點:增量的 binlog文件副本太多,還原會很麻煩 4)一主多從,會有一個從庫做備份,延遲同步。MySQL備份策略
備份策略是一項事先定義的明確的時間表,確保在遇到意外刪除、錯誤信息覆蓋或其它形式存儲中斷時數據仍可恢復。 這類策略通常對環境中的大部分服務器會有默認的保護方案,并對一些關鍵業務應用或數據制定額外的策略。 比如,對于所有業務應用數據的默以備份策略可能是在周-到周五,毎晩備份到磁帶,一套磁帶會放在本地用于快速的本地恢復,而另一套副本數據則會放在安全的外地 MySQL如何制定合適的備份策略保證高效備份 備份就像是天氣一樣常常作為話題被人提起——“人人都在討論備份問題”,但和天氣不一樣的是,天氣是我們無力改變的,是晴是雨我們只能看老天爺的心情如何了,但備份上面的很多問題是可以通過備份管理員的努力來解決的。 備份策略對于企業來說比較復雜,企業在確定備份策略的時候需要考慮: 一、備份周期:指的是兩次備份之間的時間間隔。 二、備份方式:設置備份周期的同時需要考慮的問題包括采用何種備份方式。 三、自動/手動備份 四、備份介質 五、保證良好的一致性 六、備份成本:如費用、時間、性能開銷 七、恢復成本:如費用、時間、所能夠容忍丟失的數據量 MySQL一般情況下有幾種策略。 策略一: 直接拷貝數據庫文件(文件系統備份工具c)(適合小型數據庫,是最可靠的) 策略二 mysqldump備份數據庫(完全備份+增加備份,速度相對較慢,適合中小型數據庫)(MyISAM是溫備份, InnoDB是熱備份) 策略三: Xtrabackup && lvs 快照從物理角度實現幾乎熱備的完全備份,配合二進制日志備份實現增量備份,速度快適合比較煩忙的數據庫MySQL數據災難恢復的情況
1、系統崩潰只剩下數據文件的情況下的恢復,甚至數據庫文件不存在而只有損壞的備份文件情況下得恢復,或者數據有丟失, binlog丟失恢復。 2、誤 delete數據恢復、誤刪除表恢復(drop)、 truncate表恢復等。以及 myd/rm文件, ibd ibdata1文件變成0字節。 3、各種MySql錯誤的修復:如mysql無法啟動,事務死鎖, ibdata1文件無法啟動等等 4、MySq數據庫中數據文件 Kibata1和ibd出現壞塊情況下的恢復。 5、MySql數據文件被誤刪除情況下的恢復。被覆蓋的情況或者被老備份還原的恢復。 6、磁盤陣列上崩潰導致的mysql數據庫無法恢復或者嚴重損壞的修復。 7、ibdata1文件丟失或被覆蓋,IBD表文件丟失以及被覆蓋的情況。MySQL數據恢復的核心思想
1)流程制度的控制。 2)盡量不破壞原有環境。 3)業務需求的容忍度,可量化的目標,根據需求選擇停庫或鎖表或者容忍丟失部分數據。MySQL備份恢復的驗證
備份文件有了之后還需要對其定期的進行恢復測試,不然可能是白忙一場。因為很多情況下,有些備份文件可能已經損壞。當我們遇到數據丟失故障時,在緊急關頭,竟然發現備份的文件無法恢復或者數據致性和完整性沒有達到要求,如果我們定期的對備份文件進行恢復測試,這種悲劇可能就不會發生。 1、恢復時間及地點 每周進行次恢復測試,主要在測試機上進行 2、恢復方式 模擬某個時間點主機數據全部丟失,要求恢復到丟失時間點的所有數據,先進行全備恢復,然后根據 binlog恢復到最近時間點。 作為一名DBA,干萬不要忽視數據備份和恢復測試的重要性。總結
以上是生活随笔為你收集整理的2.5.1 MySQL数据库备份恢复基础讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.5.2 MySQL二进制日志介绍
- 下一篇: 28 | 案例篇:一个SQL查询要15秒