1. 程式人生 > >解讀華為企業雲RDS技術:如何有效減少運維工作量

解讀華為企業雲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 將其或其所在的例項刪除。

  • 急速增量備份 – 快速完成資料備份,避免大資料量備份時間過長。
  • 線上業務輕干擾 – 基於快照的備份過程效率較傳統資料庫備份方式要高,合理的備份策略,對例項IO資源和業務有著非常有限的影響。

資料庫例項規格如圖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

RDS(Relational Database Service,關係型資料庫服務)是一種基於雲端計算平臺的即開即用、穩定可靠、彈性伸縮、便捷管理的線上關係型資料庫服務。

RDS具有較為完善的效能監控體系和多重安全防護措施,能使企業使用者在雲中輕鬆設定、操作和擴充套件關係型資料庫。通過RDS控制檯,可以執行所有必需任務而無需程式設計,簡化運營流程,減少日常運維工作量,從而能夠專注於應用開發和業務發展。

使用者訪問RDS例項時,需要經過ECS(Elastic Cloud Server,彈性雲伺服器),具體關係如圖2所示。

RDS

圖2:訪問RDS

RDS是以叢集為單位進行組織,一個叢集由多個例項構成,叢集中包含一個主機,還可能包含一個備機和若干個只讀副本,它們一起為業務提供資料庫服務。

RDS的最小管理單元是例項,一個例項代表了一個獨立執行的關係型資料庫,例項可進行如下分類:

  • 主例項
  • 備例項
  • 只讀副本

使用者可以在RDS系統中自助建立及管理各種資料庫引擎的例項。

RDS API 使用場景

RDS的OpenAPI提供針對使用者資料庫例項的建立、檢視、刪除等基本操作,以及查詢系統支援的API版本、資料庫引擎及版本、執行環境規格、可用區域等操作。其主要的呼叫場景如圖3和圖4所示。

RDS API

圖3:使用場景一

在建立例項之前,需要獲取系統支援的資料庫引擎及版本,執行環境規格以及可用區域資訊。

在獲取到資訊之後,可以將返回結果作為呼叫引數,執行建立例項操作。

在例項建立成功後,使用者可以對自己所屬的例項進行列舉、查詢詳細資訊、以及刪除操作。

圖4:使用場景二

資料庫例項需要先查詢資料庫所有引數和引數資訊後才能進行設定引數取值和引數恢復預設值。

資料庫例項可以進行擴容和重啟,可以將返回的任務號作為呼叫引數查詢非同步任務的進展情況。

RDS API 涉及的資料模型

在RDS的Web介面中,考慮到面向使用者的易用性,將使用者的資料庫例項組織成叢集的形式進行展現,通常一個MySQL叢集中可以包含一個主例項、一個HA備例項以及若干個只讀副本,或者只包含一個主例項和若干個只讀副本,不包含備例項,其中只讀副本不超過5個。如圖5所示為API資料模型。

API資料

圖5:API資料模型

在RDS的OpenAPI中,考慮到與OpenStack Trove的相容,對外只以例項級別提供服務,與Web介面上的叢集組織方式的對應關係為:

在建立例項時會預設創建出一個叢集,並將創建出的例項顯示在此叢集下。

在列舉例項時會將此使用者所屬的所有例項以列表方式給出,不會體現出叢集到例項的層次關係。

刪除只讀副本與介面功能相同,都是指定例項進行刪除;刪除主備例項時會同時將例項所屬的叢集一同刪除,但前提條件是必須將叢集下屬的只讀副本提前刪除。

資料庫解決方案對比

資料庫的解決一般可通過自建資料庫、資料庫on雲伺服器、RDS等,我們來通過圖6所示的詳細對比了解其優劣勢:

資料庫

圖6:資料庫解決方案詳細對比

RDS背後聚集了華為的DBA團隊專門負責運維,資料庫核心開發團隊負責改進資料庫,將很多需要DBA日常運維的工作逐漸納入實現產品化。使用的客戶可以從很多底層的任務中解放出來。

RDS 資料庫例項的生命週期包括建立、修改、重啟、備份和還原以及刪除等,具體如圖7所示。

圖7:資料庫例項生命週期管理

完整的RDS需要提供哪些服務

接下來將以華為企業雲RDS為例,來說明作為一個完整的RDS產品,至少需要能夠提供哪些服務。

結合在資料庫技術領域的發展趨勢,完整的RDS產品或可從以下幾點特性著手研發:相容多版本MySQL、多種例項型別滿足多場景需求、資料庫管理便利靈活、指標監控便於執行狀況瞭解、效能調優滿足業務需要等。

以華為企業雲RDS為研究模板和例子,其服務特性可從以下幾點來看:

一是安全,RDS包括多種安全策略保護資料庫和使用者隱私,例如:VPC、子網、安全組等。

二是效能監控,RDS能支撐監控資料庫例項及資料庫引擎的關鍵效能指標,包括計算/記憶體/儲存容量使用率、I/O活動、資料庫連線數、QPS/TPS、緩衝池、讀/寫活動等。

三是資料遷移,登入RDS管理控制檯,即可在“資料遷移”頁面,提供資料遷移流程。

四是高可用,RDS會將主資料庫例項資料複製到一個備用資料庫例項中,一旦主資料庫例項發生故障導致不可用,即可在很短時間內切換到備用資料庫例項上。

五是彈性伸縮,包括水平伸縮和垂直伸縮,例如可增刪只讀副本(每個資料庫叢集最多有5個只讀副本)、資料庫例項儲存空間擴容等。

六是備份與恢復,RDS既支援自動備份以及建立快照,又能支援恢復到某個備份檔案點。

七是日誌管理,可查詢資料庫“錯誤日誌”和“慢查詢日誌”,為資料庫調優提供參考。

八是引數配置,資料庫管理員可以根據監控和日誌等資訊,對資料庫引擎引數進行自定義設定,從而優化資料庫。

結語

華為企業雲RDS可以解決當前各類電子商務網站、社群網站、移動APP以及遊戲類應用資料庫搭建、管理以及維護的高成本及複雜性問題,使使用者可以將更多的精力聚焦到應用和業務等核心層面,節約硬體成本和軟體等成本,實現按需付費。華為企業雲RDS支援主從熱備、讀寫分離,且提供了備份、恢復、監控等方面的全套解決方案,從而解決資料庫運維上的問題。

文章來自微信公眾號:細說雲端計算