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