《解讀華為企業(yè)云RDS技術(shù):如何有效減少運(yùn)維工作量》要點(diǎn):
本文介紹了解讀華為企業(yè)云RDS技術(shù):如何有效減少運(yùn)維工作量,希望對您有用。如果有疑問,可以聯(lián)系我們。
互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,手機(jī)、平板、智能電視等各種輸入終端的普及,讓互聯(lián)網(wǎng)數(shù)據(jù)呈現(xiàn)出爆炸性的增長.面對海量的數(shù)據(jù),如何能以更加穩(wěn)定、快速的方式存儲海量數(shù)據(jù),以及從中挖掘出有價值的信息,成為很多企業(yè)面臨的新課堂.云存儲的出現(xiàn)為數(shù)據(jù)挖掘快速的發(fā)展帶來了新的機(jī)遇.亞馬遜、微軟、谷歌、IBM 等巨頭紛紛推出了自己的云存儲平臺,國內(nèi)華為、騰訊、百度、360 等公司也加緊了在云存儲領(lǐng)域的布局.云服務(wù)已經(jīng)被企業(yè)列入常規(guī)IT投資,云數(shù)據(jù)庫服務(wù)是非常重要的一部分.
本文將從一個用戶的角度歷數(shù)市場上現(xiàn)有關(guān)系型數(shù)據(jù)庫服務(wù)的主要功能,探索是否有一些改進(jìn)的空間以及華為企業(yè)云在RDS(Relational Database Service)技術(shù)上所做的一些選擇.
數(shù)據(jù)庫備份指將數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)加以復(fù)制,一旦發(fā)生災(zāi)難或錯誤操作時,得以方便而及時地恢復(fù)系統(tǒng)的有效數(shù)據(jù)和正常運(yùn)作.
數(shù)據(jù)庫備份是用戶常用的功能之一,mysqldump/xtrabackup 是最常見的備份方案,同時也是大多數(shù)廠商的選擇.
Mysqldump有比較明顯的缺陷,無法做增量備份,對于經(jīng)常需要做備份的用戶來說,是無法接受的.Xtrabackup是Percona推出的商業(yè)解決方案,同時提供免費(fèi)版本,基本機(jī)制是通過比較LSN來做增量拷貝,從機(jī)制來看,需要innodb事務(wù)的支持,對于非innodb比如myisam,則通過FLUSH TBALES WITH READ LOCAK來保證數(shù)據(jù)的一致性,顯然,block write的時間取決于myisam表拷貝時間.但是我們可以禁用myisam表,這個問題可以跳過.另一方面,xtrabackup需要運(yùn)行在GuestOS中,讀取拷貝生產(chǎn)環(huán)境數(shù)據(jù)目錄同時會影響到線上的IO的表現(xiàn).
最后,如果用戶想要刪除其中一個增量備份,該如何做增量的合并和刪除?還是將依賴的增量一并刪除?
恐怕對用戶來說,這都不是理想的.
有沒有既不影響生產(chǎn)環(huán)境IO,又能做增量并且還能獨(dú)立刪除的辦法呢?快照或許是一個比較好的選擇.
數(shù)據(jù)庫快照是由客戶啟動的數(shù)據(jù)庫實(shí)例的快照,不僅可以備份單個數(shù)據(jù)庫,還可以備份整個數(shù)據(jù)庫實(shí)例.數(shù)據(jù)庫快照可讓客戶按所需的任意頻率在已知狀態(tài)備份數(shù)據(jù)庫實(shí)例,然后隨時還原到該特定的狀態(tài).數(shù)據(jù)庫快照可以使用 RDS 控制臺或 RDS API 創(chuàng)建.數(shù)據(jù)庫快照會一直保存,直到客戶使用 RDS 控制臺或 RDS API 將其或其所在的實(shí)例刪除.
數(shù)據(jù)庫實(shí)例規(guī)格如圖1所示.
圖1 :實(shí)例規(guī)格
Innodb、myisam是最常用的MySQL數(shù)據(jù)庫引擎,前者是事務(wù)安全的,后者則擁有更高的性能.前文描述到,myisam無法保證備份點(diǎn)數(shù)據(jù)的一致性,FLUSH TBALES WITH READ LOCAK又需要block write,得不償失.
MySQL replication是做讀寫分離的基礎(chǔ),分為異步和半同步的方式,前者有對主機(jī)性能影響小,但數(shù)據(jù)有一定延時,后者則相反.兩種技術(shù)可以滿足用戶不同場景的需求.關(guān)于Crash safe的問題,分為master crash safe和slave crash safe.MySQL 5.6版本之前存在一個bug,即當(dāng)sync_binlog=1/innodb-flush-log-at-trx-commit=1時,會使得InnoDB存儲引擎的group commit失效,導(dǎo)致性能急劇下降,crash-safe slave的問題更復(fù)雜些,主要replication中的SQL thread和IO thread 原子性問題,這里不再累述,MySQL 5.6版本通過將relay-info.log的信息保存在InnoDB的事務(wù)表中解決了這個問題.
講了這么多華為企業(yè)云RDS技術(shù),下面會從幾個方面詳解RDS究竟是什么.
RDS(Relational Database Service,關(guān)系型數(shù)據(jù)庫服務(wù))是一種基于云計算平臺的即開即用、穩(wěn)定可靠、彈性伸縮、便捷管理的在線關(guān)系型數(shù)據(jù)庫服務(wù).
RDS具有較為完善的性能監(jiān)控體系和多重安全防護(hù)措施,能使企業(yè)用戶在云中輕松設(shè)置、操作和擴(kuò)展關(guān)系型數(shù)據(jù)庫.通過RDS控制臺,可以執(zhí)行所有必需任務(wù)而無需編程,簡化運(yùn)營流程,減少日常運(yùn)維工作量,從而能夠?qū)W⒂趹?yīng)用開發(fā)和業(yè)務(wù)發(fā)展.
用戶訪問RDS實(shí)例時,需要經(jīng)過ECS(Elastic Cloud Server,彈性云服務(wù)器),具體關(guān)系如圖2所示.
圖2:訪問RDS
RDS是以集群為單位進(jìn)行組織,一個集群由多個實(shí)例構(gòu)成,集群中包含一個主機(jī),還可能包含一個備機(jī)和若干個只讀副本,它們一起為業(yè)務(wù)提供數(shù)據(jù)庫服務(wù).
RDS的最小管理單元是實(shí)例,一個實(shí)例代表了一個獨(dú)立運(yùn)行的關(guān)系型數(shù)據(jù)庫,實(shí)例可進(jìn)行如下分類:
用戶可以在RDS系統(tǒng)中自助創(chuàng)建及管理各種數(shù)據(jù)庫引擎的實(shí)例.
RDS的OpenAPI提供針對用戶數(shù)據(jù)庫實(shí)例的創(chuàng)建、查看、刪除等基本操作,以及查詢系統(tǒng)支持的API版本、數(shù)據(jù)庫引擎及版本、運(yùn)行環(huán)境規(guī)格、可用區(qū)域等操作.其主要的調(diào)用場景如圖3和圖4所示.
圖3:使用場景一
在創(chuàng)建實(shí)例之前,需要獲取系統(tǒng)支持的數(shù)據(jù)庫引擎及版本,運(yùn)行環(huán)境規(guī)格以及可用區(qū)域信息.
在獲取到信息之后,可以將返回結(jié)果作為調(diào)用參數(shù),執(zhí)行創(chuàng)建實(shí)例操作.
在實(shí)例創(chuàng)建成功后,用戶可以對自己所屬的實(shí)例進(jìn)行列舉、查詢詳細(xì)信息、以及刪除操作.
圖4:使用場景二
數(shù)據(jù)庫實(shí)例需要先查詢數(shù)據(jù)庫所有參數(shù)和參數(shù)信息后才能進(jìn)行設(shè)置參數(shù)取值和參數(shù)恢復(fù)默認(rèn)值.
數(shù)據(jù)庫實(shí)例可以進(jìn)行擴(kuò)容和重啟,可以將返回的任務(wù)號作為調(diào)用參數(shù)查詢異步任務(wù)的進(jìn)展情況.
在RDS的Web界面中,考慮到面向用戶的易用性,將用戶的數(shù)據(jù)庫實(shí)例組織成集群的形式進(jìn)行展現(xiàn),通常一個MySQL集群中可以包含一個主實(shí)例、一個HA備實(shí)例以及若干個只讀副本,或者只包含一個主實(shí)例和若干個只讀副本,不包含備實(shí)例,其中只讀副本不超過5個.如圖5所示為API數(shù)據(jù)模型.
圖5:API數(shù)據(jù)模型
在RDS的OpenAPI中,考慮到與OpenStack Trove的兼容,對外只以實(shí)例級別提供服務(wù),與Web界面上的集群組織方式的對應(yīng)關(guān)系為:
在創(chuàng)建實(shí)例時會默認(rèn)創(chuàng)建出一個集群,并將創(chuàng)建出的實(shí)例顯示在此集群下.
在列舉實(shí)例時會將此用戶所屬的所有實(shí)例以列表方式給出,不會體現(xiàn)出集群到實(shí)例的層次關(guān)系.
刪除只讀副本與界面功能相同,都是指定實(shí)例進(jìn)行刪除;刪除主備實(shí)例時會同時將實(shí)例所屬的集群一同刪除,但前提條件是必須將集群下屬的只讀副本提前刪除.
數(shù)據(jù)庫的解決一般可通過自建數(shù)據(jù)庫、數(shù)據(jù)庫on云服務(wù)器、RDS等,我們來通過圖6所示的詳細(xì)對比了解其優(yōu)劣勢:
圖6:數(shù)據(jù)庫解決方案詳細(xì)對比
RDS背后聚集了華為的DBA團(tuán)隊專門負(fù)責(zé)運(yùn)維,數(shù)據(jù)庫內(nèi)核開發(fā)團(tuán)隊負(fù)責(zé)改進(jìn)數(shù)據(jù)庫,將很多需要DBA日常運(yùn)維的工作逐漸納入實(shí)現(xiàn)產(chǎn)品化.使用的客戶可以從很多底層的任務(wù)中解放出來.
RDS 數(shù)據(jù)庫實(shí)例的生命周期包括創(chuàng)建、修改、重啟、備份和還原以及刪除等,具體如圖7所示.
圖7:數(shù)據(jù)庫實(shí)例生命周期管理
接下來將以華為企業(yè)云RDS為例,來說明作為一個完整的RDS產(chǎn)品,至少需要能夠提供哪些服務(wù).
結(jié)合在數(shù)據(jù)庫技術(shù)領(lǐng)域的發(fā)展趨勢,完整的RDS產(chǎn)品或可從以下幾點(diǎn)特性著手研發(fā):兼容多版本MySQL、多種實(shí)例類型滿足多場景需求、數(shù)據(jù)庫管理便利靈活、指標(biāo)監(jiān)控便于運(yùn)行狀況了解、性能調(diào)優(yōu)滿足業(yè)務(wù)需要等.
以華為企業(yè)云RDS為研究模板和例子,其服務(wù)特性可從以下幾點(diǎn)來看:
一是安全,RDS包括多種安全策略保護(hù)數(shù)據(jù)庫和用戶隱私,例如:VPC、子網(wǎng)、安全組等.
二是性能監(jiān)控,RDS能支撐監(jiān)控數(shù)據(jù)庫實(shí)例及數(shù)據(jù)庫引擎的關(guān)鍵性能指標(biāo),包括計算/內(nèi)存/存儲容量使用率、I/O活動、數(shù)據(jù)庫連接數(shù)、QPS/TPS、緩沖池、讀/寫活動等.
三是數(shù)據(jù)遷移,登錄RDS管理控制臺,即可在“數(shù)據(jù)遷移”頁面,提供數(shù)據(jù)遷移流程.
四是高可用,RDS會將主數(shù)據(jù)庫實(shí)例數(shù)據(jù)復(fù)制到一個備用數(shù)據(jù)庫實(shí)例中,一旦主數(shù)據(jù)庫實(shí)例發(fā)生故障導(dǎo)致不可用,即可在很短時間內(nèi)切換到備用數(shù)據(jù)庫實(shí)例上.
五是彈性伸縮,包括水平伸縮和垂直伸縮,例如可增刪只讀副本(每個數(shù)據(jù)庫集群最多有5個只讀副本)、數(shù)據(jù)庫實(shí)例存儲空間擴(kuò)容等.
六是備份與恢復(fù),RDS既支持自動備份以及創(chuàng)建快照,又能支持恢復(fù)到某個備份文件點(diǎn).
七是日志管理,可查詢數(shù)據(jù)庫“錯誤日志”和“慢查詢?nèi)罩尽?為數(shù)據(jù)庫調(diào)優(yōu)提供參考.
八是參數(shù)配置,數(shù)據(jù)庫管理員可以根據(jù)監(jiān)控和日志等信息,對數(shù)據(jù)庫引擎參數(shù)進(jìn)行自定義設(shè)置,從而優(yōu)化數(shù)據(jù)庫.
華為企業(yè)云RDS可以解決當(dāng)前各類電子商務(wù)網(wǎng)站、社區(qū)網(wǎng)站、移動APP以及游戲類應(yīng)用數(shù)據(jù)庫搭建、管理以及維護(hù)的高成本及復(fù)雜性問題,使用戶可以將更多的精力聚焦到應(yīng)用和業(yè)務(wù)等核心層面,節(jié)約硬件成本和軟件等成本,實(shí)現(xiàn)按需付費(fèi).華為企業(yè)云RDS支持主從熱備、讀寫分離,且提供了備份、恢復(fù)、監(jiān)控等方面的全套解決方案,從而解決數(shù)據(jù)庫運(yùn)維上的問題.
文章來自微信公眾號:細(xì)說云計算
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/4163.html