主頁(yè) > 知識(shí)庫(kù) > 淺析MySQL 備份與恢復(fù)

淺析MySQL 備份與恢復(fù)

熱門(mén)標(biāo)簽:許昌外呼增值業(yè)務(wù)線路 申請(qǐng)400電話電話價(jià)格 廣東400企業(yè)電話申請(qǐng)流程 石家莊400電話辦理公司 臨沂做地圖標(biāo)注 新鄉(xiāng)智能外呼系統(tǒng)好處 宜賓全自動(dòng)外呼系統(tǒng)廠家 地圖標(biāo)注客戶付款 咸陽(yáng)防封電銷(xiāo)卡

1、簡(jiǎn)介

數(shù)據(jù)無(wú)價(jià),MySQL作為一個(gè)數(shù)據(jù)庫(kù)系統(tǒng),其備份自然也是非常重要且有必要去做。備份的理由千千萬(wàn),預(yù)防故障,安全需求,回滾,審計(jì),刪了又改的需求等等,備份的重要性不言而喻。除了備份本身, 如何使用備份來(lái)恢復(fù) 服務(wù)也是一項(xiàng)重點(diǎn)內(nèi)容,不能用來(lái)恢復(fù)的備份沒(méi)有意義。本文主要會(huì)針對(duì)備份和恢復(fù)這兩方面做一些簡(jiǎn)單的介紹。

本文為《高性能MySQL》備份相關(guān)章節(jié)的讀書(shū)筆記。

2、備份和恢復(fù)的簡(jiǎn)單定義

正如簡(jiǎn)介所說(shuō),備份人盡皆知,也很容易引起人的重視。根據(jù)需求寫(xiě)定期腳本,或者使用其他方式都是比較常見(jiàn)的。但是恢復(fù)就沒(méi)有那么引人注目了。比如說(shuō),也許會(huì)每周/每天定期進(jìn)行自動(dòng)備份。但是多久會(huì)進(jìn)行一次備份的恢復(fù)測(cè)試?備份的內(nèi)容是否完成?是否可用于恢復(fù)?如果出現(xiàn)故障,恢復(fù)的流程是否易操作?

備份只是數(shù)據(jù)源, 如何使用數(shù)據(jù)源 , 徹底恢復(fù)系統(tǒng) 這個(gè)過(guò)程。也非常重要。備份與恢復(fù),都是MySQL運(yùn)維中需要掌握的內(nèi)容。

備份的意義在于恢復(fù)。如果不能恢復(fù),那就不叫備份(比如RAID陣列不是備份,如果DROP DATABASE,RAID陣列不能恢復(fù))

[還原] 和 [恢復(fù)] 的區(qū)別:

  • 還原:僅指將備份文件中的內(nèi)容提取出來(lái)并加載。
  • 恢復(fù):包括還原備份文件在內(nèi)的一系列措施,目的是讓服務(wù)恢復(fù)正常運(yùn)行,比如重啟MySQL,修改配置等其他操作 。

也就是說(shuō),恢復(fù)是要恢復(fù)到異常出前,采取的所有操作(比如修改參數(shù),重啟服務(wù)等)。不僅僅只是還原備份。

3、恢復(fù)計(jì)劃需要考慮的幾個(gè)因素

恢復(fù)計(jì)劃在設(shè)計(jì)的時(shí)候,需要考慮一些因素,從而根據(jù)不同的需求進(jìn)行更好的規(guī)劃??梢愿鶕?jù)RPO(恢復(fù)點(diǎn)目標(biāo))和RTO(恢復(fù)時(shí)間目標(biāo))這兩個(gè)需求來(lái)協(xié)助制定合適的恢復(fù)策略。

  • RPO(恢復(fù)點(diǎn)目標(biāo)):可以容忍丟失多少數(shù)據(jù)?(需要恢復(fù)所有數(shù)據(jù),還是能容忍上一次備份以來(lái)的數(shù)據(jù)丟失?)
  • RTO(恢復(fù)時(shí)間目標(biāo)):需要等待多久將數(shù)據(jù)恢復(fù)?(用戶能接受到什么程度)

也許還需考慮:需要恢復(fù)什么?(整個(gè)服務(wù)器,單個(gè)庫(kù),單個(gè)表,還是事務(wù))

其次,恢復(fù)計(jì)劃需要定期進(jìn)行測(cè)試,抽出數(shù)據(jù)測(cè)試備份確實(shí)有效、實(shí)際進(jìn)行一次完整的備份恢復(fù),熟悉整個(gè)恢復(fù)流程,確保真正發(fā)生問(wèn)題時(shí),可以有條不紊的完成恢復(fù)。

