Amazon-Web-Services

從 DynamoDB 遷移到 RDS

  • January 3, 2019

我正在考慮可用於將 DynamoDB 數據庫遷移到 RDS 的不同選項。資料結構在關係格式中更有意義。

有 8 個表,每個表大約有 100 萬個文件。我們已經制定了主/外鍵之間的映射。

從我在 AWS 上閱讀的文件中,我有幾個選擇。

  • AWS 數據管道 -> S3 -> 轉換為 csv -> AWS Database Migration Service
  • 自定義程序以 csv 格式將表寫入 S3 -> AWS 數據庫遷移
  • 自定義程序從 dynamoDB 讀取 -> 立即逐個表插入 RDS 中,直到完成。
  • 也許使用 AWS 數據管道直接從 DynamoDB 複製到 RDS?

有沒有其他人有過這種遷移的經驗?還有其他選擇嗎?

800 萬個文件並不算多,我不會花太多時間嘗試過度優化最終可能只執行一次且只執行幾分鐘的流程。

如果您將 DynamoDB 讀取性能擴展到每秒 10k 容量單位,您應該能夠在 15 分鐘內讀取整個數據集。同時在足夠大的實例上執行您的 RDS,這樣它就可以在不減慢速度的情況下維持 8M 行的寫入。不要使用db.t2.*類,因為它會使用 CPU 積分,一旦用完它就會變慢。而是使用db.r4.2xlarge具有大量記憶體的大型(例如),一旦導入完成,您可以立即將其降級為適合您長期需要的任何內容以節省資金。還要考慮Aurora而不是老式的RDS

您可以在一小部分記錄上嘗試不同的方法,一旦該過程正常執行,就可以在整個數據集上執行它。我可能會選擇一個簡單的自定義程序,該程序一方面從 DynamoDB 讀取,另一方面寫入 RDS。出於性能和成本優化的原因,我會從 EC2 實例執行它(以防止流量離開 AWS,這需要花費一些錢)。除非您已經將 Data Pipeline 用於其他用途,否則對於這麼小的一次性工作可能不值得學習。但是,如果您已經知道如何使用Data Pipeline,那麼您就可以使用它。最後,任何可以從 DynamoDB 讀取並寫入 RDS 的東西都可以完成這項工作,因此請選擇您已經熟悉的東西。

希望有幫助:)

引用自:https://serverfault.com/questions/947432