AWS 提供了數據庫遷移的服務,叫作 Database Migration Service ( DMS)。 經過這個服務,咱們能夠實現一樣平臺的遷移,例如 MySQL 到 MySQL,或者不一樣平臺的遷移,好比 MS SQL 到 Aurora。前者能夠直接遷移,後者則須要使用 Schema Converter Tool (SCT)對 Schema進行 轉換才能遷移。固然,若是數據庫自己很小,那麼可能直接手動拷貝的效率會更高了。html
下面看一個簡單的demo。數據庫
豆子打算建立一個RDS的 MSSQL 數據庫,一個 RDS的 Aurora 數據庫。在MSSQL上我會建立一個sample的數據庫,而後經過 SCT 進行 Schema 轉換,而後經過 DMS 進行數據庫的同步遷移。安全
下面看看具體操做服務器
進入 AWS RDS
網絡
新建一個 MSSQL 數據庫,注意我選擇的類型是 SQL Server Standard Edition。DMS不支持 Express版本的遷移。ide
數據庫Instance的名字和密碼工具
測試的服務器不須要太好,最便宜的就行
測試
選擇VPC (這裏有個坑稍後我會提到)ui
重點,注意看他的價格,一個月要768 美圓!!計算機網絡
這個是經過下面的價格算出來的。新手作這個實驗大概要2個小時左右,兩臺服務器大概開支會在5刀左右,因此作完了實驗必定要記得刪除本身的數據庫!!
數據庫建立中
我順便建立了一個安全組,容許我本身的機器訪問1433和3306端口 。(目前爲止沒問題,可是這是第二個坑,後面會有問題)
按照上面的操做步驟,我又建立了一個 Aurara的數據庫,他會自動建立一個cluster,而後把你新建的成員放在裏面(即便只有一個)
最後個人兩個RDS的Instance就建立好了。demo1 是 MSSQL,作爲個人source,demo2是Aurora,做爲destination
建立好了之後,我須要生成一些測試用的table和數據。 首先看看 MSSQL的 Endpoint
在個人本地電腦上經過MSSQL Management 工具鏈接。理論上,這一步應該很簡單,若是個人安全組策略正確的話。這裏我碰見了第一個坑。個人本地電腦網絡和AWS VPC直接是 S2S 的鏈接,而後AWS認爲個人計算機屬於內網,他很智能地把他的域名解析爲內部IP。第一次我測試的時候是把RDS配置在另一個不一樣的VPC裏面,個人計算機和這個VPC的網絡之間並無路由,也沒有配置Gateway,內網訪問是不通的,儘管他有一個公網IP,可是AWS自動給我解析爲內網IP以後,個人路由會找不到對應的路徑致使我始終沒法訪問。最後我只能重建RDS,而後確保他在的VPC和個人計算機網絡之間存在了S2S鏈接關係。
鏈接以後,執行SQL腳本,他會建立一堆表,並插入一些測試數據
下一步咱們須要在個人電腦上安裝 SCT 工具。
在下面的鏈接上下載SCI,MSSQL 的 JDBC 以及 MySQL的 JDBC
https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Installing.html
而後打開SCT,選擇新建一個項目
分別鏈接 MSSQL 和 Aurora
鏈接成功
勾選咱們要遷移的數據庫,以後在Action 選擇 Create Report
他會掃描你的 MSSQL 數據庫進行評估是否能夠轉換。
下面是生成的報告
下一步就是進行Schema的轉換
幾秒以後 能夠看見Schema已經在Aurora這邊生成了
登陸AWS 控制檯 , 選擇 Database Migration Service。這裏我須要建立一個用來同步的Instance,相似EC2實例,可是由AWS來管理,建立Source Endpoint和 Destination Endpoint,最後建立一個任務來同步。
首先來建立一個 replication instance
注意他所選擇的VPC Secuirty Group 是我以前建立的,這裏實際上是有問題的
建立完成以後 咱們來繼續建立Endpoint。
Endpoint 建立完以後必定要測試 Connection。
建立以後的樣子
建立好了以後來測試一下,不通!!
我在這裏卡了至少1個小時。最後發現有3個坑在這裏。
首先,我以前配置這個SG的時候,只容許了我本地的機器訪問,個人DMS的服務器是不行的,所以這裏咱們須要把這個DMS的內網IP也加進去;
第二:SG的outbound rule默認是全部都打開的,我無心中進行了限制,所以須要確認outbound rule是放行的
第三:我有一個NACL在這個公網subnet上,所以我還得在NACL上面放行
修改個人SG inbound rule 和 outbound rule
修改個人NACL
再測試一下鏈接成功
最後,咱們來建立一個任務進行同步
添加一個 selection rule
等待2 分鐘以後 進度條顯示成功
MSSQL Management 工具 鏈接 進入查詢一下數據
MySQL workbench 鏈接進入查詢一下 數據一致,遷移成功