AWS雲遷移實踐:從Oracle到AWS Aurora之旅

AWS云迁移实践:从Oracle到AWS Aurora之旅

譯者介紹

楊志洪,dbaplus社群聯合發起人,新炬網絡首席佈道師,對數據庫、數據管理有深入研究,合譯《Oracle核心技術》《Oracle Exadata專家手冊》。

原作者:Rajesh Saluja,美國財稅軟件公司Intuit數據架構師,主導了Intuit數據庫從本地的Oracle遷移到Amazon Aurora Postgres的全過程。

首先,本項目的目標是將本地的Oracle數據庫遷移到雲上的Amazon Aurora數據庫。

原則:

  • 零數據丟失

  • 零數據損壞

一、Amazon Aurora數據庫的優勢

  • 高性能和可擴展

相同硬件環境下,Amazon Aurora的吞吐量是標準MySQL的5倍,標準PostgreSQL的3倍。

這一性能與商業數據庫旗鼓相當,而成本只有後者的十分之一。可以跨3個可用區(AZ:Availability Zone)建最多15個低延遲的只讀副本,來擴展讀應用的能力和性能。

  • 高可用和持久化

Amazon Aurora提供超過4個9的可用性標準(注:一年可非計劃停機52.6分鐘)。在跨3個可用區內每份數據有6個副本,因此Aurora有容錯及自愈功能。

Aurora持續備份數據到Amazon S3上,當發生物理存儲損壞或者實例故障時能夠進行透明恢復,恢復通常在30秒內完成。

  • 高安全性

Amazon Aurora為數據庫提供了多個級別的安全。包括用Amazon VPC進行網絡隔離,通過AMS秘鑰管理服務進行數據加密,通過SSL進行加密數據傳輸。

一個加密了的Amazon Aurora數據庫實例,底層存儲的數據是加密了的,自動備份、快照及集群中的副本也是加密的。

  • 完全託管

Amazon Aurora由 Amazon RDS(Amazon關係數據庫服務)全面管理。你不必再擔心數據庫的日常管理,比如硬件預置、軟件補丁、安裝、配置及備份。

Aurora會持續地監控數據,並自動將其備份數據庫到Amazon S3,因此可以實現精細的時間點恢復策略。可以用Amazon CLoudWatch、增強監控功能監控數據庫性能,還可以用Performance Insights幫助快速檢測性能問題。

二、Amazon Aurora體系結構

當我們創建一個Amazon Aurora實例時,首先創建了一個數據庫集群。一個數據庫集群由一個或多個數據庫實例組成,集群中的集群卷(cluster volume)管理所有實例的數據。

Aurora集群卷是一個虛擬的數據庫存儲卷,橫跨多個可用區,每個可用區有數據庫集群數據的一個副本。

一個Aurora數據庫集群由兩種類型的數據庫實例組成,主實例(Primary instance)和副本實例(Aurora Repilca):

  • 主實例:支持讀寫操作,對集群卷(cluster volume)完成所有的數據修改。每個Aurora數據庫集群有一個主實例。

  • 副本實例:僅支持讀操作。每個Aurora數據庫集群最多可以為主實例添加15個副本實例。多個副本實例分擔讀的壓力,將副本實例分散在不同的可用區同時增強了數據庫的可用性。下圖展示了一個Aurora數據庫集群中集群卷、主實例、副本實例的關係:

AWS云迁移实践:从Oracle到AWS Aurora之旅

三、分支的選擇:MySQL和Postgres的區別

挑選合適的數據庫技術是非常重要的,應用需求、可用性、安全需求決定了哪種技術更滿足需要。下表羅列了MySQL和Postgres的關鍵區別(針對從Oracle遷移過來,選誰更合適這一需求):

AWS云迁移实践:从Oracle到AWS Aurora之旅

四、最終選擇及採取策略

