MySQL邏輯數(shù)據(jù)恢復(fù)體系的設(shè)計(jì)
對于數(shù)據(jù)恢復(fù)來說,現(xiàn)在其實(shí)缺少一些有效的使用場景來更好的體現(xiàn)業(yè)務(wù)價值,于是我們就重新考慮了下現(xiàn)有的備份支持能力。
備份體系的支持能力
粒度 |
備份類型 |
備份模式 |
實(shí)例 |
全量備份 |
物理備份 |
實(shí)例 |
增量備份 |
物理備份 |
實(shí)例 |
日志備份 |
獨(dú)立服務(wù) |
數(shù)據(jù)庫 |
對象備份 |
物理備份 |
其實(shí)對象層面的數(shù)據(jù)恢復(fù)能力是很重要的,而且對于業(yè)務(wù)側(cè)有很多種使用方式。整體的數(shù)據(jù)恢復(fù)流程如下:
如何規(guī)劃和設(shè)計(jì)邏輯備份恢復(fù)體系,經(jīng)過部分討論,我做了如下的初版設(shè)計(jì)。
1.數(shù)據(jù)備份
其中邏輯備份恢復(fù)主要面向兩個維度:
實(shí)例級別:實(shí)現(xiàn)表結(jié)構(gòu),表結(jié)構(gòu)+數(shù)據(jù) 備份
庫/表級別:實(shí)現(xiàn)表結(jié)構(gòu),表結(jié)構(gòu)+數(shù)據(jù) 備份
目前的邏輯備份恢復(fù)的支持范圍:
1)數(shù)據(jù)庫主從拓?fù)潢P(guān)系的實(shí)例,邏輯備份操作根據(jù)拓?fù)潢P(guān)系需要在相應(yīng)的從庫端執(zhí)行
2)單實(shí)例節(jié)點(diǎn),邏輯備份操作在單實(shí)例節(jié)點(diǎn)執(zhí)行,需要評估備份容量和負(fù)載等信息
目前不支持基于中間件MyCAT的節(jié)點(diǎn)
對于輸入為域名或者M(jìn)aster IP的信息,需要通過拓?fù)潢P(guān)系轉(zhuǎn)化為相應(yīng)的從庫或者單實(shí)例的IP信息
對于庫表文件的備份,可以設(shè)定如下的規(guī)則:
1)單表數(shù)據(jù)量小于5000萬或者表容量在10G以內(nèi)的表,可以支持邏輯備份,此外需要相應(yīng)的提示,盡可能避免此類操作
2)選擇備份的數(shù)據(jù)庫容量在30G以內(nèi),此外需要相應(yīng)的提示避免此類操作
需要后端提供相應(yīng)的庫,表 存儲容量/數(shù)據(jù)量相關(guān)的元數(shù)據(jù)信息(估算容量即可,不需要精確值),目前可以通過生命周期管理中的數(shù)據(jù)庫基線和數(shù)據(jù)表基線元數(shù)據(jù)支持
對于備份時長的評估,目前可以提供如下的遞增區(qū)間:
1)備份容量在500M以內(nèi),顯示預(yù)計(jì)完成時間在5分鐘以內(nèi)
2)備份容量在2G以內(nèi),顯示完成時間在10分鐘以內(nèi)
3)備份容量在10G以內(nèi),顯示完成時間在20分鐘以內(nèi)
4)備份容量在30G以內(nèi),顯示完成時間在30分鐘以內(nèi)
在備份完成后,可以提供相應(yīng)的即時通訊提示告知業(yè)務(wù)側(cè)備份操作已完成
備份生成的文件需要在指定的備份機(jī)存儲,按照如下的目錄規(guī)則進(jìn)行存放
備份機(jī)BASE目錄:/data/logical_backup/
備份機(jī)中實(shí)例的備份目錄:
- [Slave_IP]_[port]/[YYYYmmdd]/
相應(yīng)的備份文件命名規(guī)則:
- [Slave_IP]_[port]_[db_name]_[YYYYmmdd]_[hhmiss]_[username].sql
數(shù)據(jù)備份后需要生成相應(yīng)的配置文件,數(shù)據(jù)格式為JSON,在數(shù)據(jù)恢復(fù)時可以進(jìn)行相應(yīng)數(shù)據(jù)格式的解析和顯示。
備份文件的保留周期目前暫定為7天,需要在備份時有相應(yīng)的提示。
2.數(shù)據(jù)恢復(fù)
數(shù)據(jù)恢復(fù)是業(yè)務(wù)自助發(fā)起,而且相關(guān)的數(shù)據(jù)恢復(fù)資源具有使用時限,目前暫定為2天,2天后相應(yīng)的數(shù)據(jù)和權(quán)限會進(jìn)行相應(yīng)的回收,會有相應(yīng)的資源回收提示,同時需要在使用中進(jìn)行相關(guān)提示。
數(shù)據(jù)恢復(fù)粒度基于備份數(shù)據(jù)文件中指定的對象(數(shù)據(jù)庫,表)粒度,如業(yè)務(wù)同學(xué)A備份了表db1.table1,db1.table2,則不能僅恢復(fù)db1.table1,恢復(fù)工作會直接恢復(fù)db1.table1,db1.table2
數(shù)據(jù)恢復(fù)文件的選擇需要考慮相關(guān)的權(quán)限,如業(yè)務(wù)同學(xué)A備份了表db1.table1,db1.table2,業(yè)務(wù)同學(xué)B備份了表db2.table3,db2.table4,則在選擇備份文件中,應(yīng)該彼此不可見。
如果對于同一個數(shù)據(jù)庫需要進(jìn)行多次數(shù)據(jù)恢復(fù),則可以根據(jù)服務(wù)器的資源配比進(jìn)行動態(tài)的調(diào)配,比如一個數(shù)據(jù)恢復(fù)服務(wù)器中有4個實(shí)例,端口分別是4306-4309,業(yè)務(wù)同學(xué)在使用中可以相應(yīng)的恢復(fù)4次,在實(shí)際使用中需要根據(jù)使用的頻率和情況進(jìn)行資源的擴(kuò)展,后續(xù)應(yīng)該為一個數(shù)據(jù)恢復(fù)服務(wù)器組
在數(shù)據(jù)恢復(fù)中,需要恢復(fù)到哪一個實(shí)例,由后端提供相應(yīng)的調(diào)度邏輯進(jìn)分配
對于數(shù)據(jù)恢復(fù)后的使用,可以提供一體化服務(wù),由業(yè)務(wù)側(cè)使用客戶端工具如workbench進(jìn)行連接和使用,權(quán)限開通的部分,需要根據(jù)用戶的域名信息得到辦公機(jī)的IP地址,進(jìn)行相關(guān)數(shù)據(jù)庫權(quán)限的開通,開通后有對應(yīng)的即時通訊提示。
數(shù)據(jù)庫層的權(quán)限開通,如果數(shù)據(jù)庫用戶已經(jīng)存在,則進(jìn)行相應(yīng)的權(quán)限補(bǔ)充,如果數(shù)據(jù)庫用戶不存在,則需要在指定的實(shí)例中創(chuàng)建用戶,并分配相應(yīng)的權(quán)限
整個備份數(shù)據(jù)的使用,需要考慮到便利性和安全性,可以和安全部進(jìn)行對接,進(jìn)行部分工作的評估和考量。
備份和恢復(fù)的相關(guān)操作和歷史記錄,需要統(tǒng)一存儲和管理
對于數(shù)據(jù)恢復(fù)的相關(guān)日志,為了便于后續(xù)管理和跟蹤,需要在恢復(fù)記錄中記錄備份文件的路徑
本文轉(zhuǎn)載自微信公眾號「楊建榮的學(xué)習(xí)筆記」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系楊建榮的學(xué)習(xí)筆記公眾號。