AWS 遷移MSSQL 數據庫到 Aurora

AWS 提供了數據庫遷移的服務,叫作 Database Migration Service ( DMS)。 經過這個服務,咱們能夠實現一樣平臺的遷移,例如 MySQL 到 MySQL,或者不一樣平臺的遷移,好比 MS SQL 到 Aurora。前者能夠直接遷移,後者則須要使用 Schema Converter Tool (SCT)對 Schema進行 轉換才能遷移。固然,若是數據庫自己很小,那麼可能直接手動拷貝的效率會更高了。html

AWS 遷移MSSQL 數據庫到 Aurora

下面看一個簡單的demo。數據庫

豆子打算建立一個RDS的 MSSQL 數據庫,一個 RDS的 Aurora 數據庫。在MSSQL上我會建立一個sample的數據庫,而後經過 SCT 進行 Schema 轉換,而後經過 DMS 進行數據庫的同步遷移。安全

下面看看具體操做服務器

首先建立 RDS MSSQL 數據庫

進入 AWS RDS
AWS 遷移MSSQL 數據庫到 Aurora網絡

新建一個 MSSQL 數據庫,注意我選擇的類型是 SQL Server Standard Edition。DMS不支持 Express版本的遷移。ide

AWS 遷移MSSQL 數據庫到 Aurora

數據庫Instance的名字和密碼工具

AWS 遷移MSSQL 數據庫到 Aurora

測試的服務器不須要太好,最便宜的就行
AWS 遷移MSSQL 數據庫到 Aurora測試

選擇VPC (這裏有個坑稍後我會提到)ui

AWS 遷移MSSQL 數據庫到 Aurora

重點,注意看他的價格,一個月要768 美圓!!計算機網絡

AWS 遷移MSSQL 數據庫到 Aurora

這個是經過下面的價格算出來的。新手作這個實驗大概要2個小時左右,兩臺服務器大概開支會在5刀左右,因此作完了實驗必定要記得刪除本身的數據庫!!

AWS 遷移MSSQL 數據庫到 Aurora

數據庫建立中

AWS 遷移MSSQL 數據庫到 Aurora

我順便建立了一個安全組,容許我本身的機器訪問1433和3306端口 。(目前爲止沒問題,可是這是第二個坑,後面會有問題)

AWS 遷移MSSQL 數據庫到 Aurora

按照上面的操做步驟,我又建立了一個 Aurara的數據庫,他會自動建立一個cluster,而後把你新建的成員放在裏面(即便只有一個)

最後個人兩個RDS的Instance就建立好了。demo1 是 MSSQL,作爲個人source,demo2是Aurora,做爲destination
AWS 遷移MSSQL 數據庫到 Aurora

建立好了之後,我須要生成一些測試用的table和數據。 首先看看 MSSQL的 Endpoint
AWS 遷移MSSQL 數據庫到 Aurora

在個人本地電腦上經過MSSQL Management 工具鏈接。理論上,這一步應該很簡單,若是個人安全組策略正確的話。這裏我碰見了第一個坑。個人本地電腦網絡和AWS VPC直接是 S2S 的鏈接,而後AWS認爲個人計算機屬於內網,他很智能地把他的域名解析爲內部IP。第一次我測試的時候是把RDS配置在另一個不一樣的VPC裏面,個人計算機和這個VPC的網絡之間並無路由,也沒有配置Gateway,內網訪問是不通的,儘管他有一個公網IP,可是AWS自動給我解析爲內網IP以後,個人路由會找不到對應的路徑致使我始終沒法訪問。最後我只能重建RDS,而後確保他在的VPC和個人計算機網絡之間存在了S2S鏈接關係。

鏈接以後,執行SQL腳本,他會建立一堆表,並插入一些測試數據

AWS 遷移MSSQL 數據庫到 Aurora

下載安裝 Schema Conversion Tool

下一步咱們須要在個人電腦上安裝 SCT 工具。
在下面的鏈接上下載SCI,MSSQL 的 JDBC 以及 MySQL的 JDBC

https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html

而後打開SCT,選擇新建一個項目

AWS 遷移MSSQL 數據庫到 Aurora

分別鏈接 MSSQL 和 Aurora
AWS 遷移MSSQL 數據庫到 Aurora

AWS 遷移MSSQL 數據庫到 Aurora

鏈接成功
AWS 遷移MSSQL 數據庫到 Aurora

勾選咱們要遷移的數據庫,以後在Action 選擇 Create Report

AWS 遷移MSSQL 數據庫到 Aurora

他會掃描你的 MSSQL 數據庫進行評估是否能夠轉換。

下面是生成的報告

AWS 遷移MSSQL 數據庫到 Aurora

下一步就是進行Schema的轉換

AWS 遷移MSSQL 數據庫到 Aurora

幾秒以後 能夠看見Schema已經在Aurora這邊生成了

AWS 遷移MSSQL 數據庫到 Aurora

配置DMS

登陸AWS 控制檯 , 選擇 Database Migration Service。這裏我須要建立一個用來同步的Instance,相似EC2實例,可是由AWS來管理,建立Source Endpoint和 Destination Endpoint,最後建立一個任務來同步。

首先來建立一個 replication instance

AWS 遷移MSSQL 數據庫到 Aurora

注意他所選擇的VPC Secuirty Group 是我以前建立的,這裏實際上是有問題的
AWS 遷移MSSQL 數據庫到 Aurora

建立完成以後 咱們來繼續建立Endpoint。

AWS 遷移MSSQL 數據庫到 Aurora

Endpoint 建立完以後必定要測試 Connection。
AWS 遷移MSSQL 數據庫到 Aurora

建立以後的樣子

AWS 遷移MSSQL 數據庫到 Aurora

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

AWS 遷移MSSQL 數據庫到 Aurora

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

首先,我以前配置這個SG的時候,只容許了我本地的機器訪問,個人DMS的服務器是不行的,所以這裏咱們須要把這個DMS的內網IP也加進去;

第二:SG的outbound rule默認是全部都打開的,我無心中進行了限制,所以須要確認outbound rule是放行的

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

AWS 遷移MSSQL 數據庫到 Aurora

修改個人SG inbound rule 和 outbound rule

AWS 遷移MSSQL 數據庫到 Aurora

修改個人NACL

AWS 遷移MSSQL 數據庫到 Aurora

再測試一下鏈接成功

AWS 遷移MSSQL 數據庫到 Aurora

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

AWS 遷移MSSQL 數據庫到 Aurora

添加一個 selection rule

AWS 遷移MSSQL 數據庫到 Aurora

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

AWS 遷移MSSQL 數據庫到 Aurora

MSSQL Management 工具 鏈接 進入查詢一下數據
AWS 遷移MSSQL 數據庫到 Aurora

MySQL workbench 鏈接進入查詢一下 數據一致,遷移成功
AWS 遷移MSSQL 數據庫到 Aurora

相關文章
相關標籤/搜索