Postgres成為了最終的贏家,因為應用不能遵循MySQL的規則。MySQL要求,如果表有Primary key或者unique key,那麼分區表的分區列必須包含在唯一鍵或者主鍵裡。另外,interval分區特性也是個考慮點,能降低運營成本。

遷移策略

  • 檢查Amazon SCT工具輸出的遷移評估報告,並修正報告中提及的問題項。

  • 在AWS上創建Oracle RDS,將數據從本地Oracle數據庫遷移到Oracle RDS。

  • 如果應用不能接受停機割接,則在本地Oracle和雲上Oracle RDS之間部署Goldengate複製。

  • 用模式轉換工具(SCT,Schema Conversion Tool)進行從Oracle到Aurora的模式轉換。

  • 初始數據同步前,禁用所有Amazon Aurora上的外鍵。

  • 對持續運行的應用,用DMS(AWS Data Migration Service)將數據從Oracle RDS遷移到Postgres。

  • 在Amazon Aurora上啟用所有外鍵。

  • 在postgres上配置自動功能,自動清除舊的分區。

  • DDL/DML複製是DMS開箱即用的功能。我問支持DDL/DML複製麼?當然!而且不需要再配置什麼別的。

  • 數據庫性能深度分析(Performance Insights)也是開箱即用的功能。目前僅僅支持Amazon Aurora。

  • 刪除遷移過程中的臨時資源(比如複製實例、任務、endpoint及Oracle RDS等),遷移工作就算完成了。

整個遷移流程基本如下圖所示(從RDS Oracle到Aurora Postgres都是在雲上完成):

AWS云迁移实践:从Oracle到AWS Aurora之旅

回退策略

  • 採用DMS進行回退,或者用Goldengate也可以。

  • Postgres作為源端,Oracle RDS作為目標端。

  • 把已經存在的數據或者增量數據從源端遷移到目標端(取決於回退方法以及應用可以允許停機多久來做回退)。

整個遷移應該說作者寫得還是有點簡單了,AWS有更詳細的文檔,在遷移三步走的playbook裡:

AWS云迁移实践:从Oracle到AWS Aurora之旅

它對Oracle一些重要的特性與Postgres做了較詳細的對比(異構數據庫間的遷移都可以參考下):

SQL&PL/SQL方面:

AWS云迁移实践:从Oracle到AWS Aurora之旅

表和索引方面:

AWS云迁移实践:从Oracle到AWS Aurora之旅

數據庫對象方面:

AWS云迁移实践:从Oracle到AWS Aurora之旅

數據庫管理方面:

AWS云迁移实践:从Oracle到AWS Aurora之旅

我們可以看到除了交換分區和UTL_file是不支持的,其他大部分Oracle功能Aurora Postgres都滿足。其實這是很正常的,PostgreSQL是對Oracle兼容性最好的開源RDBMS。

Amazon在2018年將它最大的數據倉庫從Oracle遷移到了Amazon Aurora(雖然在Prime Day那天宕機了,但此後一直穩定運行,說明這個遷移還是很成功的)。在Prime Day期間,這個Aurora數據庫承載的業務每天處理超過100萬個包裹。

並且計劃要在2019年底把所有在用的Oracle數據庫都遷移到AWS自己的數據庫上,說明Aurora在架構和工程上都已經可以承載大規模應用了。對於一般規模的電商應用來說,應該是小菜一碟,intuit的實踐也說明了這一點。

在這篇文章的最後,有2個回覆都是在讚揚Aurora。

AWS云迁移实践:从Oracle到AWS Aurora之旅

我們在用Aurora,非常棒!我現在看不到任何用Oracle的必要性了。

AWS云迁移实践:从Oracle到AWS Aurora之旅

在Santa Clara參加AWS峰會上,一個客戶分享過類似的案例。他們從Oracle遷移到了AWS,節省了大量資金。更為重要的是,響應時間從36小時縮短到30秒鐘,而且易於使用,易於管理,易於操作。超酷!AWS可能會終結正在苦苦掙扎的Oracle。