4、備份

4.1、備份內(nèi)容包括什么?

最簡(jiǎn)單的策略就是 只備份數(shù)據(jù)和表定義 。但是恢復(fù)數(shù)據(jù)庫(kù)需要更多內(nèi)容,如果能備份的越充足,那么恢復(fù)起來(lái)也就更容易。(主要還是 根據(jù)需求 )

比如可以根據(jù)實(shí)際情況,考慮備份如下內(nèi)容:

1、Binlog和InnoDB事務(wù)日志。

2、主/從庫(kù)配置文件。

3、數(shù)據(jù)庫(kù)操作系統(tǒng)配置(cron、腳本、內(nèi)核參數(shù))

或者說(shuō),根據(jù)需要進(jìn)行備份內(nèi)容的擴(kuò)展。如果對(duì)于數(shù)據(jù)庫(kù)恢復(fù)、甚至重建有很高需求(比如要求更快恢復(fù)),那么備份更多的內(nèi)容也必不可少。如果需要有從0恢復(fù)數(shù)據(jù)庫(kù)的能力,那需要做更多工作。

4.2、物理備份與邏輯備份

備份種類(lèi) 邏輯備份 物理備份
簡(jiǎn)介 利用mysqldump等命令實(shí)現(xiàn)備份 直接復(fù)制數(shù)據(jù)庫(kù)文件
優(yōu)點(diǎn) 可以文本編輯,恢復(fù)簡(jiǎn)單,使用mysqldump備份靈活。 足夠直觀,備份和恢復(fù)過(guò)程,本質(zhì)上就是文件的移動(dòng)?;謴?fù)速度更快。MySQL服務(wù)器幾乎不需要執(zhí)行操作。
缺點(diǎn) 備份和恢復(fù)都需要MySQL服務(wù)參與、且占用CPU資源。有可能很慢 InnoDB的原始文件通常比邏輯備份大得多。

物理備份和邏輯備份的一點(diǎn)抉擇:

  • 對(duì)于大數(shù)據(jù)庫(kù),必須有物理備份。邏輯備份太慢,也可考慮基于快照的備份做輔助。
  • 對(duì)于小數(shù)據(jù)庫(kù),邏輯備份幾乎就可以了。

物理備份簡(jiǎn)單高效,邏輯備份盡量也要做。【兩者都要有,看具體需求和資源分配】

其次:除非經(jīng)過(guò)測(cè)試,否則不能假設(shè)備份可用。比如使用 mysqlcheck -A 測(cè)試數(shù)據(jù)庫(kù)。

4.3、Binlog備份

Binlog也是備份中的重要一環(huán),因?yàn)榛跁r(shí)間點(diǎn)的恢復(fù)需要用到它。而且Binlog一般很小,頻繁的備份也較容易實(shí)現(xiàn)。如果有某個(gè)時(shí)間點(diǎn)的數(shù)據(jù)備份,加上自那以后的所有Binlog,就可以回滾所有變動(dòng)。

4.3.1、備份Binlog的一些策略

FLUSH LOGS
--log_slave_updata

需要注意的是,expire_log_days是通過(guò) 日志文件的修改時(shí)間 來(lái)判斷的,而不是內(nèi)容。(如果一直只有一個(gè)Binlog文件,可能就不會(huì)清理)。所以一定要使用 FLUSH LOGS 定期刷新Binlog。

4.3.2、老Binlog的清理

最好使用expire_log_days來(lái)進(jìn)行自動(dòng)的清理,保留一定天數(shù)。如果需要用cron清理。那么 不要使用 find+rm配置的cron清理日志。

0 3 * * * /usr/bin/mysql /var/log/mysql -mtime +N -name "mysql-bin.[0-9]"* | xargs rm

使用如下cron代替:

0 3 * * * /usr/bin/mysql -e "PURGE MASTER LOGS BEFORE CURRENT_DATE - INTERVAL N DAY"

4.3.3、Binlog備份的幾點(diǎn)注意事項(xiàng)

  • 增長(zhǎng)保存時(shí)間只是一種配置,不代表Binlog本身就不需要備份。Binlog仍然需要定期備份,以便可以結(jié)合最近的備份使用。
  • 需要注意的是,從庫(kù)也使用Binlog。所以需要 區(qū)分從庫(kù)和備份的Binlog管理 。

