選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用 Terraform 設定資料庫遷移的 CI/CD 管道 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 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 政策的技術)

架構

此模式實作下列架構,為資料庫遷移程序提供完整的基礎設施。

CI/CD 管道架構,用於將內部部署 SQL Server 資料庫遷移至 AWS 上的 Amazon RDS。

在此架構中:

  • 來源資料庫是現場部署、虛擬機器 (VM) 或由其他雲端供應商託管的 SQL Server 資料庫。此圖假設來源資料庫位於內部部署資料中心。

  • 內部部署資料中心和 是透過 VPN 或 AWS 連線 AWS Direct Connect 來連線。這可在來源資料庫和 AWS 基礎設施之間提供安全通訊。

  • 目標資料庫是 上的虛擬私有雲端 (VPC) 內部託管的 Amazon RDS 資料庫, AWS 其藉助資料庫佈建管道。

  • AWS Database Migration Service (AWS DMS) 會將您的內部部署資料庫複寫至 AWS。它用於設定來源資料庫複寫到目標資料庫。

下圖顯示設定不同層級資料庫遷移程序的基礎設施,其中包含佈建、 AWS DMS 設定和驗證。

從現場部署到 AWS 的遷移程序 CI/CD 管道詳細資訊。

在此程序中:

  • 驗證管道會驗證所有檢查。當所有必要的驗證完成時,整合管道會移至下一個步驟。

  • 資料庫佈建管道由各種階段組成,這些 AWS CodeBuild 階段會對資料庫提供的 Terraform 程式碼執行 Terraform 動作。當這些步驟完成時,它會在目標中部署資源 AWS 帳戶。

  • AWS DMS 管道由各種 CodeBuild 階段組成,這些階段會執行測試,然後使用 IaC 佈建執行遷移的 AWS DMS 基礎設施。

工具

AWS 服務 和 工具

其他服務

  • Terraform 是 HashiCorp 的 IaC 工具,可協助您建立和管理雲端和內部部署資源。

程式碼儲存庫

此模式的程式碼可在 GitHub 資料庫遷移 DevOps 架構中使用 Terraform 範例儲存庫。

最佳實務

  • 實作資料庫遷移的自動化測試,以驗證結構描述變更和資料完整性的正確性。這包括單元測試、整合測試和end-to-end測試。

  • 為您的資料庫實作強大的備份和還原策略,特別是在遷移之前。這可確保資料完整性,並在發生故障時提供備用選項。

  • 實作強大的復原策略,以在遷移期間發生故障或問題時還原資料庫變更。這可能包括轉返至先前的資料庫狀態或還原個別遷移指令碼。

  • 設定監控和記錄機制,以追蹤資料庫遷移的進度和狀態。這可協助您快速識別和解決問題。

史詩

任務描述所需的技能

在本機工作站上設定 Git。

遵循 Git 文件中的指示,在本機工作站上安裝和設定 Git

DevOps 工程師

建立專案資料夾,並從 GitHub 儲存庫新增檔案。

  1. 開啟此模式的 GitHub 儲存庫

  2. 選擇程式碼以查看複製選項,並複製 HTTPS 索引標籤中提供的 URL。

  3. 在工作站上為您的專案建立資料夾。

  4. 開啟終端機並導覽至此資料夾。

  5. 複製 GitHub 儲存庫:

    git clone <github-repository-url>

    其中 <github-repository-url>是您在步驟 2 中複製的 URL。

  6. 複製完成後,請前往專案資料夾中的複製儲存庫:

    cd <folder-name>/aws-terraform-db-migration-framework-samples
  7. 在您選擇的整合式開發環境 (IDE) 中開啟此專案。

DevOps 工程師

設定您的本機工作站

任務描述所需的技能

在本機工作站上設定 Git。

遵循 Git 文件中的指示,在本機工作站上安裝和設定 Git

DevOps 工程師

建立專案資料夾,並從 GitHub 儲存庫新增檔案。

  1. 開啟此模式的 GitHub 儲存庫

  2. 選擇程式碼以查看複製選項,並複製 HTTPS 索引標籤中提供的 URL。

  3. 在工作站上為您的專案建立資料夾。

  4. 開啟終端機並導覽至此資料夾。

  5. 複製 GitHub 儲存庫:

    git clone <github-repository-url>

    其中 <github-repository-url>是您在步驟 2 中複製的 URL。

  6. 複製完成後,請前往專案資料夾中的複製儲存庫:

    cd <folder-name>/aws-terraform-db-migration-framework-samples
  7. 在您選擇的整合式開發環境 (IDE) 中開啟此專案。

