隨著 AI時代來臨,如何整合原有資料庫與 AI的應用變成各品牌和業主的當務之急。以台灣目前主要應用的雲端資料庫服務,多以 Amazon Web Services (俗稱AWS) 與 Google所提供的 Google Cloud Platform (俗稱GCP)的服務為主;但畢竟 AWS與 GCP分屬兩個不同的服務商,如何整合兩邊資料庫的應用便是一大問題。
撰寫這篇文章的契機是因為工作上的需求,想透過 GCP提供的 BigQuery與 Cloud Storge來存取儲存於 AWS RDS上的 MySQL資料。無奈搜尋引擎上對於這部分的參考文獻特別少(包含英文搜尋結果),再加上 Google與 AWS官方提供的說明文件相當簡要,也誕生了撰寫這邊教學文的契機,作為自己一個技術實作上的筆記,和提供給需要的朋友參考。
Datastream串接 AWS RDS實作前的準備
在正式進行 GCP Datastream與 AWS DRS的串接前,需要事先完成以下步驟:
申請 CCP帳戶與建立 AWS RDS資料庫
- 申請 Google Cloud Platform 帳戶。
- 建立 AWS RDS資料庫,並確認擁有資料庫管理的帳號與密碼。
因為上述步驟是屬於另外一個教學的範疇,Google上對於如何完成上述兩個步驟的方式也都有詳細的說明參考文章,所以本文不特別做說明,主要還是把重點放在 GCP Datastream與 AWS DRS的串接上。
![[教學] 透過 GCP Datastram 讀取 AWS RDS資料庫步驟流程 2 AWS RDS是目前被廣泛運用的資料庫存取平台。](https://www.phototravel.tw/wp-content/uploads/2023/05/image-1160x639.png)
透過 AWS EC2執行個體存取非公開 AWS RDS資料庫
需要特別注意的是,為了在資料存取上有一定的安全性,通常會針對 AWS RDS設定為「不可公開存取」,雖然增加了安全性的控管,卻也導致在 Datastream的串接設定上變得比較複雜,也是整個實作流程中遇到阻礙最多的地方。
具體解決的方式是透過 AWS EC2作為 AWS內部存取資料庫的「跳板」,GCP再透過 EC2存取資料庫檔案,流程上有點像是下圖:
![[教學] 透過 GCP Datastram 讀取 AWS RDS資料庫步驟流程 3 GCP存取AWS RDS流程](https://www.phototravel.tw/wp-content/uploads/2023/05/image-1.png)
建立 AWS EC2執行個體流程如下:
- 進入 AWS EC2控制台,選擇「啟動執行個體」。
- 選擇 Amazon Machine Image (AMI)。
- 選擇執行個體類型,建議可以選擇夠用的規格就可以,畢竟只是當跳板,如果選擇較大的主機產生費用也會比較高(我是選擇 t2.micro)。
- 建立新的金鑰對,建立後務必妥善保存金鑰對的.pem檔案,在後續流程都會使用到。
- 網路設定中的網路,選擇 RDS 資料庫執行個體使用的 VPC。
- 子網路設定可以先略過,等待 EC2建立完成後再進行串接。
- 自動指派公用 IP,確認選取「啟用」。
- 防火牆(安全群組)建議先將本機的 IP設定至安全群組,先選取「允許 SSH流量」的選項,並選擇「我的IP」;這樣的步驟可在執行個體建立完成後先在本機端進行連線測試。
- 確認資料設定無誤後,點擊「啟動執行個體」,等待執行個體建立完成。
將 EC2連接至 RDS資料庫
在執行個體建立完成後,選擇「執行個體」➝ 「動作」➝「聯網」➝「連接 RDS資料庫」。進入連接 RDS資料庫頁面後,選擇要關聯的 RDS資料庫叢集或執行個體後,點擊「連線」,AWS即會自動將此 EC2執行個體加入關聯的 RDS安全群組中。
![[教學] 透過 GCP Datastram 讀取 AWS RDS資料庫步驟流程 4 將EC2與RDS資料庫進行關聯。](https://www.phototravel.tw/wp-content/uploads/2023/05/image-2.png)
從本機電腦連接至 RDS資料庫執行個體
此步驟的設定目的是希望先透過本機電腦的連線,測試是否可正常透過 EC2連接至非公開IP的 RDS資料庫。以下步驟是使用 MySQL Workbench 用戶端連接至 RDS資料庫。
- 建立一個新連線,選取 Standard TCP/IP over SSH (標準 TCP/IP over SSH) 作為連線方法。
- SSH Hostname輸入 EC2執行個體中的「公有DNS名稱」,可透過 EC2執行個體中的「連線」➝「SSH用戶端」查詢公有 DNS。
- SSH Username輸入 EC2執行個體使用者名稱,如果沒有特別修改,預設會是 ec2-user。
- SSH Key請上傳前述步驟中,建立 EC2執行個體下載的金鑰對。
- MySQL Hostname輸入 AWS RDS資料庫的主機IP。
- MySQL Server Port輸入 AWS RDS資料庫的連接埠(預設為3306)。
- Username輸入 AWS RDS資料庫的使用者名稱。
- Password輸入 AWS RDS資料庫的密碼。
- 完成上述步驟,點擊「測試連線」,如果出現 Successful訊息即代表連線成功。
![[教學] 透過 GCP Datastram 讀取 AWS RDS資料庫步驟流程 5 從本機電腦連接至 RDS資料庫執行個體](https://www.phototravel.tw/wp-content/uploads/2023/05/image-3.png)
建立 GCP Datastream串流讀取 AWS DRS資料
經過上述漫長的設定後,終於可以開始建立 GCP Datastream與 AWS DRS資料庫間的串流。建立方式請參考下述步驟:
建立Datastream串流
- 進入 GCP控制台,並選取 Datestream。(或可直接透過上方搜尋輸入Datastream)。
- 點擊「建立串流」。
- 輸入串流名稱與串流ID。地區部分建議選擇跟AWS主機相同的區域。
- 來源類型選擇 MySQL,目的地類型可依自己需求選擇 Cloud Storage或 BigQuery。選擇完成後,在執行下一步驟前,GCP控制台會出現必備條件的提示,需先自行至 AWS RDS調整相關設定(都有中文說明應該不難)。
![[教學] 透過 GCP Datastram 讀取 AWS RDS資料庫步驟流程 6 在建立Datastream串流前,需先至AWS RDS資料庫調整相關設定。](https://www.phototravel.tw/wp-content/uploads/2023/05/image-4.png)
定義並測試來源
此步驟主要是輸入稍早在 AWS建立的 EC2執行個體資料與要連結的 AWS RDS資料。設定說明如下:
- 輸入連線設定檔與ID。
- 連線詳細資料中,輸入 AWS RDS資料庫的主機名稱或IP、通訊埠、資料庫使用者名稱與連線密碼。
- 保護與來源的連線中,如果有透過 SSL的方式連結至資料庫,則須於此步驟上傳 SSL憑證。AWS提供的憑證可於 AWS憑證說明頁面中取得。若沒有透過 SSL連線則選取「無」。
- 定義連線方式中,選擇「正向安全殼層(SSH)通道」連線方式。
- 在 SSH設定中,依序填入 AWS EC2中的 SSH公開DNS或IP、通訊埠(預設為22)、使用者名稱,並上傳金鑰對檔案(.pem檔)。
- 進入 AWS EC2控制台,選取「網路與安全」中的「安全群組」,建立一組安全群組,並在「傳入規則」中新增規則,將 Datastream提供的許可IP名單加入(類型選擇SSH)。
- 並選取稍早步驟建立的執行個體,點擊「動作」➝「聯網」➝「變更安全群組」,加入剛剛建立的安全群組。
- 點擊「測試連線設定檔」,如果有成功連線即會出現「已通過測試」的訊息。
設定來源
設定來源的步驟中,選取要納入 AWS RDS資料庫與資料表,建議可以納入需要使用的資料表即可,可降低每次更新資料花費的費用。如沒有問題選取完成即可點擊「繼續」下一步驟。
![[教學] 透過 GCP Datastram 讀取 AWS RDS資料庫步驟流程 7 [教學] 透過 GCP Datastram 讀取 AWS RDS資料庫步驟流程](https://www.phototravel.tw/wp-content/uploads/2023/05/image-5.png)
定義目的地
選取要存放在 GCP的 Cloud Storage或 BigQuery位置。
![[教學] 透過 GCP Datastram 讀取 AWS RDS資料庫步驟流程 8 [教學] 透過 GCP Datastram 讀取 AWS RDS資料庫步驟流程](https://www.phototravel.tw/wp-content/uploads/2023/05/image-6.png)
設定目的地
設定串流的目的地,可依照自己的需求進行調整。
![[教學] 透過 GCP Datastram 讀取 AWS RDS資料庫步驟流程 9 [教學] 透過 GCP Datastram 讀取 AWS RDS資料庫步驟流程](https://www.phototravel.tw/wp-content/uploads/2023/05/image-7.png)
查看並建立串流
最後 Datastream會將上述的設定都條列出來,讓使用者再次檢視設定內容,也可點擊「驗證串流」的按鈕,檢查是否有設定錯誤的地方。
![[教學] 透過 GCP Datastram 讀取 AWS RDS資料庫步驟流程 10 [教學] 透過 GCP Datastram 讀取 AWS RDS資料庫步驟流程](https://www.phototravel.tw/wp-content/uploads/2023/05/image-8.png)
啟動串流
如上述串流的建立步驟已完成,可於 Datastream的「串流」頁面中看到剛剛建立的串流,選擇要啟動的串流後點擊「啟動」按鈕,Datastream即會開始從 AWS RDS撈取需要的資料,後續就可進行存取或透過 BigQuery進行分析查詢。
以上就是從 GCP Datastream取得 AWS RDS資料庫的詳細設定步驟,提供給需要的朋友參考;如果有遇到相關問題的朋友也歡迎留言討論,大家一起為大數據做調研與努力!