數據庫如何轉身云原生數據庫
前言
隨著互聯網的發展,以及大數據時代的來臨,信息數據量也呈現出迅速增長的發展趨勢,越來越多企業認識到,數據不僅可以在本地存儲,還可以在云端存儲。而云原生數據庫就是一種穩定可靠、可彈性伸縮,解決數據運維工作的數據庫服務。
項目使用前期調研
亞馬遜云科技提供了100余種產品免費套餐。其中,計算資源 Amazon EC2 首年12個月免費,750小時/月;存儲資源 Amazon S3 首年12個月免費,5GB 標準存儲容量;數據庫資源 Amazon RDS 首年12個月免費,750小時;Amazon Dynamo DB 25GB 存儲容量 永久免費。??https://aws.amazon.com/cn/free/??
我公司蘇州凱捷智能科技有限公司從本地存儲更換為亞馬遜云科技數據庫存儲數據。
本人公司2021年開業創業性公司主要服務對象3C、新能源、政府等。數據存儲量比較大。因為創業性公司不會專門搭建一個服務器用于存儲,對于時間、成本等條件。肯定不能滿足這樣使用。于是我們開始調研云數據庫性能對比,價格等。最終選擇了 Amazon。
公司的預算以及規模要求
在幾萬預算中性能對比下來 Amazon 數據存儲、數據操作簡單方便技術目前是全球領先的據我了解在全球范圍內,Amazon 在云服務領域處于領導者地位。數以百萬計的客戶——包括發展最快的初創企業、最大的企業和領先的政府機構——相信 Amazon 能夠為他們的基礎設施提供動力,變得更加靈活,并降低成本。
豐富的云服務和功能
Amazon 在各個方面的業務需求上,都有對應的產品或者整體的解決方案存在。Amazon 的這些服務還具有最為多樣復雜的功能。例如,Amazon 提供了種類繁多的數據庫,這些數據庫是為不同類型的應用程序專門構建的,因此您可以選擇適合作業的工具來獲得最佳的成本和性能。
覆蓋全球的云基礎設施
Amazon 擁有強大的、充滿活力的生態系統,擁有數百萬活躍客戶和數萬合作伙伴。Amazon 客戶幾乎涵蓋所有行業和規模的組織,包括初創企業、企業和公共部門組織。
強大的云計算生態
WS 開發工具完善、文檔和教程齊全、社區氛圍友好,在 Amazon 上開發應用非常方便。
最終蘇州凱捷智能科技有限公司選擇了Amazon 數據存儲服務。
首先講講什么是云原生數據庫?
云原生數據庫是一種通過云平臺進行構建、部署和分發的服務。作為一種云平臺,云原生數據庫以 Paas 的形式進行分發,也經常被稱作 DBaas ;用戶可以將該平臺用于多種目的,例如存儲,管理和提取數據。
簡單來說,云原生數據庫,是一種通過云平臺進行構建、部署和分發的服務。這種云原生屬性是它相比于其他類型數據庫最大的特點。作為一種云平臺,云原生數據庫以 Paas (平臺即服務, Platform-as-a-Service )的形式進行分發,也經常被稱作 DBaas (數據庫即服務, DataBase-as-a-Service)。用戶可以將該平臺用于多種目的,例如存儲,管理和提取數據。
云原生數據庫通常通過在云基礎設施之上安裝數據庫軟件來實現,這種方式使得云原生數據庫具備了傳統數據庫所不具備的直接訪問性和運行時可伸縮性。隨著云原生數據和海量計算的重要性不斷提高,人們空前重視通過部署這種服務為企業提供增強的可靠性和可伸縮性。
mysql 數據庫,云數據庫的優勢有哪些?
1、服務可用性
云數據庫具有高可用性,完善的數據自動備份機制,數據可保留時間長,分鐘級別可完成故障轉移。而在自購服務器搭建的傳統數據庫服務中,需自行搭建主從復制,自建 RAID,單獨實現或者購買負載均衡設備等。
2、數據可靠性
云數據庫是保證99.95%高可靠的,提供主從數據存儲,支持按時間點恢復、秒級監控等,保障線上數據安全。而在自購服務器搭建的傳統數據庫服務中,需要自行保障。
3、系統安全性
云數據庫具有高安全性,DDoS 防護,能幫助用戶抵御攻擊流量,減少數據安全風險,保證業務的正常運行。而傳統數據庫則需自行部署,價格高昂,同時也需自行修復數據庫安全漏洞。
4、軟硬件投入
云廠商提供的云數據庫不需要客戶購置 軟硬件投,并且支持按需付費。而傳統數據庫成本相對較高,對于 SQL Server 還需支付許可證費用。
云數據庫結合云服務器使用,具有數據傳輸穩定高可用,內網帶寬傳輸速度快,可擴展性高的優勢。相對于自建數據庫,云數據庫具有更經濟、更專業、更高效、更安全、簡單易用等特點,用戶能更專注于核心業務。
睿江云目前擁有單節點,雙節點,三節點三個版本的云數據庫,用戶可根據業務需求選擇購買。高性能、高安全、高可靠的數據庫服務,可以有效地減輕用戶的運維壓力,為用戶帶來安全可靠的全新體驗。
5、轉身 Amazon 原因
第一個就是分布式、高可擴展性的 OLTP 數據庫的云原生化。我認為包括 Amazon Aurora、包括現在的主流的這些號稱 Cloud Native 的一些數據庫,還遠沒有到達一個最終形態,它相當于只是一個把一個單機數據庫的技術云化了而已。分布式數據庫如何與云原生真正結合,這現在還是一個懸而未決的問題。這個問題的本質就是分布式數據庫如何從 On Cloud,走向 In Cloud。
手把手教你將服務器遷移到 Amazon 全過程
遷移策略方案
以上這些數據庫由 Amazon 完全托管,用戶不用去管理底層硬件系統升級維護等相關工作,這也是推薦使用全托管數據庫而非自建數據庫的原因。為了方便客戶數據庫遷移上云,Amazon 還為客戶提供了非常方便的遷移工具 DMS,幫助用戶輕松經濟高效的完成遷移任務。
那么面對這么多種類的數據庫,尤其是一些新型數據庫,我們從來沒有使用過,我們該如何選擇?我們需要從業務場景為出發點來分析使用哪種數據庫,下面我對 Amazon 數據庫的使用場景做個簡單的介紹,也讓大家對 Amazon 各種數據庫的應用場景有一個大致了解。
1、盤點云服務
首先盤點下我們用到的阿里云服務有哪些?云服務器 ECS,負載均衡 SLB,對象存儲 OSS,大數據服務 MaxCompute,其中數據庫、緩存、隊列之類均使用 ECS + 開源產品搭建,而非阿里云服務。基本 Amazon 均有對標產品,EC2, ELB,S3 等可以滿足需求,當然成本上 Amazon 產品還是略貴一些。
2.盤點服務機器
在線服務主要依賴ECS ,系統搭建 CentOS,部署應用服務器,數據中心主要包括 Mysql 、MongoDB、Redis、ES、OSS等 ,中間件服務,消息隊列,路由網關等。離線服務數據倉庫主要基于 MaxCompute,以及相關報表服務。
3.遷移策略
3.1.離線服務遷移策略
在新數據中心建立數倉,導入歷史數據,新機房搭建 ETL 服務,遷移后增量數據從新機房在線服務中抽取。遷移可獨立進行不受限于在線服務,注意在線服務遷移節點前后的數據補錄和剔除。由于阿里云 MaxCompute 服務與 hive 語法有差異,此處還有些 sql 修改的工作。
3.2.在線服務遷移策略
原機房服務架構情況如下圖:
圖中 router 作為網關和負載均衡,簡化隊列等其他服務。遷移方案總體分為不停服遷移和停服遷移兩種,下面就具體分析下如何選型。
3.3.不停服遷移方案
首先在新機房按同等架構部署一套服務,數據庫維持主從架構(原機房做主,新機房做從),redis (只用于緩存)兩邊各自部署維護。
從 網關層(router)切流量到新機房應用服務,但服務讀寫數據庫仍從原機房(阿里云機房),如果不考慮延時或一致性要求不高的場景可以從新機房數據庫讀,寫到原機房數據庫。
應用流量遷移后,切換數據庫讀寫到新機房,遷移前需要檢查新機房是否有數據落后,通過變更連接配置進行切換,對使用數據庫長連接的連接池模式,需要在程序做支持,捕獲配置變更后啟動新配置的連接池。
此方案采用從應用服務層到數據層自頂向下遷移,遷移過程中會出現雙機房雙活和跨機房調用的情況,確保盡可能少的出現跨機房調用。
方案優點:
服務基本可用,對用戶無感知,或感知較小。
方案缺點:
實施過程復雜,跨機房數據延時會影響服務正常,切換瞬間可能會有數據不一致。
為了減少跨機房延時,一般采用拉專線方式,同機房數據傳輸一般延時在 10ms 以內, 同城專線一般延時在 10 ms 左右,跨城專線一般在 10 - 200 ms,公網傳輸一般在幾百毫秒。
由于兩個機房之間無法直接拉專線,跨機房調用可能會導致服務延時失敗,出現更多不可控因素,且業務存在夜間低峰期且無新用戶,停服影響可接受,因此最終實施將會按停服方案來操作。
3.4.停服遷移方案
和不停服一樣,首先搭建一套鏡像服務,在某個時間點會將所有寫入暫停(無新數據寫入),待數據全部同步新機房后,在新機房啟動服務,并將流量完全導向新機房。
方案優點:
實施過程簡單,實施過程中不會出現臟數據。
方案缺點:
會有一段時間對用戶完全不可用,必須根據業務場景來評估是否可接受。
實現流程
1.完善實施細節
實施遷移前,必要的準備工作必不可少,購買新機房服務,配置網絡及服務的搭建,應用服務的部署,數據庫的準備及數據同步(及一致性檢查),涉及到 ip 變更合作機構加白名單,以及必要的通知工作,最后需要對新機房服務做回歸測試和校驗。為了防止遺漏,最好使用 checklist 清單,完成一項對其打鉤。
2.執行遷移過程
選擇合適的遷移時間,服務低峰時間,避開必要的定時任務執行時間,梳理清可提前的或可推后的定時任務,遷移時間與必須按時執行的定時任務錯峰。遷移過程對用戶訪問進行限制,除測試白名單可正常訪問服務,其他用戶會提示 “系統升級,請稍后回來” 。遷移計劃可以分幾步,確定好時間,執行人,執行內容,必要的執行操作,做好 checklist 清單,格式如下:
停止原機房對外服務
1)上線代碼控制訪問請求
2)停止定時腳本和常駐 (注意順序)
3)觀察數據無寫入 xx 時間,保險起見對主庫改為 readonly
4)觀察隊列無新增,消費已完成 (可省略遷移隊列數據)
外網域名 DNS 解析切換
1)外網域名 DNS 解析切換
2)DNS 解析生效需要周期,此時打入舊機房流量可以做轉發到新機房
新機房服務恢復
1)在準備階段已完成服務部署,數據庫維持從庫同步數據,此時斷開與主庫連接
2)可以校驗數據是否完全一致,準備階段完成歷史記錄校驗,遷移階段只校驗增量部分
3)涉及 OSS 數據,需要同步到 S3,沒有直接同步工具,可以先下載再上傳,最后寫了個比對工具校驗兩邊一致性
4)定時任務和常駐進程在新機房啟動。
回歸測試
恢復對外服務
1)觀察日志監控
2)服務和業務監控
3)其他系統服務恢復
3.遷移過程的突發事件
雖然做了“萬全”的計劃,但遷移過程還是會發生一些計劃外的事件,這時候就要隨機應變了,但一個基本原則就是是否可以先忽略?如果不影響正常業務可以事后解決。
在停止對外訪問后,按預期將沒有新數據寫入,但發現 MongoDB 數據庫仍有數據寫入,通過追查連接 ip 發現有其他部門服務連接,此時半夜無法聯系到對方處理,最后確認該數據表我們并不使用,那么可以忽略不處理,但因為此項確認比預期要長,整體遷移時間也向后發生了偏移。
MongoDB 采用了停服后全量數據導出,在新服務器上導入的方案,并未使用從庫。因為數據量較少,導出恢復速度快,不會有不一致問題。
在使用 Amazon 的 負載均衡服務(ELB)時,發現了與阿里云的 SLB 不一樣的情況,在長連接服務過程中會斷開連接,而當時在場的 Amazon 技術支持也未能有效解決,當時根據情況決策不使用負載均衡,直接連接 ip 的方式,先解決了服務斷開的問題。
Amazon 負載均衡有健康檢查機制,如果長時間無目標響應就會斷開連接。
4.回滾計劃
在做遷移計劃時,也會出相應的回滾方案,如果不符合預期就會執行回退到阿里云,那么在停服階段的回滾,相對比較簡單且無損。而一旦對外開放流量后再回退,基本上需要執行遷移方案的逆向操作。
收尾
服務前移完成后,還有一些收尾的工作,以及服務的觀察和監控。系統指標對比:如 cpu、內存、io 等系統層面的使用情況和負載
應用指標對比:如接口響應時間,QPS 等情況
業務指標對比:如關鍵業務的轉化率等情況遷移前可在原機房看一些關鍵數據,如最后一條用戶數據、訂單數據等,然后在新機房有針對性的查看放量后新增數據情況。經過歷時幾個小時的通宵遷移,服務已平穩從阿里云機房遷移至了 Amazon 機房,觀察幾個小時后整體符合預期,算是基本圓滿達成目標。
Amazon 數據庫優勢
在眾多的云廠商中,我們為什么選擇 Amazon 數據庫服務,Amazon 還有哪些獨特的優勢呢?我主要總結以下幾點:
成本優勢
使用自建數據,企業首先需要支付一筆資金購買服務器,一些商業數據庫的授權,需要再次支付一筆費用。如果遷移到 Amazon 的自研數據庫,客戶不必再支付高昂的商業數據庫授權,也不必再去花費大量資金去購買服務器,在云中,客戶只需要按量付費,因此很多企業由于把數據庫遷移到 Amazon 而節省巨大費用支出。
從最近的 Amazon 公告中,看到 Amazon 幫助三星把數據從商業數據庫 Oracle 遷移到了 Aurora,為三星每月的數據庫成本降低了 44%,并讓三星的數據庫運行更加穩定。
完全托管
以上所說的幾種數據庫都是 Amazon 完全托管的數據庫,完全托管意味著零運維。首先客戶不需要去維護硬件的生命周期、系統的補丁更新、高可用的部署、備份等。如果需要對數據庫擴展,也只需點幾下鼠標而已,非讓方便,讓 DBA 從復雜的數據庫運維中解脫出來,專注于數據庫性能調優。
全球優勢
過去我們需要借助非常復雜的技術手段,花費大量的成本、甚至犧牲一定的可用性,才能實現快速、穩定、安全的跨區域的數據復制,現在只要在 Amazon 云中輕輕點幾下鼠標即可完成。
Amazon 云現已在全球 24 個地理區域內運營著 77 個可用區,180個邊緣站點等,為 Amazon 相應全球數據庫提供了基礎保障。依托于 Amazon 強大的基礎設施,目前已經有三款數據庫支持全球同步,延遲通常不超過 1 秒,可以滿足目前大部分應用的需求。
對于關系型數據庫的全球同步需求,Amazon Aurora Global Database 能夠允許用戶輕松實現跨區域的數據庫部署,讓用戶輕松在區域之間復制數據和解決更新沖突,從而更加專注于應用程序的業務邏輯。Amazon 還提供了 Amazon DynamoDB Global Tables。它基于 DynamoDB 的全球覆蓋范圍構建,具有多區域、多主表的特性,可讓全局分布式應用程序實現快速的本地讀寫性能,為用戶提供一個完全托管的、多區域、多主的 Key-Value 類型數據庫。
針對緩存數據庫,在眾多組織都在利用 Redis 為全球用戶提供低延遲訪問的背景下,Amazon 為更好滿足客戶的需求,Amazon 推出了 Amazon ElastiCache Global Datastore for Redis 全球緩存數據庫,為用戶提供數據跨區域復制,可以在一個區域寫入數據,同時在其他區域讀取數據,使緩存的數據更接近用戶,減少網絡延遲,并提高應用程序的響應能力。
心得與建議
當然,數據庫遷移是一個龐大而復雜的工程,尤其將數據庫遷移上公有云,除了數據庫知識更需要了解公有云上網絡,存儲,虛擬化等一系列知識。但是,我們不應該僅僅將數據庫上云看做一個復雜的任務,更應該把它當做一個優化我們數據庫的契機,那么上云過程中有哪些注意事項和建議呢?
對于一些允許停機的應用,這部分數據我們推薦使用離線遷移,整個操作比較簡單,速度快,不容易出問題。
如果業務需要在線遷移,那么推薦使用 DMS 進行遷移,需要注意的是,在數據庫切換之前先停掉源數據庫寫入,帶數據完全同步到目標數據庫之后進行數據庫切換。如果遷移的數據量比較大,建議選擇配置比較大的復制實例,這樣可以加速我們的復制速度。如果您想要轉換數據庫引擎,在使用 SCT 進行 Schema 轉換的時候可能會遇到一些目標數據庫不支持的地方,請先聯系 DBA 人員,對這些地方進行更改,滿足之后再進行轉換。
資料分享
- 數據庫免費試用鏈接及上手教程:??https://aws.amazon.com/cn/getting-started/databases/get-started/??
- 云原生數據庫在線大會:??https://www.awsevents.cn/CloudNative/listDetails.html??
粉絲福利
亞馬遜云科技專為開發者們打造了多種學習平臺:
- 入門資源中心:從0到1 輕松上手云服務,內容涵蓋:成本管理,上手訓練,開發資源。??https://aws.amazon.com/cn/getting-started/??
- 架構中心:亞馬遜云科技架構中心提供了云平臺參考架構圖表、經過審查的架構解決方案、Well-Architected 最佳實踐、模式、圖標等。??https://aws.amazon.com/cn/architecture/??
- 構建者庫:了解亞馬遜云科技如何構建和運營軟件。??https://aws.amazon.com/cn/builders-library/??
- 用于在亞馬遜云科技平臺上開發和管理應用程序的工具包:??https://aws.amazon.com/cn/tools/??
【專屬福利】
福利一:100余種產品免費套餐。其中,計算資源 Amazon EC2 首年12個月免費,750小時/月;存儲資源 Amazon S3 首年12個月免費,5GB 標準存儲容量。??https://aws.amazon.com/cn/free/??
福利二:最新優惠大禮包,200$數據與分析抵扣券,200$機器學習抵扣券,200$微服務與應用開發抵扣券。??https://www.amazonaws.cn/campaign/??
原文來自亞馬遜云科技開發者文章:
??https://dev.amazoncloud.cn/column/articleDetail?id=63209584ed07ac10b0752c74??