如何有效減少運維工作量?華為云RDS來幫忙
互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,手機、平板、智能電視等各種輸入終端的普及,讓互聯(lián)網(wǎng)數(shù)據(jù)呈現(xiàn)出爆炸性的增長。面對海量的數(shù)據(jù),如何能以更加穩(wěn)定、快速的方式存儲海量數(shù)據(jù),以及從中挖掘出有價值的信息,成為很多企業(yè)面臨的新課堂。
云存儲的出現(xiàn)為數(shù)據(jù)挖掘快速發(fā)展帶來了新的機遇。亞馬遜、微軟、谷歌、IBM 等巨頭紛紛推出了自己的云存儲平臺,國內(nèi)華為、騰訊、百度、360 等公司也加緊了在云存儲領(lǐng)域的布局。云服務(wù)已經(jīng)被企業(yè)列入常規(guī)IT投資,云數(shù)據(jù)庫服務(wù)是非常重要的一部分。
本文將從一個用戶的角度歷數(shù)市場上現(xiàn)有關(guān)系型數(shù)據(jù)庫服務(wù)的主要功能,探索是否有一些改進的空間以及華為云數(shù)據(jù)庫在技術(shù)上所做的一些選擇。
數(shù)據(jù)庫備份
數(shù)據(jù)庫備份指將數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)加以復(fù)制,一旦發(fā)生災(zāi)難或錯誤操作時,得以方便而及時地恢復(fù)系統(tǒng)的有效數(shù)據(jù)和正常運作。
數(shù)據(jù)庫備份是用戶常用的功能之一,mysqldump/xtrabackup 是最常見的備份方案,同時也是大多數(shù)廠商的選擇。
Mysqldump 有比較明顯的缺陷,無法做增量備份,對于經(jīng)常需要做備份的用戶來說,是無法接受的。Xtrabackup 是 Percona 推出的商業(yè)解決方案,同時提供免費版本,基本機制是通過比較LSN來做增量拷貝。從機制來看,需要 innodb 事務(wù)的支持,對于非innodb 比如 myisam,則通過FLUSH TBALES WITH READ LOCAK來保證數(shù)據(jù)的一致性,顯然,block write 的時間取決于 myisam 表拷貝時間。但是我們可以禁用myisam表,這個問題可以跳過。另一方面,xtrabackup 需要運行在 GuestOS 中,讀取拷貝生產(chǎn)環(huán)境數(shù)據(jù)目錄同時會影響到線上的 IO 表現(xiàn)。
如果用戶想要刪除其中一個增量備份,該如何做增量的合并和刪除?還是將依賴的增量一并刪除?
對用戶來說,恐怕這都不是理想的。
有沒有既不影響生產(chǎn)環(huán)境IO,又能做增量并且還能獨立刪除的辦法呢?
事實上,華為云數(shù)據(jù)庫備份是由客戶啟動的數(shù)據(jù)庫實例的備份,不僅可以備份單個數(shù)據(jù)庫,還可以備份整個數(shù)據(jù)庫實例。數(shù)據(jù)庫備份可讓客戶按所需的任意頻率在已知狀態(tài)備份數(shù)據(jù)庫實例,然后隨時還原到該特定的狀態(tài)。數(shù)據(jù)庫備份可以使用 RDS 控制臺或 RDS API 創(chuàng)建,備份會一直保存,直到客戶使用 RDS 控制臺或 RDS API 將其或其所在的實例刪除。
- 急速增量備份 – 快速完成數(shù)據(jù)備份,避免大數(shù)據(jù)量備份時間過長。
- 線上業(yè)務(wù)輕干擾 – 基于備份的備份過程效率較傳統(tǒng)數(shù)據(jù)庫備份方式要高,合理的備份策略,對實例IO資源和業(yè)務(wù)有著非常有限的影響。
數(shù)據(jù)庫實例規(guī)格如圖1所示:

圖1
數(shù)據(jù)庫引擎
Innodb、myisam 是最常用的 MySQL 數(shù)據(jù)庫引擎,前者是事務(wù)安全的,后者則擁有更高的性能。前文描述到,myisam 無法保證備份點數(shù)據(jù)的一致性,F(xiàn)LUSH TBALES WITH READ LOCAK 又需要 block write,得不償失。
MySQL replication 是做讀寫分離的基礎(chǔ),分為異步和半同步的方式,前者有對主機性能影響小,但數(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ù)表中解決了這個問題。
講了這么多華為云 RDS 技術(shù),下面會從幾個方面詳解 RDS 究竟是什么。
深入淺出 RDS
RDS(Relational Database Service,關(guān)系型數(shù)據(jù)庫服務(wù))是一種基于云計算平臺的即開即用、穩(wěn)定可靠、彈性伸縮、便捷管理的在線關(guān)系型數(shù)據(jù)庫服務(wù)。
RDS 具有較為完善的性能監(jiān)控體系和多重安全防護措施,能使企業(yè)用戶在云中輕松設(shè)置、操作和擴展關(guān)系型數(shù)據(jù)庫。通過 RDS 控制臺,可以執(zhí)行所有必需任務(wù)而無需編程,簡化運營流程,減少日常運維工作量,從而能夠?qū)W⒂趹?yīng)用開發(fā)和業(yè)務(wù)發(fā)展。
用戶訪問 RDS 實例時,需要經(jīng)過 ECS(Elastic Cloud Server,彈性云服務(wù)器),具體關(guān)系如圖2所示:

