本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Terraform 設定資料庫遷移的 CI/CD 管道
由 Dr. Rahul Sharad Gaikwad (AWS)、Aarti Rajput (AWS)、Ashish Bhatt (AWS)、Aniket Dekate (AWS)、Naveen Suthar (AWS)、Nadeem Rahaman (AWS)、Ruchika Modi (AWS) 和 Tamilselvan P (AWS) 建立
Summary
此模式旨在建立持續整合和持續部署 (CI/CD) 管道,以可靠且自動化的方式管理資料庫遷移。它涵蓋佈建必要基礎設施、遷移資料和自訂結構描述變更的程序,方法是使用 Terraform,這是基礎設施做為程式碼 (IaC) 工具。
具體而言, 模式會設定 CI/CD 管道,將內部部署 Microsoft SQL Server 資料庫遷移至 上的 Amazon Relational Database Service (Amazon RDS) AWS。您也可以使用此模式,將虛擬機器 (VM) 或其他雲端環境中的 SQL Server 資料庫遷移至 Amazon RDS。
此模式可解決與資料庫管理和部署相關的下列挑戰:
手動資料庫部署非常耗時、容易出錯,而且缺乏跨環境的一致性。
協調基礎設施佈建、資料遷移和結構描述變更可能很複雜且難以管理。
確保資料完整性,並在資料庫更新期間將停機時間降至最低,對於生產系統至關重要。
此模式提供下列優點:
透過實作資料庫遷移的 CI/CD 管道,簡化更新和部署資料庫變更的程序。這可降低發生錯誤的風險、確保環境間的一致性,並將停機時間降至最低。
有助於提高可靠性、效率和協同合作。可在資料庫更新期間加快上市時間並減少停機時間。
協助您採用現代 DevOps 實務進行資料庫管理,進而提高軟體交付程序的敏捷性、可靠性和效率。
先決條件和限制
先決條件
作用中 AWS 帳戶
本機電腦上已安裝 Terraform 0.12 或更新版本 (如需說明,請參閱 Terraform 文件
) 來自 HashiCorp 的 Terraform AWS 提供者 3.0.0 版或更新版本 (請參閱此提供者的 GitHub 儲存庫
) 最低權限 AWS Identity and Access Management (IAM) 政策 (請參閱部落格文章撰寫最低權限 IAM 政策的技術
)
架構
此模式實作下列架構,為資料庫遷移程序提供完整的基礎設施。

在此架構中:
來源資料庫是現場部署、虛擬機器 (VM) 或由其他雲端供應商託管的 SQL Server 資料庫。此圖假設來源資料庫位於內部部署資料中心。
內部部署資料中心和 是透過 VPN 或 AWS 連線 AWS Direct Connect 來連線。這可在來源資料庫和 AWS 基礎設施之間提供安全通訊。
目標資料庫是 上的虛擬私有雲端 (VPC) 內部託管的 Amazon RDS 資料庫, AWS 其藉助資料庫佈建管道。
AWS Database Migration Service (AWS DMS) 會將您的內部部署資料庫複寫至 AWS。它用於設定來源資料庫複寫到目標資料庫。
下圖顯示設定不同層級資料庫遷移程序的基礎設施,其中包含佈建、 AWS DMS 設定和驗證。

在此程序中:
驗證管道會驗證所有檢查。當所有必要的驗證完成時,整合管道會移至下一個步驟。
資料庫佈建管道由各種階段組成,這些 AWS CodeBuild 階段會對資料庫提供的 Terraform 程式碼執行 Terraform 動作。當這些步驟完成時,它會在目標中部署資源 AWS 帳戶。
AWS DMS 管道由各種 CodeBuild 階段組成,這些階段會執行測試,然後使用 IaC 佈建執行遷移的 AWS DMS 基礎設施。
工具
AWS 服務 和 工具
AWS CodeBuild 是一種全受管持續整合服務,可編譯原始程式碼、執行測試,並產生ready-to-deploy的軟體套件。
AWS CodePipeline 是一種全受管持續交付服務,可協助您自動化發行管道,以快速且可靠地進行應用程式和基礎設施更新。
Amazon Relational Database Service (Amazon RDS) 可協助您在 中設定、操作和擴展關聯式資料庫 AWS 雲端。
Amazon Simple Storage Service (Amazon S3) 是一種物件儲存服務,可提供可擴展性、資料可用性、安全性和效能。
AWS Database Migration Service (AWS DMS) 可協助您將資料存放區遷移到 AWS 雲端 或在雲端和內部部署設定的組合之間遷移。
其他服務
Terraform
是 HashiCorp 的 IaC 工具,可協助您建立和管理雲端和內部部署資源。
程式碼儲存庫
此模式的程式碼可在 GitHub 資料庫遷移 DevOps 架構中使用 Terraform 範例
最佳實務
實作資料庫遷移的自動化測試,以驗證結構描述變更和資料完整性的正確性。這包括單元測試、整合測試和end-to-end測試。
為您的資料庫實作強大的備份和還原策略,特別是在遷移之前。這可確保資料完整性,並在發生故障時提供備用選項。
實作強大的復原策略,以在遷移期間發生故障或問題時還原資料庫變更。這可能包括轉返至先前的資料庫狀態或還原個別遷移指令碼。
設定監控和記錄機制,以追蹤資料庫遷移的進度和狀態。這可協助您快速識別和解決問題。
史詩
任務 | 描述 | 所需的技能 |
---|---|---|
在本機工作站上設定 Git。 | 遵循 Git 文件中的指示,在本機工作站上安裝和設定 Git | DevOps 工程師 |
建立專案資料夾,並從 GitHub 儲存庫新增檔案。 |
| DevOps 工程師 |
任務 | 描述 | 所需的技能 |
---|---|---|
更新必要的參數。 |
在本機工作站的 | DevOps 工程師 |
初始化 Terraform 組態。 | 在
| DevOps 工程師 |
預覽 Terraform 計劃。 | 若要建立 Terraform 計劃,請輸入下列命令:
Terraform 會評估組態檔案,以判斷宣告資源的目標狀態。然後,它會比較目標狀態與目前狀態,並建立計劃。 | DevOps 工程師 |
驗證計劃。 | 檢閱計劃並確認其在您的目標中設定所需的架構 AWS 帳戶。 | DevOps 工程師 |
部署解決方案。 |
| DevOps 工程師 |
任務 | 描述 | 所需的技能 |
---|---|---|
驗證部署。 | 驗證 1. 登入 AWS Management Console,然後開啟 AWS CodePipeline 主控台 2. 在導覽窗格中,選擇管道。 3. 選擇 4. 驗證管道執行是否成功完成。 | DevOps 工程師 |
任務 | 描述 | 所需的技能 |
---|---|---|
清除基礎設施。 |
| DevOps 工程師 |
相關資源
AWS 文件
Terraform 文件