# How to Use AWS DMS migrating RDS data to S3 ## 前言 這個操作手冊展示了如何使用AWS DMS(Data Migration Service)將資料庫搬遷到雲端環境,或是將雲端資料庫的資料搬遷到其他雲端服務 例如:S3。 **本次操作主要演示如何將RDS當中的資料搬遷到S3當中** ## 創建Replication Instance * 進入DMS介面 在左側導覽列選取replication instance 在右側點選Create replication instance ![image](https://hackmd.io/_uploads/SkWlyycYkl.png) * 輸入instance name、選取instance type、選取是否要使用HA ![image](https://hackmd.io/_uploads/Bycj1y5tkg.png) * 確認機器磁碟大小 並選取VPC與Subnet Group > 注意:如果目標資料庫有網路環境設置 此instance需要與該資料庫在同個網路環境下 ![image](https://hackmd.io/_uploads/rJhvxJqFJl.png) * 點選Advanced setting 與目標RDS要能夠相通 因此新增Security Group ![image](https://hackmd.io/_uploads/ByuPbJqKJx.png) * 點選Create replication instance. 等待一段時間後確認Instance創建完成 ![image](https://hackmd.io/_uploads/rJlkMJqYkg.png) ## 創建Source and Target Enpoints * 在左側導覽列選取Endpoints 並在右側點選Create enpoint ![image](https://hackmd.io/_uploads/r1vnMkcF1x.png) * 我們創建Source enpoint 因為我們要執行將RDS的資料搬遷到S3 所以請勾選Select RDS DB instance 並選取DB。 * 在存取資料庫的部分 我建議使用Provide access informaion manually 這樣可以減少存取Secret Manager的權限錯誤 如果本來就是自行保管密碼即可忽略。 ![image](https://hackmd.io/_uploads/B1b47ycF1e.png) * 資料庫相關資訊會自動帶入 請輸入密碼與要進行搬遷的Database Name 並點選Create endpoint ![image](https://hackmd.io/_uploads/H1qd415Fyl.png) 創建Target Endpoint 選擇S3 bucket以及IAM Role ![image](https://hackmd.io/_uploads/SyQjR15Fyg.png) * Endpoint Setting請新增一個DataFormat為parquet * 因為使用到CDC的功能輸出的檔案必須為parquet檔案 否則會出現錯誤 * 因此需在這邊先設置 點選Create endpoint ![image](https://hackmd.io/_uploads/HkQWkgcKyl.png) * 進入Endpoint當中 點選connections 測試我們的replication Instance是否可以順利連線到資料庫 ![image](https://hackmd.io/_uploads/HJdygl9t1l.png) ## 創建Database Migration tasks * 在左操導覽列點選Database Migration tasks 並創建task ![image](https://hackmd.io/_uploads/S1HNbxqF1x.png) * 輸入名稱後點選先前創建的資源 Migration Type可以根據需求選則 * 這邊的Migration and replicate會先做一次整個database的搬遷後 根據資料的變動會再複製到S3 ![image](https://hackmd.io/_uploads/SJNGQxcYkx.png) * 點選add new selection rule * 至少要有一個rule 如果沒有特別的設定需求的話 如圖上預設即可 ![image](https://hackmd.io/_uploads/SkkAQecFyx.png) 可以進行Premigration Accessment 如有需求可以選擇 點選task ![image](https://hackmd.io/_uploads/BJ-wVlqYJx.png) * 顯示Load complete, replication ongoing代表順利將資料搬遷到S3了 並且會持續監測資料更新 ![image](https://hackmd.io/_uploads/Hk5pVlqFJl.png) ## 結果 * 可以在S3看見透過DMS搬遷上來的完整table(LOAD00000001.parquet)以及只複製更新內容(20250212-064917529.parquet)的parquet檔。 ![image](https://hackmd.io/_uploads/ByxMBl5tyl.png)