本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
由 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 自訂結構描述變更的程序,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 Provider 3.0.0 版或更新版本 (請參閱此供應商的 GitHub 儲存庫
) 最低權限 AWS Identity and Access Management (IAM) 政策 (請參閱部落格文章撰寫最低權限 IAM 政策的技術
)
架構
此模式實作下列架構,為資料庫遷移程序提供完整的基礎設施。

在此架構中:
來源資料庫是現場部署、虛擬機器 (VM) 或由其他雲端提供者託管的 SQL Server 資料庫。此圖假設來源資料庫位於內部部署資料中心。
內部部署資料中心和 AWS 是透過 VPN 或 連線進行 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 階段組成,這些階段會執行測試,然後佈建 AWS DMS 基礎設施以使用 IaC 執行遷移。
工具
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 Database Migration DevOps Framework 中使用 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 文件