DevOps 工程師
任務描述所需的技能

更新必要的參數。

ssm-parameters.sh 檔案會存放所有必要 AWS Systems Manager 的參數。您可以使用專案的自訂值來設定這些參數。

在本機工作站的 setup/db-ssm-params 資料夾中,開啟 ssm-parameters.sh 檔案並設定這些參數,再執行 CI/CD 管道。

DevOps 工程師

初始化 Terraform 組態。

db-cicd-integration 資料夾中,輸入下列命令來初始化包含 Terraform 組態檔案的工作目錄:

terraform init
DevOps 工程師

預覽 Terraform 計劃。

若要建立 Terraform 計劃,請輸入下列命令:

terraform plan -var-file="terraform.sample"

Terraform 會評估組態檔案,以判斷宣告資源的目標狀態。然後,它會比較目標狀態與目前狀態,並建立計劃。

DevOps 工程師

驗證計劃。

檢閱計劃並確認其在您的目標中設定所需的架構 AWS 帳戶。

DevOps 工程師

部署解決方案。

  1. 輸入下列命令以套用計劃:

    terraform apply -var-file="terraform.sample"
  2. 輸入 yes 以確認。Terraform 會建立、更新或銷毀基礎設施,以達到組態檔案中宣告的目標狀態。如需序列的詳細資訊,請參閱此模式的架構區段。

DevOps 工程師

佈建目標架構

任務描述所需的技能

更新必要的參數。

ssm-parameters.sh 檔案會存放所有必要 AWS Systems Manager 的參數。您可以使用專案的自訂值來設定這些參數。

在本機工作站的 setup/db-ssm-params 資料夾中,開啟 ssm-parameters.sh 檔案並設定這些參數,再執行 CI/CD 管道。

DevOps 工程師

初始化 Terraform 組態。

db-cicd-integration 資料夾中,輸入下列命令來初始化包含 Terraform 組態檔案的工作目錄:

terraform init
DevOps 工程師

預覽 Terraform 計劃。

若要建立 Terraform 計劃,請輸入下列命令:

terraform plan -var-file="terraform.sample"

Terraform 會評估組態檔案,以判斷宣告資源的目標狀態。然後,它會比較目標狀態與目前狀態,並建立計劃。

DevOps 工程師

驗證計劃。

檢閱計劃並確認其在您的目標中設定所需的架構 AWS 帳戶。

DevOps 工程師

部署解決方案。

  1. 輸入下列命令以套用計劃:

    terraform apply -var-file="terraform.sample"
  2. 輸入 yes 以確認。Terraform 會建立、更新或銷毀基礎設施,以達到組態檔案中宣告的目標狀態。如需序列的詳細資訊,請參閱此模式的架構區段。

DevOps 工程師
任務描述所需的技能

驗證部署。

驗證db-cicd-integration管道的狀態,以確認資料庫遷移已完成。

1. 登入 AWS Management Console,然後開啟 AWS CodePipeline 主控台

2. 在導覽窗格中,選擇管道

3. 選擇db-cicd-integration管道。

4. 驗證管道執行是否成功完成。

DevOps 工程師

驗證部署

任務描述所需的技能

驗證部署。

驗證db-cicd-integration管道的狀態,以確認資料庫遷移已完成。

1. 登入 AWS Management Console,然後開啟 AWS CodePipeline 主控台

2. 在導覽窗格中,選擇管道

3. 選擇db-cicd-integration管道。

4. 驗證管道執行是否成功完成。

DevOps 工程師
任務描述所需的技能

清除基礎設施。

  1. 專案完成後,請使用 命令清除您建立的基礎設施:

    terraform destroy --var-file=terraform.sample
  2. 輸入 yes 以確認。

DevOps 工程師

使用後清除基礎設施

任務描述所需的技能

清除基礎設施。

  1. 專案完成後,請使用 命令清除您建立的基礎設施:

    terraform destroy --var-file=terraform.sample
  2. 輸入 yes 以確認。

DevOps 工程師

相關資源

AWS 文件

Terraform 文件

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。