4.4、增量備份與差異備份

增量備份:自任意類(lèi)型備份后,改動(dòng)的所有內(nèi)容的備份。

差異備份:特指自上次 全備份 之后,改動(dòng)的所有內(nèi)容的備份。

也就是說(shuō),差異備份基于全備份。而增量備份基于任意備份(比如某一個(gè)指定的差異備份。

差異備份可選項(xiàng):

  • 不要備份沒(méi)有改變的表。
  • 不要備份沒(méi)有改變的行

雖然這樣做差異備份可以提高恢復(fù)速度。但是全備份還是很有必要的。( 全備份可以頻率低,但是必須有 )。

4.5、從庫(kù)備份

在從庫(kù)中備份,有時(shí)候是一個(gè) 可選項(xiàng) ,不會(huì)干擾到主庫(kù),避免給主庫(kù)增加更多的負(fù)載。其次,當(dāng)計(jì)劃從從庫(kù)備份的時(shí)候,要保存更多信息,比如從庫(kù)相對(duì)于主庫(kù)的位置(偏移)等。

首先 從庫(kù)不等于備份 ,從庫(kù)和主庫(kù)數(shù)據(jù)不匹配是很常見(jiàn)的。其次、從從庫(kù)備份確實(shí)可以減輕主庫(kù)備份時(shí)的負(fù)載,但是不夠好。穩(wěn)定起見(jiàn),還是建議進(jìn)行主庫(kù)備份、全備份。

4.6、其他注意事項(xiàng)

4.6.1、在線備份與離線備份

離線備份是最簡(jiǎn)單最安全的。也是一致性最好的。問(wèn)題就是,大部分?jǐn)?shù)據(jù)庫(kù)不能接受停機(jī)備份。所以基本還是用在線備份,或者說(shuō)不停機(jī)備份

可以考慮在業(yè)務(wù)低峰期進(jìn)行在線備份,即使負(fù)載增大也不會(huì)有太大影響。

4.6.2、數(shù)據(jù)一致性

數(shù)據(jù)一致性:對(duì)于多個(gè)表之間數(shù)據(jù)的一致性要求。(比如兩個(gè)邏輯相關(guān)的操作分在了兩個(gè)事務(wù)內(nèi),而備份在兩個(gè)事務(wù)之間執(zhí)行,就會(huì)導(dǎo)致數(shù)據(jù)不一致)

InnoDB可以在轉(zhuǎn)儲(chǔ)一組相關(guān)表的時(shí)候,開(kāi)始一個(gè)事務(wù),這樣可以很大程度上保證數(shù)據(jù)的一致性。

但是也要注意,如果事務(wù)設(shè)置的不合理,比如一組相關(guān)表的修改分在了兩個(gè)事務(wù)內(nèi),這仍然會(huì)導(dǎo)致數(shù)據(jù)不一致。( 一組表的相關(guān)操作需要確保在一個(gè)事務(wù)內(nèi) )

4.6.3、定期進(jìn)行備份恢復(fù)測(cè)試,確認(rèn)整個(gè)恢復(fù)過(guò)程需要的資源

能恢復(fù)的備份才有價(jià)值,不是有備份就可以

小結(jié)

本文講解了一些備份的基本知識(shí)和概念,包括一些基本概念、恢復(fù)的重要性、備份和恢復(fù)的簡(jiǎn)單策略。還提及到了備份內(nèi)容的選擇、差異/增量備份、Binlog備份等。后續(xù)還需要繼續(xù)學(xué)習(xí),了解備份和恢復(fù)的具體操作方法和實(shí)踐。

以上就是淺析MySQL 備份與恢復(fù)的詳細(xì)內(nèi)容,更多關(guān)于MySQL 備份與恢復(fù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • MySQL 邏輯備份與恢復(fù)測(cè)試的相關(guān)總結(jié)
  • 詳解Mysql之mysqlbackup備份與恢復(fù)實(shí)踐
  • MySQL5.7 mysqldump備份與恢復(fù)的實(shí)現(xiàn)
  • 詳解mysql的備份與恢復(fù)
  • MySQL系列之十二 備份與恢復(fù)

標(biāo)簽:北京 臺(tái)灣 日照 貴州 合肥 阜新 鷹潭 鎮(zhèn)江

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺析MySQL 備份與恢復(fù)》,本文關(guān)鍵詞  淺析,MySQL,備份,與,恢復(fù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺析MySQL 備份與恢復(fù)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于淺析MySQL 備份與恢復(fù)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章