要不是實名評論,我怎麼都懷疑是廠家在自吹自擂。到官網看了下,目前使用Aurora數據庫的用戶主要在國外:

  • United Nations聯合國

聯合國信息系統主管Mohamad Reza評價:

聯合國運營著多個擁有全球影響力的網站,需要關鍵任務型可靠性和一致的性能。即使使用Amazon Aurora最小的數據庫引擎,我們也能夠實現卓越的性能。

Amazon Aurora的全新用戶友好型監控界面讓我們能夠輕鬆診斷和解決問題。它的性能、可靠性和監控能力真正表明了Amazon Aurora是一個企業級AWS數據庫。

  • Wappa出租車費用管理公司

Wappa首席技術官Cesar Matias評價:

為了幫助我們的客戶減少公司差旅費用,我們的平臺需要快速找到交通工具,並加快制定預算以及支付和報告流程的速度。

自從我們將Oracle數據庫遷移到Amazon Aurora以來,我們的用戶驗證流程速度提高了60%,每位用戶的報告時間縮短了75%,支付流程速度也加快了70%。我們清楚看到了應用程序的用戶增長數量和用戶滿意度評分結果。

  • BMC IT管理軟件廠商

BMC數字服務管理部總裁Nayaki Nayyar評價:

我們很高興地宣佈在AWS雲上推出Remedy ITSM。在我們支持遷移到Aurora PostgreSQL後,我們的客戶現在可以從一流的雲服務中受益,安裝時間縮短3倍,並且可以降低擁有成本。

  • Nielsen消費者行為調查公司

Nielson Watch部門架構負責人Todd Lightbody評價:

通過使用Amazon Aurora PostgreSQL預覽版,我們發現Amazon Aurora PostgreSQL的性能非常好,無論是對於寫入工作負載,還是讀/寫工作負載,性能都是RDS PostgreSQL的7到11倍以上。

我們對能夠獲得預期的可擴展性和可靠性感到興奮,因此可以確信,我們將部分核心數據庫工作負載遷移到AWS後,Amazon Aurora PostgreSQL能夠滿足我們的要求。

  • ASU亞利桑那州大學

副首席信息官John Rome評價:

ASU不斷努力提高其IT解決方案的靈活性和敏捷性,以求滿足客戶需求。我們利用Amazon Aurora將報告、提取、轉換和加載 (ETL) 時間縮短10倍以上,同時將Oracle工作負載替換為高性能雲數據庫,以快速響應用戶請求。

考慮到今年秋季會有大量學生入學,到時系統負載會達到峰值,我們的ASU Alexa技能和ASU移動應用程序將受益於Amazon Aurora的可擴展性。

另外,新的Amazon Aurora Serverless功能能夠幫助我們減少非生產環境的成本,從而讓我們能夠靈活支持使用模式不規律的數據倉庫和ETL流程。

今年或明年你有計劃將Oracle遷移到其他數據庫麼?

參考

原文鏈接:

  • https://www.linkedin.com/pulse/oracle-amazon-aurora-journey-rajesh-saluja

參考鏈接:

  • https://www.dbbest.com/services/migrate-oracle-to-amazon-aurora-postgresql/

  • https://d1.awsstatic.com/whitepapers/Migration/oracle-database-amazon-aurora-postgresql-migration-playbook.pdf

  • https://www.cnbc.com/2018/10/23/amazon-move-off-oracle-caused-prime-day-outage-in-warehouse.html

  • https://aws.amazon.com/cn/rds/aurora/customers/

AWS云迁移实践:从Oracle到AWS Aurora之旅

掌握數據庫管理新思路,獲得更優操作啟發

不妨來這些技術盛會學點獨家技能

2019 Gdevops全球敏捷運維峰會-北京站

2019 DAMS中國數據資產管理峰會-上海站

AWS云迁移实践:从Oracle到AWS Aurora之旅


分享到:


相關文章: