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