????????????????????????????????????????MySQL備份與恢復(fù)的解決方案
目錄:
1玖雁、為什么要進(jìn)行備份
2更扁、備份的類型
3、備份需要考慮的因素
4赫冬、需要備份什么數(shù)據(jù)
5浓镜、理論上備份的設(shè)計(jì)方案
7、備份的工具有那些
8劲厌、結(jié)合工具膛薛,實(shí)際的解決方案有那些
一、為什么要進(jìn)行備份
? ? 由于硬件方面的故障(比如:磁盤損壞)补鼻,軟件故障(如:程序出現(xiàn)bug)還有自然災(zāi)害(如:地震)黑客攻擊哄啄,偷竊及人為的操作失誤照成的數(shù)據(jù)損壞雅任,所以要做備份。同時(shí)應(yīng)業(yè)務(wù)要求我們要做一些軟件測試咨跌,就更加表明了備份的需求沪么。
? ? 那么,在做備份時(shí)要做哪些呢锌半?
? ? 1)要清楚的知道公司業(yè)務(wù)最多能容忍丟失多少數(shù)據(jù)禽车。是4個(gè)9還是5個(gè)9都要心里有數(shù),在比如如果是在銀行系統(tǒng)中又如何保證數(shù)據(jù)的完全不丟失拳喻?
? ? 2)公司業(yè)務(wù)對數(shù)據(jù)恢復(fù)完成需要多長是時(shí)間哭当,是兩小時(shí),還是一天冗澈?
? ? 3)需要恢復(fù)那些數(shù)據(jù)呢钦勘?
? ? 在備份后注意那些?比如成功備份后亚亲,突然有一天系統(tǒng)故障彻采,你拿出備份數(shù)據(jù),在那鼓搗捌归,突然發(fā)現(xiàn)肛响,備份數(shù)據(jù)全部損壞。改怎么辦惜索?
所以特笋,在備份完全后,還是不能放松巾兆。要對備份好的數(shù)據(jù)進(jìn)行還原測試猎物。
? ? 還有,在平時(shí)業(yè)務(wù)正常時(shí)要進(jìn)行對備份進(jìn)行演練角塑,對團(tuán)隊(duì)內(nèi)的每個(gè)人進(jìn)行任務(wù)分配蔫磨。畢竟備份時(shí)容易,但在還原時(shí)要考慮的東西比較多圃伶。
二堤如、備份的類型
? ? 1)從數(shù)據(jù) 內(nèi)容上劃分
????????????完全備份:指備份整個(gè)數(shù)據(jù)集。
? ? ? ? ? ? 部分備份:指備份所需要的數(shù)據(jù)子集窒朋。
? ? 2)從時(shí)間中劃分:完全備份搀罢,增量備份,差異備份
完全備份:備份全部數(shù)據(jù)炼邀;
增量備份:僅備份上次完全備份或增量備份以后變化的數(shù)據(jù)魄揉;
差異備份:僅備份上次完全備份以來變化的數(shù)據(jù);
增量備份與差異備份區(qū)別:
? ? 3)從服務(wù)器狀態(tài)劃分
熱備份:讀拭宁、寫不受影響洛退;
溫備份:僅可以執(zhí)行讀操作;
冷備份:離線備份杰标;讀兵怯、寫操作均中止;
????4 )從對象劃分
物理備份:復(fù)制數(shù)據(jù)文腔剂,不能改變存儲(chǔ)引擎媒区;
邏輯備份:將數(shù)據(jù)導(dǎo)出至文本文件中,和存儲(chǔ)引擎無關(guān)
邏輯備份優(yōu)點(diǎn):
在備份速度上兩種備份要取決于不同的存儲(chǔ)引擎
物理備份的還原速度非车快袜漩。但是物理備份的最小力度只能做到表
邏輯備份保存的結(jié)構(gòu)通常都是純ASCII的,所以我們可以使用文本處理工具來處理
邏輯備份有非常強(qiáng)的兼容性湾碎,而物理備份則對版本要求非常高
邏輯備份也對保持?jǐn)?shù)據(jù)的安全性有保證
.邏輯備份的缺點(diǎn):
邏輯備份要對RDBMS產(chǎn)生額外的壓力宙攻,而裸備份無壓力
邏輯備份的結(jié)果可能要比源文件更大。所以很多人都對備份的內(nèi)容進(jìn)行壓縮
邏輯備份可能會(huì)丟失浮點(diǎn)數(shù)的精度信息
物理備份優(yōu)缺點(diǎn):
備份時(shí)間快介褥,但浪費(fèi)磁盤空間
3座掘、備份時(shí)需要考慮的因素
1)備份時(shí)會(huì)對備份內(nèi)容進(jìn)行鎖定,那么需要持鎖多久柔滔?
2)備份需要時(shí)間溢陪,那么備份過程時(shí)長多長?
3)備份時(shí)會(huì)加大CPU調(diào)度、磁盤I/O讀寫睛廊,那么備份是否超負(fù)載形真?
4)公司對數(shù)據(jù)恢復(fù)有時(shí)間是否有要求,如果有那么恢復(fù)時(shí)長多長超全?
4咆霜、需要備份什么數(shù)據(jù)
1)數(shù)據(jù):有完全備份、增量備份卵迂、差異備份
2)日志:二進(jìn)制日志裕便、InnoDB的事物日志
3)其他代碼:比如存儲(chǔ)過程的儲(chǔ)存函數(shù)、觸發(fā)器见咒、事件調(diào)度器還有配置文件
5偿衰、理論上備份的設(shè)計(jì)方案
1)根據(jù)數(shù)據(jù)集是完全備份加增量備份還是完全備份加差異備份?
2)根據(jù)備份手段:是物理備份還是邏輯備份改览?物理備份速度快下翎,但做熱備份難,邏輯備份速度慢但做熱備份容易宝当,如何設(shè)計(jì)视事?
7、備份的工具有那些:
1)Mysql自帶的備份工具
(1)mysqldump 邏輯備份工具庆揩,支持所有引擎俐东,MyISAM引擎是溫備跌穗,InnoDB引擎是熱備,備份速度中速虏辫,還原速度非常非常慢蚌吸,但是在實(shí)現(xiàn)還原的時(shí)候,具有很大的操作余地砌庄。具有很好的彈性羹唠。
(2)mysqlhotcopy 物理備份工具,但只支持MyISAM引擎娄昆,基本上屬于冷備的范疇佩微,物理備份,速度比較快萌焰。
2)文件系統(tǒng)備份工具
(1)cp 冷備份哺眯,支持所有引擎,復(fù)制命令杆怕,只能實(shí)現(xiàn)冷備族购,物理備份。使用歸檔工具陵珍,cp命令寝杖,對其進(jìn)行備份的,備份速度快互纯,還原速度幾乎最快瑟幕,但是靈活度很低,可以跨系統(tǒng)留潦,但是跨平臺(tái)能力很差只盹。
(2)lvm 2幾乎是熱備份,支持所有引擎兔院,基于快照(LVM殖卑,ZFS)的物理備份,速度非撤宦埽快孵稽,幾乎是熱備。只影響數(shù)據(jù)幾秒鐘而已十偶。但是創(chuàng)建快照的過程本身就影響到了數(shù)據(jù)庫在線的使用菩鲜,所以備份速度比較快,恢復(fù)速度比較快惦积,沒有什么彈性空間接校,而且LVM的限制:不能對多個(gè)邏輯卷同一時(shí)間進(jìn)行備份,所以數(shù)據(jù)文件和事務(wù)日志等各種文件必須放在同一個(gè)LVM上狮崩。而ZFS則非常好的可以在多邏輯卷之間備份蛛勉。
3.其它工具ibbackup 商業(yè)工具 MyISAM是溫備份鹿寻,InnoDB是熱備份 ,備份和還原速度都很快董习,這個(gè)軟件它的每服務(wù)器授權(quán)版本是5000美元烈和。xtrabackup 開源工具 MyISAM是溫備份爱只,InnoDB是熱備份 皿淋,是ibbackup商業(yè)工具的替代工具。
八恬试、結(jié)合工具窝趣,實(shí)際的解決方案有那些
1)策略一:直接拷貝數(shù)據(jù)庫文件(文件系統(tǒng)備份工具 cp)(適合小型數(shù)據(jù)庫,是最可靠的)
當(dāng)你使用直接備份方法時(shí)训柴,必須保證表不在被使用哑舒。如果服務(wù)器在你正在拷貝一個(gè)表時(shí)改變它,拷貝就失去意義幻馁。保證你的拷貝完整性的最好方法是關(guān)閉服務(wù)器洗鸵,拷貝文件,然后重啟服務(wù)器仗嗦。如果你不想關(guān)閉服務(wù)器膘滨,要在執(zhí)行表檢查的同時(shí)鎖定服務(wù)器。如果服務(wù)器在運(yùn)行稀拐,相同的制約也適用于拷貝文件火邓,而且你應(yīng)該使用相同的鎖定協(xié)議讓服務(wù)器“安靜下來”。當(dāng)你完成了備份時(shí)德撬,需要重啟服務(wù)器(如果關(guān)閉了它)或釋放加在表上的鎖定(如果你讓服務(wù)器運(yùn)行)铲咨。要用直接拷貝文件把一個(gè)數(shù)據(jù)庫從一臺(tái)機(jī)器拷貝到另一臺(tái)機(jī)器上,只是將文件拷貝到另一臺(tái)服務(wù)器主機(jī)的適當(dāng)數(shù)據(jù)目錄下即可蜓洪。要確保文件是MyIASM格式或兩臺(tái)機(jī)器有相同的硬件結(jié)構(gòu)纤勒,否則你的數(shù)據(jù)庫在另一臺(tái)主機(jī)上有奇怪的內(nèi)容。你也應(yīng)該保證在另一臺(tái)機(jī)器上的服務(wù)器在你正在安裝數(shù)據(jù)庫表時(shí)不訪問它們隆檀。
2)策略二:mysqldump備份數(shù)據(jù)庫(完全備份+增加備份摇天,速度相對較慢,適合中小型數(shù)據(jù)庫)(MyISAM是溫備份刚操,InnoDB是熱備份)
mysqldump 是采用SQL級(jí)別的備份機(jī)制闸翅,它將數(shù)據(jù)表導(dǎo)成 SQL 腳本文件,在不同的 MySQL 版本之間升級(jí)時(shí)相對比較合適菊霜,這也是最常用的備份方法坚冀。mysqldump 比直接拷貝要慢些。對于中等級(jí)別業(yè)務(wù)量的系統(tǒng)來說鉴逞,備份策略可以這么定:第一次完全備份记某,每天一次增量備份司训,每周再做一次完全備份,如此一直重復(fù)液南。而對于重要的且繁忙的系統(tǒng)來說壳猜,則可能需要每天一次全量備份,每小時(shí)一次增量備份滑凉,甚至更頻繁统扳。為了不影響線上業(yè)務(wù),實(shí)現(xiàn)在線備份畅姊,并且能增量備份咒钟,最好的辦法就是采用主從復(fù)制機(jī)制(replication),在 slave 機(jī)器上做備份若未。
3)策略三:lvs快照從物理角度實(shí)現(xiàn)幾乎熱備的完全備份朱嘴,配合二進(jìn)制日志備份實(shí)現(xiàn)增量備份,速度快適合比較煩忙的數(shù)據(jù)庫
前提:
數(shù)據(jù)文件要在邏輯卷上粗合;
此邏輯卷所在卷組必須有足夠空間使用快照卷萍嬉;
數(shù)據(jù)文件和事務(wù)日志要在同一個(gè)邏輯卷上;
4)策略四:xtrabackup 備份數(shù)據(jù)庫隙疚,實(shí)現(xiàn)完全熱備份與增量熱備份(MyISAM是溫備份壤追,InnoDB是熱備份),由于有的數(shù)據(jù)在設(shè)計(jì)之初甚淡,數(shù)據(jù)目錄沒有存放在LVM上大诸,所以不能用LVM作備份,則用xtrabackup代替來備份數(shù)據(jù)庫
說明:Xtrabackup是一個(gè)對InnoDB做數(shù)據(jù)備份的工具贯卦,支持在線熱備份(備份時(shí)不影響數(shù)據(jù)讀寫)资柔,是商業(yè)備份工具InnoDB Hotbackup或ibbackup的一個(gè)很好的替代品。
Xtrabackup有兩個(gè)主要的工具:xtrabackup撵割、innobackupex
xtrabackup 只能備份InnoDB和XtraDB兩種數(shù)據(jù)表贿堰,而不能備份MyISAM數(shù)據(jù)表。
innobackupex 是參考了InnoDB Hotbackup的innoback腳本修改而來的.innobackupex是一個(gè)perl腳本封裝啡彬,封裝了xtrabackup羹与。主要是為了方便的 同時(shí)備份InnoDB和MyISAM引擎的表,但在處理myisam時(shí)需要加一個(gè)讀鎖庶灿。并且加入了一些使用的選項(xiàng)纵搁。如slave-info可以記錄備份恢復(fù)后作為slave需要的一些信息,根據(jù)這些信息往踢,可以很方便的利用備份來重做slave腾誉。
特點(diǎn):
備份過程快速、可靠;
備份過程不會(huì)打斷正在執(zhí)行的事務(wù)利职;
能夠基于壓縮等功能節(jié)約磁盤空間和流量趣效;
自動(dòng)實(shí)現(xiàn)備份檢驗(yàn);
還原速度快猪贪;
5)策略五:主從復(fù)制(replication)實(shí)現(xiàn)數(shù)據(jù)庫實(shí)時(shí)備份(集群中常用)
6)總結(jié)
單機(jī)備份是完全備份(所有數(shù)據(jù)庫文件)+增量備份(備份二進(jìn)制日志)相結(jié)合跷敬!
集群中備份是完全備份(所有數(shù)據(jù)庫文件)+增量備份(備份二進(jìn)制日志)+主從復(fù)制(replication)相結(jié)合的方法!