譯者介紹
楊志洪,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數據庫集群中集群卷、主實例、副本實例的關係:
三、分支的選擇:MySQL和Postgres的區別
挑選合適的數據庫技術是非常重要的,應用需求、可用性、安全需求決定了哪種技術更滿足需要。下表羅列了MySQL和Postgres的關鍵區別(針對從Oracle遷移過來,選誰更合適這一需求):
四、最終選擇及採取策略
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都是在雲上完成):
回退策略
採用DMS進行回退,或者用Goldengate也可以。
Postgres作為源端,Oracle RDS作為目標端。
把已經存在的數據或者增量數據從源端遷移到目標端(取決於回退方法以及應用可以允許停機多久來做回退)。
整個遷移應該說作者寫得還是有點簡單了,AWS有更詳細的文檔,在遷移三步走的playbook裡:
它對Oracle一些重要的特性與Postgres做了較詳細的對比(異構數據庫間的遷移都可以參考下):
SQL&PL/SQL方面:
表和索引方面:
數據庫對象方面:
數據庫管理方面:
我們可以看到除了交換分區和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。
我們在用Aurora,非常棒!我現在看不到任何用Oracle的必要性了。
在Santa Clara參加AWS峰會上,一個客戶分享過類似的案例。他們從Oracle遷移到了AWS,節省了大量資金。更為重要的是,響應時間從36小時縮短到30秒鐘,而且易於使用,易於管理,易於操作。超酷!AWS可能會終結正在苦苦掙扎的Oracle。
要不是實名評論,我怎麼都懷疑是廠家在自吹自擂。到官網看了下,目前使用Aurora數據庫的用戶主要在國外:
聯合國信息系統主管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能夠滿足我們的要求。
副首席信息官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/
掌握數據庫管理新思路,獲得更優操作啟發
不妨來這些技術盛會學點獨家技能
2019 Gdevops全球敏捷運維峰會-北京站
2019 DAMS中國數據資產管理峰會-上海站
閱讀更多 dbaplus社群 的文章