天天看點

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

aws 提供了rds這樣傳統的關系型資料庫,也提供了dynamodb這樣的nosql 資料庫。那麼問題來了,如何把現有的資料庫遷移到aws上呢?

當然,資料庫本身就提供了備份和還原的功能,我們完全可以手動拷貝備份到對應的伺服器上然後進行還原的操作。這種操作對于相同平台的資料庫來說還是比較友善的,但是如果涉及到不同的資料庫平台,那就比較麻煩了。

aws本身就提供了一個資料庫遷移的服務,叫做 database migration service ( dms)。 通過這個服務,我們可以實作同類型遷移 (homogenous migration),例如 oracle 到 oracle,或者混雜遷移(heterogeneous migration) ,比如 oracle 到 ms sql。對于混雜遷移來說,我們需要使用 schema converter tool (sct)對 schema進行 轉換才能遷移。

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

下面看一個簡單的demo,如何把一個現有的microsoft sql 資料庫轉換到aws的 aurora 資料庫。

豆子打算建立一個rds的 mssql 資料庫,一個 rds的 aurora 資料庫。在mssql上我會建立一些樣本資料,然後通過 sct 進行 schema 轉換,最後通過 dms 進行資料庫的同步進行遷移。值得一提的是,dms支援從 rds到rds, ec2 到 rds 甚至 本地資料庫 到 rds 的各種轉換。

下面看看具體操作。在操作過程中,豆子因為實驗環境的緣故,遇見了一些坑,會盡量列出來,避免再次發生。

進入 aws rds 控制界面

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

建立一個 mssql 資料庫,注意我選擇的類型是 sql server standard edition。很不幸的是,dms不支援 express版本的遷移。

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

輸入資料庫instance的名字和密碼

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

測試的伺服器不需要太好,最便宜的就行

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

選擇vpc (這裡有個坑稍後我會提到)

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

重點,注意看他的價格,一個月要768 美元!!

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

這個是通過下面的價格算出來的。新手做這個實驗大概要2個小時,兩台伺服器大概開支會在5刀左右,是以做完了實驗一定要記得删除自己的資料庫!!

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

資料庫建立中

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

我順便建立了一個安全組,允許我自己的機器通路1433和3306端口 。(目前為止沒問題,但是這是第二個坑,後面會有問題)

重複上面的操作步驟,我又建立了一個 aurara的資料庫,他會自動建立一個cluster,然後把你建立的成員放在裡面(即使隻有一個)

最後我的兩個rds的instance就建立好了。demo1 是 mssql,做為我的資料庫源,demo2是aurora,作為資料庫目标

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

建立好了資料庫以後,我還需要生成一些測試用的table和資料。 下面看看如何從本機連接配接資料庫。

首先看看 mssql的 endpoint

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

在我的本地電腦上通過mssql management 工具連接配接。理論上,這一步應該很簡單,如果我的安全組政策正确的話。這裡我遇見了第一個坑。我的賬号裡面有多個vpc的網絡,而我的本地網絡和aws 某一個vpc之間已經存在了 s2s v-p-n 的連接配接,因而aws會認為我的計算機屬于内網,他很智能地把他的域名解析為内部ip。事實上,我的計算機和這個測試的vpc的網絡之間并沒有路由,也沒有配置gateway,内網通路是不通的,盡管他有一個公網ip,但是aws自動給我解析為内網ip之後,我的路由會找不到對應的路徑導緻我始終無法通路。最後我隻能重建rds,然後確定他在的vpc和我的計算機網絡之間存在了s2s連接配接關系。

連接配接之後,執行我的測試sql腳本,他會建立一堆表,并插入一些測試資料

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

下一步我們需要在我的電腦上安裝 sct 工具。

在下面的連接配接上下載下傳sci,mssql 的 jdbc 以及 mysql的 jdbc

https://docs.aws.amazon.com/schemaconversiontool/latest/userguide/chap_installing.html

然後打開sct,選擇建立一個項目

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

分别連接配接 mssql 和 aurora

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試
【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

連接配接成功

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

勾選我們要遷移的資料庫,之後在action 選擇 create report

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

他會掃描你的 mssql 資料庫進行評估是否可以轉換。

下面是生成的報告

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

如果報告沒有問題,下一步就是進行schema的轉換了, 選擇 action- convert schema

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

幾秒之後 可以看見schema已經在aurora這邊生成了

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

最後一大塊的操作是配置dms。 登入aws 控制台 , 選擇 database migration service。這個服務裡面,我需要建立三個東西:

一個用來同步的instance,類似ec2執行個體,但是它是由aws來管理的

建立source endpoint和 destination endpoint

建立一個任務來同步。

首先來建立一個 replication instance ( 同步執行個體)

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

注意他所選擇的vpc secuirty group 是我之前建立的,這裡其實是有問題的

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

建立完成之後 我們來繼續建立endpoint。

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

endpoint 建立完之後一定要測試 connection。

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

建立之後的樣子

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

建立好了之後來測試一下,不通!!

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

我在這裡卡了至少1個小時。最後發現有3個坑在這裡。

首先,我之前配置這個sg的時候,隻允許了我本地的機器通路,我的dms的伺服器是不行的,是以這裡我們需要把這個dms的内網ip也加進去;

第二:sg的outbound rule預設是所有都打開的,我無意中進行了限制,是以需要确認outbound rule是放行的

第三:我有一個nacl在這個公網subnet上,是以我還得在nacl上面放行

擷取dms 同步伺服器的ip

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

修改安全組的出入規則

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

修改我的nacl的出入規則

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

再測試一下連接配接成功

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

最後,我們來建立一個任務進行同步

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

添加一個 selection rule

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

等待2 分鐘之後 進度條顯示成功

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

mssql management 工具 連接配接我的源資料庫, 進入查詢一下資料

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

mysql workbench 連接配接進入我的目标資料庫,查詢一下 資料一緻,遷移成功!

【AWS征文】AWS 遷移MSSQL 資料庫到 Aurora首先建立 RDS資料庫下載下傳安裝 Schema Conversion Tool配置DMS測試

再次友情提醒,實驗成功了記得删掉伺服器,aws的收費還是很貴的。