圖2
RDS 的最小管理單元是實例,一個實例代表了一個獨立運行的關(guān)系型數(shù)據(jù)庫,實例可進行如下分類:
- 主實例
- 備實例
- 只讀實例
用戶可以在 RDS 系統(tǒng)中自助創(chuàng)建及管理各種數(shù)據(jù)庫引擎的實例。
RDS API 使用場景
RDS 的 OpenAPI 提供針對用戶數(shù)據(jù)庫實例的創(chuàng)建、查看、刪除等基本操作,以及查詢系統(tǒng)支持的 API 版本、數(shù)據(jù)庫引擎及版本、運行環(huán)境規(guī)格、可用區(qū)域等操作。其主要的調(diào)用場景如圖3和圖4所示。

圖3
在創(chuàng)建實例之前,需要獲取系統(tǒng)支持的數(shù)據(jù)庫引擎及版本,運行環(huán)境規(guī)格以及可用區(qū)域信息。
在獲取到信息之后,可以將返回結(jié)果作為調(diào)用參數(shù),執(zhí)行創(chuàng)建實例操作。
在實例創(chuàng)建成功后,用戶可以對自己所屬的實例進行列舉、查詢詳細信息、以及刪除操作。

圖4
數(shù)據(jù)庫實例需要先查詢數(shù)據(jù)庫所有參數(shù)和參數(shù)信息后才能進行設(shè)置參數(shù)取值和參數(shù)恢復(fù)默認值。
數(shù)據(jù)庫實例可以進行擴容和重啟,可以將返回的任務(wù)號作為調(diào)用參數(shù)查詢異步任務(wù)的進展情況。
數(shù)據(jù)庫解決方案對比
數(shù)據(jù)庫的解決一般可通過自建數(shù)據(jù)庫、數(shù)據(jù)庫on云服務(wù)器、RDS等,我們來通過圖5所示的詳細對比了解其優(yōu)劣勢:

圖5
RDS 背后聚集了華為的 DBA 團隊專門負責(zé)運維,數(shù)據(jù)庫內(nèi)核開發(fā)團隊負責(zé)改進數(shù)據(jù)庫,將很多需要 DBA 日常運維的工作逐漸納入實現(xiàn)產(chǎn)品化。使用的客戶可以從很多底層的任務(wù)中解放出來。
RDS 數(shù)據(jù)庫實例的生命周期包括創(chuàng)建、修改、重啟、備份和還原以及刪除等,具體如圖6所示。

圖6
完整的RDS需要提供哪些服務(wù)
接下來將以華為云 RDS 為例,來說明作為一個完整的RDS產(chǎn)品,至少需要能夠提供哪些服務(wù)。
結(jié)合在數(shù)據(jù)庫技術(shù)領(lǐng)域的發(fā)展趨勢,完整的 RDS 產(chǎn)品或可從以下幾點特性著手研發(fā):兼容多版本 MySQL、多種實例類型滿足多場景需求、數(shù)據(jù)庫管理便利靈活、指標監(jiān)控便于運行狀況了解、性能調(diào)優(yōu)滿足業(yè)務(wù)需要等。
以華為云 RDS 為研究模板和例子,其服務(wù)特性可從以下幾點來看:
- 安全。RDS 包括多種安全策略保護數(shù)據(jù)庫和用戶隱私,例如:VPC、子網(wǎng)、安全組等。
- 性能監(jiān)控。RDS 能支撐監(jiān)控數(shù)據(jù)庫實例及數(shù)據(jù)庫引擎的關(guān)鍵性能指標,包括計算/內(nèi)存/存儲容量使用率、I/O 活動、數(shù)據(jù)庫連接數(shù)、QPS/TPS、緩沖池、讀/寫活動等。
- 數(shù)據(jù)遷移。登錄 RDS 管理控制臺,即可在“數(shù)據(jù)遷移”頁面,提供數(shù)據(jù)遷移流程。
- 高可用。RDS會將主數(shù)據(jù)庫實例數(shù)據(jù)復(fù)制到一個備用數(shù)據(jù)庫實例中,一旦主數(shù)據(jù)庫實例發(fā)生故障導(dǎo)致不可用,即可在很短時間內(nèi)切換到備用數(shù)據(jù)庫實例上。
- 彈性伸縮。包括水平伸縮和垂直伸縮,例如可增刪只讀實例(每個數(shù)據(jù)庫最多有5個只讀實例)、數(shù)據(jù)庫實例存儲空間擴容等。
- 備份與恢復(fù)。RDS 既支持自動備份以及創(chuàng)建備份,又能支持恢復(fù)到某個備份文件點。
- 日志管理。可查詢數(shù)據(jù)庫“錯誤日志”和“慢查詢?nèi)罩?rdquo;,為數(shù)據(jù)庫調(diào)優(yōu)提供參考。
- 參數(shù)配置。數(shù)據(jù)庫管理員可以根據(jù)監(jiān)控和日志等信息,對數(shù)據(jù)庫引擎參數(shù)進行自定義設(shè)置,從而優(yōu)化數(shù)據(jù)庫。
結(jié)語
華為云 RDS 可以解決當(dāng)前各類電子商務(wù)網(wǎng)站、社區(qū)網(wǎng)站、移動 APP 以及游戲類應(yīng)用數(shù)據(jù)庫搭建、管理以及維護的高成本及復(fù)雜性問題,使用戶可以將更多的精力聚焦到應(yīng)用和業(yè)務(wù)等核心層面,節(jié)約硬件成本和軟件等成本,實現(xiàn)按需付費。
華為云 RDS 支持主從熱備、讀寫分離,且提供了備份、恢復(fù)、監(jiān)控等方面的全套解決方案,從而解決數(shù)據(jù)庫運維上的問題。
了解更多華為云數(shù)據(jù)庫:https://www.huaweicloud.com/product/dbs.html



























