

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

# 將內部部署 MySQL 資料庫遷移至 Amazon EC2
<a name="migrate-an-on-premises-mysql-database-to-amazon-ec2"></a>

*Lorenzo Mota，Amazon Web Services*

## 摘要
<a name="migrate-an-on-premises-mysql-database-to-amazon-ec2-summary"></a>

此模式提供將內部部署 MySQL 資料庫遷移至 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上 MySQL 資料庫的指引。模式討論使用 AWS Database Migration Service (AWS DMS) 或原生 MySQL 工具進行遷移，例如 **mysqldump**。它著重於完整資料庫遷移至 MySQL 資料庫執行個體。

模式主要用於DBAs解決方案架構師。它可用於小型或大型專案、測試或最終遷移階段。建議您在生產環境中使用此模式之前，至少執行一個測試週期。

## 先決條件和限制
<a name="migrate-an-on-premises-mysql-database-to-amazon-ec2-prereqs"></a>

**先決條件**
+ 作用中的 AWS 帳戶
+ 內部部署資料中心中的 MySQL 來源資料庫 

**產品版本**
+ MySQL 5.5 版及更新版本
+ Amazon EC2 支援的目標作業系統；請參閱 [Amazon EC2 FAQs](https://aws.amazon.com/ec2/faqs/)

## Architecture
<a name="migrate-an-on-premises-mysql-database-to-amazon-ec2-architecture"></a>

**來源 技術堆疊 **
+ 內部部署 MySQL 資料庫

**目標 技術堆疊 **
+ Amazon EC2 上的 MySQL 資料庫執行個體

**AWS 資料遷移方法**
+ AWS DMS
+ 原生 MySQL 工具，例如 [mysqldump](https://dev.mysql.com/doc/refman/en/mysqldump.html)，或第三方工具，例如 [Percona XtraBackup](https://www.percona.com/mysql/software/percona-xtrabackup)

**目標架構**

下圖說明切換後的目標 Amazon EC2 實作。

![\[Amazon EC2 上的 MySQL 資料庫執行個體，可複寫至待命 MySQL 資料庫執行個體。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/d22b3e25-4d3b-4bd7-ad07-501748d67752/images/34cab6f9-9107-4c3b-98ec-a6d7fa9f298a.png)


 

**AWS 資料遷移架構**

*使用 AWS DMS：*

下圖說明資料遷移工作流程，以 AWS DMS 為基礎，將完整和增量變更傳送至目標 MySQL 資料庫，直到切換為止。從內部部署到 的網路連線 AWS 取決於 SQL 用戶端的需求，且超出此模式的範圍。

![\[使用 AWS DMS 將資料傳送至 Amazon EC2 上的目標 MySQL 資料庫。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/d22b3e25-4d3b-4bd7-ad07-501748d67752/images/c906c45d-fac5-4bb9-b8c8-55e2f9f05fd8.png)


*使用其他 MySQL 工具：*

下圖說明使用 MySQL 工具從內部部署資料庫產生匯出傾印檔案的資料遷移工作流程。這些檔案會移至 Amazon Simple Storage Service (Amazon S3)，並在切換之前匯入目標 MySQL 資料庫。從內部部署到 的網路連線 AWS 取決於 SQL 用戶端的需求，且超出此模式的範圍。

![\[使用原生 MySQL 工具將資料傳送至 Amazon EC2 上的目標 MySQL 資料庫。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/d22b3e25-4d3b-4bd7-ad07-501748d67752/images/18e88877-7879-4a99-b985-25c56bf7c35f.png)


備註：
+ 根據停機時間考量和最終切換的資料庫大小，您可以使用 AWS DMS 或其他變更資料擷取 (CDC) 工具，將切換時間降至最低。當您使用 等 CDC 工具時 AWS DMS，您可以在幾分鐘內遷移至目標資料庫。 
+ 如果資料庫大小和網路延遲允許短暫的切換遷移時段，則 **mysqldump** 的離線策略就足夠了。（我們建議您執行測試以取得大約的時間。)
+ 通常，與離線選項相比，透過 的 CDC 策略 AWS DMS 需要更多的監控和複雜性。

## 工具
<a name="migrate-an-on-premises-mysql-database-to-amazon-ec2-tools"></a>

**AWS 服務**
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) 支援數個來源和目標資料庫。如需 支援的 MySQL 來源和目標資料庫的相關資訊 AWS DMS，請參閱[使用 MySQL 相容資料庫做為 的來源 AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.MySQL.html)和[使用 MySQL 相容資料庫做為 的目標 AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html)。如果您的來源資料庫不受 支援 AWS DMS，您必須選擇其他方法來遷移資料。

**其他工具**
+ [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html) 是一種 MySQL 公用程式，可從 MySQL 資料庫建立傾印檔案，以供備份或遷移之用。
+ [Percona XtraBackup](https://www.percona.com/mysql/software/percona-xtrabackup) 是一種開放原始碼公用程式，可在 MySQL 資料庫上執行非封鎖備份。

## 史詩
<a name="migrate-an-on-premises-mysql-database-to-amazon-ec2-epics"></a>

### 規劃遷移
<a name="plan-the-migration"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 驗證資料庫版本。 | 驗證來源和目標資料庫的版本。如需有關 支援的 MySQL 版本的資訊 AWS DMS，請參閱 AWS DMS 文件中的 [的來源 AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Sources.html)和 [的目標 AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Targets.html)。 | DBA | 
| 識別目標作業系統。 | 判斷目標作業系統的版本。如需 Amazon EC2 支援的目標作業系統清單，請參閱 [Amazon EC2 FAQs](https://aws.amazon.com/ec2/faqs/)。 | DBA，系統管理員 | 
| 識別硬體需求。 | 根據 MySQL 相容性清單和容量需求，判斷[目標伺服器執行個體](https://aws.amazon.com/rds/instance-types/)的硬體需求。 | DBA，系統管理員 | 
| 識別儲存需求。 | 判斷目標資料庫的儲存類型和容量。 | DBA，系統管理員 | 
| 識別網路需求。 | 判斷網路需求，例如延遲和頻寬。 | DBA，系統管理員 | 
| 選擇目標執行個體類型。 | 根據容量、儲存功能和網路功能選擇[目標執行個體類型](https://aws.amazon.com/rds/instance-types/)。 | DBA，系統管理員 | 
| 識別安全需求。 | 判斷來源和目標資料庫的網路或主機存取安全需求。 | DBA，系統管理員 | 
| 識別使用者。 | 決定 MySQL 軟體安裝的作業系統使用者清單。如需詳細資訊，請參閱 [MySQL 文件](https://dev.mysql.com/doc/mysql-security-excerpt/en/access-control.html)。 | DBA，系統管理員 | 
| 決定備份策略。 |  | DBA | 
| 判斷可用性需求。 |  | DBA | 
| 識別應用程式遷移或切換策略。 |  | DBA，系統管理員 | 

### 設定基礎設施
<a name="configure-the-infrastructure"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立虛擬私有雲端 (VPC) 和子網路。 | 設定路由表、網際網路閘道、NAT 閘道和子網路。如需詳細資訊，請參閱 Amazon [VPC 文件中的 VPC 組態選項](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc-options.html)。 | 系統管理員 | 
| 建立安全群組和網路存取控制清單 ACLs)。 | 根據您的需求設定連接埠 (MySQL 的預設值為 3306) 和 CIDR 範圍或特定 IPs。 | 系統管理員 | 
| 設定和啟動 EC2 執行個體。 | 如需說明，請參閱 Amazon [ EC2 文件中的啟動 EC2 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html)。 Amazon EC2  | 系統管理員 | 

### 安裝 MySQL 軟體
<a name="install-mysql-software"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立使用者和群組。 | 建立需要存取伺服器和資料庫的作業系統使用者和群組。如需詳細資訊，請參閱 MySQL 文件中的[存取控制和帳戶管理](https://dev.mysql.com/doc/refman/en/access-control.html)。 | DBA，系統管理員 | 
| 下載 MySQL。 | 下載 MySQL 軟體。如需指示和二進位檔，請參閱 [ MySQL 文件中的安裝](https://dev.mysql.com/doc/refman/en/installing.html) MySQL。 | DBA，系統管理員 | 
| 在 EC2 執行個體上安裝 MySQL 並設定伺服器。 | 連接至 EC2 執行個體並安裝 MySQL 軟體。如需詳細資訊，請參閱 Amazon [ EC2 文件中的連線至 EC2 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect.html)。 Amazon EC2  | DBA，系統管理員 | 

### 遷移資料 – 選項 1
<a name="migrate-data-option-1"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 使用原生 MySQL 或第三方工具遷移資料。 | 此選項使用原生 MySQL 工具或第三方工具來遷移資料庫物件和資料。如需說明，請參閱 [mysqldump](https://dev.mysql.com/doc/refman/en/mysqldump.html) 或 [Percona XtraBackup](https://docs.percona.com/percona-xtrabackup/2.4/index.html) 的文件 （適用於實體遷移）。如需使用這些工具的詳細資訊，請參閱 [ MySQL 到 Amazon RDS for MySQL 或 Amazon Aurora MySQL 的遷移選項](https://aws.amazon.com/blogs/database/migration-options-for-mysql-to-amazon-rds-for-mysql-or-amazon-aurora-mysql/) AWS 部落格文章。 | DBA | 

### 遷移資料 – 選項 2
<a name="migrate-data-option-2"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 使用 遷移資料 AWS DMS。 | 如需詳細資訊，請參閱 AWS DMS 文件中的 [的高階檢視 AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.HighLevelView.html)。 | DBA | 

### 準備切換
<a name="prepare-for-cutover"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 收集物件計數。 | 從來源資料庫和新目標資料庫收集物件計數。修正目標資料庫中的任何差異。 | DBA | 
| 檢查相依性。 | 確認往返其他資料庫的相依性 （連結） 仍然有效且正常運作。 | DBA | 
| 測試。 | 如果這是一個測試週期，請執行查詢測試、收集指標並修正任何問題。 | DBA | 

### 剪下
<a name="cut-over"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 移動用戶端。 | 將應用程式用戶端切換到新的基礎設施。 | DBA、應用程式擁有者、系統管理員 | 
| 提供支援。 | 在功能應用程式測試期間提供支援。 | DBA | 

### 關閉專案
<a name="close-the-project"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 關閉資源。 | 關閉 AWS DMS 複寫執行個體和其他暫時 AWS 資源。 | DBA，系統管理員 | 
| 檢閱和專案文件。 | 檢閱並驗證專案文件。 | DBA、應用程式擁有者、系統管理員 | 
| 收集指標。 | 收集遷移時間、與工具輔助變更相比的手動變更百分比，以及節省成本等指標。 | DBA、應用程式擁有者、系統管理員 | 
| 關閉專案。 | 關閉遷移專案並提供意見回饋。 | DBA、應用程式擁有者、系統管理員 | 
| 停用來源資料庫。 | 停用內部部署 MySQL 資料庫。 | DBA，系統管理員 | 

## 相關資源
<a name="migrate-an-on-premises-mysql-database-to-amazon-ec2-resources"></a>

**參考**
+ [Amazon EC2 文件](https://docs.aws.amazon.com/ec2/)
+ [AWS DMS 文件](https://docs.aws.amazon.com/dms/)
+ [Amazon EC2 定價](https://aws.amazon.com/ec2/pricing/)
+ [AWS DMS Step-by-Step演練](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html)
+ [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html)
+ [Percona XtraBackup](https://www.percona.com/mysql/software/percona-xtrabackup)

**教學課程和影片**
+ [入門 AWS DMS](https://aws.amazon.com/dms/getting-started/)
+ [Amazon EC2 簡介 – Elastic Cloud Server & Hosting with AWS](https://www.youtube.com/watch?v=TsRBftzZsQo) （影片）