

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

# 將資料遷移至 Amazon Aurora MySQL 資料庫叢集
<a name="AuroraMySQL.Migrating"></a>

您有幾個選項可從現有的資料庫將資料遷移至 Amazon Aurora MySQL 資料庫叢集。遷移選項還取決於要遷移的資料庫以及要遷移的資料大小。

有兩種不同類型的遷移：實體和邏輯。實體遷移是指使用資料庫檔案的實體副本來遷移資料庫。邏輯遷移是指套用邏輯資料庫變更來完成遷移，例如插入、更新和刪除。

實體遷移有下列優點：
+ 實體遷移比邏輯遷移更快，尤其對於大型資料庫。
+ 為實體遷移而建立備份時，資料庫效能不受影響。
+ 實體遷移可以遷移來源資料庫的所有內容，包括複雜的資料庫元件。

實體遷移有下列限制：
+ `innodb_page_size` 參數必須設為預設值 (`16KB`)。
+ `innodb_data_file_path` 參數只能使用一個資料檔案 (預設資料檔案名稱 `"ibdata1:12M:autoextend"`) 來設定。具有兩個資料檔或具有不同名稱之資料檔的資料庫無法使用此方法移轉。

  以下是不允許的檔案名稱範例：`"innodb_data_file_path=ibdata1:50M; ibdata2:50M:autoextend"` 和 `"innodb_data_file_path=ibdata01:50M:autoextend"`。
+ `innodb_log_files_in_group` 參數必須設為預設值 (`2`)。

邏輯遷移有下列優點：
+ 您可以遷移資料庫的子集，例如特定的資料表，或資料表的某些部分。
+ 無論實體儲存結構如何，資料皆可遷移。

邏輯遷移有下列限制：
+ 邏輯遷移通常比實體遷移更慢。
+ 複雜的資料庫元件可能使邏輯遷移程序變慢。在某些情況下，複雜的資料庫元件甚至會阻擋邏輯遷移。

下表說明您的選項及各選項的遷移類型。


| 遷移來源 | Migration type (遷移類型) | 解決方案 | 
| --- | --- | --- | 
| RDS for MySQL 資料庫執行個體 | 實體 |  若要從 RDS for MySQL 資料庫執行個體遷移，您可以先建立 MySQL 資料庫執行個體的 Aurora MySQL 僅供讀取複本。當 MySQL 資料庫執行個體和 Aurora MySQL 僅供讀取複本之間的複本延遲為 0 時，您可以指示用戶端應用程式讀取 Aurora 僅供讀取複本，然後停止複寫，使 Aurora MySQL 僅供讀取複本變成用於讀取和寫入的獨立 Aurora MySQL 資料庫叢集。如需詳細資訊，請參閱[使用 Aurora 讀取複本，從 RDS for MySQL 資料庫執行個體將資料遷移至 Amazon Aurora MySQL 資料庫叢集](AuroraMySQL.Migrating.RDSMySQL.Replica.md)。  | 
| RDS for MySQL 資料庫快照 | 實體 |  您可以直接從 RDS for MySQL 資料庫快照將資料遷移至 Amazon Aurora MySQL 資料庫叢集。如需詳細資訊，請參閱 [將 RDS for MySQL 快照遷移至 Aurora](AuroraMySQL.Migrating.RDSMySQL.Snapshot.md)。  | 
| Amazon RDS 外部的 MySQL 資料庫 | 邏輯 |  您可以使用 `mysqldump` 公用程式來建立資料的傾出，然後將該資料匯入現有的 Amazon Aurora MySQL 資料庫叢集。如需詳細資訊，請參閱 [使用 mysqldump 從 MySQL 到 Amazon Aurora 的邏輯遷移](AuroraMySQL.Migrating.ExtMySQL.mysqldump.md)。 若要在遷移期間從外部 MySQL 資料庫匯出資料庫使用者的中繼資料，您可以使用 MySQL Shell 命令，而不是 `mysqldump`。如需詳細資訊，請參閱[執行個體傾印公用程式、結構描述傾印公用程式和資料表傾印公用程式](https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-dump-instance-schema.html#mysql-shell-utilities-dump-about)。  自 MySQL 8.0.34 起，[mysqlpump](https://dev.mysql.com/doc/refman/8.0/en/mysqlpump.html) 公用程式已棄用。   | 
| Amazon RDS 外部的 MySQL 資料庫 | 實體 |  您可以從資料庫將備份檔案複製到 Amazon Simple Storage Service (Amazon S3) 儲存貯體，然後從這些檔案還原 Amazon Aurora MySQL 資料庫叢集。比起使用 `mysqldump`，此選項遷移資料的速度更快。如需詳細資訊，請參閱[使用 Percona XtraBackup 和 Amazon S3 從 MySQL 進行實體遷移](AuroraMySQL.Migrating.ExtMySQL.S3.md)。  | 
| Amazon RDS 外部的 MySQL 資料庫 | 邏輯 |  您可以將資料庫中的資料儲存為文字檔案，再將這些檔案複製到 Amazon S3 儲存貯體。然後，您可以使用 `LOAD DATA FROM S3` MySQL 命令，將該資料載入現有的 Aurora MySQL 資料庫叢集。如需更多詳細資訊，請參閱 [從 Amazon S3 儲存貯體中的文字檔案將資料載入 Amazon Aurora MySQL 資料庫叢集](AuroraMySQL.Integrating.LoadFromS3.md)。  | 
| 與 MySQL 不相容的資料庫 | Logical (邏輯) |  您可以使用 AWS Database Migration Service (AWS DMS)，從與 MySQL 不相容的資料庫遷移資料。如需 AWS DMS 的詳細資訊，請參閱[什麼是 AWS Database Migration Service？](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) | 

**注意**  
如果您要遷移 Amazon RDS 外部的 MySQL 資料庫，則僅在您的資料庫支援 InnoDB 或 MyISAM 資料表空間時，才支援資料表中所述的遷移選項。  
如果您要遷移至 Aurora MySQL 的 MySQL 資料庫使用 `memcached`，請先移除 `memcached` 再遷移。  
您無法從某些舊版 MySQL 8.0 版本 (包括 8.0.11、8.0.13 和 8.0.15) 遷移到 Aurora MySQL 版本 3.05 及更高版本。建議您在遷移之前，先升級至 MySQL 8.0.28 版。

# 從外部 MySQL 資料庫將資料遷移至 Amazon Aurora MySQL 資料庫叢集
<a name="AuroraMySQL.Migrating.ExtMySQL"></a>

如果您的資料庫支援 InnoDB 或 MyISAM 資料表空間，在將資料遷移至 Amazon Aurora MySQL 資料庫叢集時，您有下列選項：
+ 您可以使用 `mysqldump` 公用程式來建立資料的傾出，然後將該資料匯入現有的 Amazon Aurora MySQL 資料庫叢集。如需更多詳細資訊，請參閱 [使用 mysqldump 從 MySQL 到 Amazon Aurora 的邏輯遷移](AuroraMySQL.Migrating.ExtMySQL.mysqldump.md)。
+ 您可以從資料庫將完整和增量備份檔案複製到 Amazon S3 儲存貯體，然後從這些檔案還原至 Amazon Aurora MySQL 資料庫叢集。比起使用 `mysqldump`，此選項遷移資料的速度更快。如需更多詳細資訊，請參閱 [使用 Percona XtraBackup 和 Amazon S3 從 MySQL 進行實體遷移](AuroraMySQL.Migrating.ExtMySQL.S3.md)。

**Topics**
+ [使用 Percona XtraBackup 和 Amazon S3 從 MySQL 進行實體遷移](AuroraMySQL.Migrating.ExtMySQL.S3.md)
+ [使用 mysqldump 從 MySQL 到 Amazon Aurora 的邏輯遷移](AuroraMySQL.Migrating.ExtMySQL.mysqldump.md)

# 使用 Percona XtraBackup 和 Amazon S3 從 MySQL 進行實體遷移
<a name="AuroraMySQL.Migrating.ExtMySQL.S3"></a>

您可以從來源 MySQL 5.7 或 8.0 版資料庫將完整和增量備份檔案複製到 Amazon S3 儲存貯體。然後，您可以從這些檔案還原到具有相同主要資料庫引擎版本的 Amazon Aurora MySQL 資料庫叢集。

此選項比使用 `mysqldump` 來遷移資料快得多，因為使用 `mysqldump` 會重新執行所有命令，在新的 Aurora MySQL 資料庫叢集中重新建立來源資料庫的結構描述和資料。經由複製來源 MySQL 資料檔案，Aurora MySQL 可以立即使用這些檔案做為 Aurora MySQL 資料庫叢集的資料。

此外，您還可以在遷移過程中使用二進位日誌複寫來盡可能縮短停機時間。如果您使用二進位日誌複寫，則當資料正在遷移至 Aurora MySQL 資料庫叢集時，外部 MySQL 資料庫仍然可能發生交易。建立 Aurora MySQL 資料庫叢集之後，您可以使用二進位日誌複寫，以同步 Aurora MySQL 資料庫叢集與備份之後發生的交易。當 Aurora MySQL 資料庫叢集與 MySQL 資料庫達到同步時，請完全切換至 Aurora MySQL 資料庫叢集來處理新交易，以便完成遷移。如需詳細資訊，請參閱[使用複寫來同步 Amazon Aurora MySQL 資料庫叢集與 MySQL 資料庫](#AuroraMySQL.Migrating.ExtMySQL.S3.RepSync)。

**Contents**
+ [限制及考量](#AuroraMySQL.Migrating.ExtMySQL.S3.Limits)
+ [開始之前](#AuroraMySQL.Migrating.ExtMySQL.S3.Prereqs)
  + [安裝 Percona XtraBackup](#AuroraMySQL.Migrating.ExtMySQL.S3.Prereqs.XtraBackup)
  + [所需的許可](#AuroraMySQL.Migrating.ExtMySQL.S3.Prereqs.Permitting)
  + [建立 IAM 服務角色](#AuroraMySQL.Migrating.ExtMySQL.S3.Prereqs.CreateRole)
+ [備份要還原為 Amazon Aurora MySQL 資料庫叢集的檔案](#AuroraMySQL.Migrating.ExtMySQL.S3.Backup)
  + [使用 Percona XtraBackup 來建立完整備份](#AuroraMySQL.Migrating.ExtMySQL.S3.Backup.Full)
  + [透過 Percona XtraBackup 來使用增量備份](#AuroraMySQL.Migrating.ExtMySQL.S3.Backup.Incr)
  + [備份考量](#AuroraMySQL.Migrating.ExtMySQL.S3.Backup.Considerations)
+ [從 Amazon S3 儲存貯體還原 Amazon Aurora MySQL 資料庫叢集](#AuroraMySQL.Migrating.ExtMySQL.S3.Restore)
+ [使用複寫來同步 Amazon Aurora MySQL 資料庫叢集與 MySQL 資料庫](#AuroraMySQL.Migrating.ExtMySQL.S3.RepSync)
  + [針對加密複寫來設定外部 MySQL 資料庫和 Aurora MySQL 資料庫叢集](#AuroraMySQL.Migrating.ExtMySQL.S3.RepSync.ConfigureEncryption)
  + [同步 Amazon Aurora MySQL 資料庫叢集與外部 MySQL 資料庫](#AuroraMySQL.Migrating.ExtMySQL.S3.RepSync.Synchronizing)
+ [縮短實體遷移到 Amazon Aurora MySQL 的時間](AuroraMySQL.Migrating.ExtMySQL.Prechecks.md)
  + [不支援的資料表類型](AuroraMySQL.Migrating.ExtMySQL.Prechecks.md#AuroraMySQL.Migrating.ExtMySQL.Prechecks.Tables)
  + [具有不支援權限的使用者帳戶](AuroraMySQL.Migrating.ExtMySQL.Prechecks.md#AuroraMySQL.Migrating.ExtMySQL.Prechecks.Users)
  + [Aurora MySQL 第 3 版中的動態權限](AuroraMySQL.Migrating.ExtMySQL.Prechecks.md#AuroraMySQL.Migrating.ExtMySQL.Prechecks.Dynamic)
  + [使用「rdsadmin'@'localhost」作為 DEFINER 的預存物件](AuroraMySQL.Migrating.ExtMySQL.Prechecks.md#AuroraMySQL.Migrating.ExtMySQL.Prechecks.Objects)

## 限制及考量
<a name="AuroraMySQL.Migrating.ExtMySQL.S3.Limits"></a>

從 Amazon S3 儲存貯體還原至 Amazon Aurora MySQL 資料庫叢集時，須注意下列限制和考量：
+ 您只能將資料遷移至新的資料庫叢集，而非現有資料庫叢集。
+ 您必須使用 Percona XtraBackup 將資料備份到 S3。如需詳細資訊，請參閱[安裝 Percona XtraBackup](#AuroraMySQL.Migrating.ExtMySQL.S3.Prereqs.XtraBackup)。
+ Amazon S3 儲存貯體和 Aurora MySQL 資料庫叢集必須位於相同的 AWS 區域。
+ 您無法從以下項目還原：
  + 從資料庫叢集快照匯出還原至 Amazon S3。您無法將資料從資料庫叢集快照匯出遷移到 S3 儲存貯體。
  + 加密的來源資料庫，但可以加密要遷移的資料。您也可以在遷移過程中維持不加密資料。
  + MySQL 5.5 或 5.6 資料庫
+ Percona Server for MySQL 不支援作為來源資料庫，因為它可以包含 `mysql` 結構描述中的 `compression_dictionary*` 資料表。
+ 您無法還原至 Aurora Serverless 資料庫叢集。
+ 主要版本或次要版本都不支援回溯遷移。例如，您無法從 MySQL 8.0 版遷移至 Aurora MySQL 第 2 版 (與 MySQL 5.7 相容)，也無法從 MySQL 8.0.32 版遷移至 Aurora MySQL 3.03 版 (與 MySQL Community 8.0.26 版相容)。
+ 您無法從某些舊版 MySQL 8.0 版本 (包括 8.0.11、8.0.13 和 8.0.15) 遷移到 Aurora MySQL 版本 3.05 及更高版本。建議您在遷移之前，先升級至 MySQL 8.0.28 版。
+ db.t2.micro 資料庫執行個體類別上不支援從 Amazon S3 匯入。不過，您可以先還原至不同的資料庫執行個體類別，稍後再變更資料庫執行個體類別。如需資料庫執行個體類別的詳細資訊，請參閱 [Amazon Aurora 資料庫執行個體類別](Concepts.DBInstanceClass.md)。
+ Amazon S3 對上傳至 S3 儲存貯體的檔案大小限制為 5 TB。如果備份檔案超過 5 TB，您必須將備份檔案分割為較小的檔案。
+ Amazon RDS 隊上傳至 S3 儲存貯體的檔案數量限制為 1 百萬個。如果資料庫的備份資料 (包括所有完整和增量備份) 超過 1 百萬個檔案，請使用 Gzip (.gz)、tar (.tar.gz) 或 Percona xbstream (.xbstream) 檔案將完整和增量備份檔案儲存在 S3 儲存貯體中。Percona XtraBackup 8.0 只支援壓縮時的 Percona xbstream。
+ 若要為每個資料庫叢集提供管理服務，建立資料庫執行個體時，系統會一併建立 `rdsadmin` 使用者。由於這是 RDS 中預留的使用者，因此適用以下限制：
  + 不會匯入使用 `'rdsadmin'@'localhost'` DEFINER 的函數、程序、檢視、事件和觸發。如需詳細資訊，請參閱[使用「rdsadmin'@'localhost」作為 DEFINER 的預存物件](AuroraMySQL.Migrating.ExtMySQL.Prechecks.md#AuroraMySQL.Migrating.ExtMySQL.Prechecks.Objects)及[Amazon Aurora MySQL 的主要使用者權限](AuroraMySQL.Security.md#AuroraMySQL.Security.MasterUser)。
  + 建立 Aurora MySQL 資料庫叢集時，會一併建立具有所支援最大權限的主要使用者。從備份還原時，若指派任何不支援的權限給要匯入的使用者，這些權限都會在匯入過程中自動移除。

    若要找出可能受此影響的使用者，請參閱 [具有不支援權限的使用者帳戶](AuroraMySQL.Migrating.ExtMySQL.Prechecks.md#AuroraMySQL.Migrating.ExtMySQL.Prechecks.Users)。如需有關 Aurora MySQL 中所支援權限的詳細資訊，請參閱 [角色型權限模型](AuroraMySQL.Compare-80-v3.md#AuroraMySQL.privilege-model)。
+ 對於 Aurora MySQL 第 3 版，不會匯入動態權限。Aurora 支援的動態權限可在遷移後匯入。如需詳細資訊，請參閱[Aurora MySQL 第 3 版中的動態權限](AuroraMySQL.Migrating.ExtMySQL.Prechecks.md#AuroraMySQL.Migrating.ExtMySQL.Prechecks.Dynamic)。
+ 不會遷移 `mysql` 結構描述中使用者建立的資料表。
+ `innodb_data_file_path` 參數只能使用一個資料檔案 (預設資料檔案名稱 `ibdata1:12M:autoextend`) 來設定。具有兩個資料檔或具有不同名稱之資料檔的資料庫無法使用此方法移轉。

  以下是不允許的檔案名稱範例：`innodb_data_file_path=ibdata1:50M`、`ibdata2:50M:autoextend` 和 `innodb_data_file_path=ibdata01:50M:autoextend`。
+ 如果來源資料庫有資料表是在預設 MySQL 資料目錄外定義，您無法從這個來源資料庫遷移。
+ 使用此方法可支援的最大未壓縮備份大小目前限制為 64 TiB。對於壓縮備份，此限制會降低以考量未壓縮空間需求。在這種情況下，支援的最大備份大小為 (`64 TiB – compressed backup size`)。
+ Aurora MySQL 不支援匯入 MySQL 及其他外部元件和外掛程式。
+ Aurora MySQL 不會從資料庫還原任何內容。建議您從來源 MySQL 資料庫儲存資料庫結構描述和下列項目的值，然後在還原的 Aurora MySQL 資料庫叢集建立之後，將這些項目新增至其中：
  + 使用者帳戶
  + 函數
  + 預存程序
  + 時區資訊。時區資訊是從 Aurora MySQL 資料庫叢集的本機作業系統載入。如需詳細資訊，請參閱[Amazon Aurora 資料庫叢集的本機時區](Concepts.RegionsAndAvailabilityZones.md#Aurora.Overview.LocalTimeZone)。

## 開始之前
<a name="AuroraMySQL.Migrating.ExtMySQL.S3.Prereqs"></a>

您必須執行下列動作，才能將資料複製到 Amazon S3 儲存貯體，並從這些檔案還原至資料庫叢集：
+ 將 Percona XtraBackup 安裝在本機伺服器。
+ 允許 Aurora MySQL 代替您存取 Amazon S3 儲存貯體。

### 安裝 Percona XtraBackup
<a name="AuroraMySQL.Migrating.ExtMySQL.S3.Prereqs.XtraBackup"></a>

Amazon Aurora 可以從使用 Percona XtraBackup 所建立的檔案來還原資料庫叢集。您可以從 [Software Downloads - Percona](https://www.percona.com/downloads) (軟體下載 - Percona) 安裝 Percona XtraBackup。

若要遷移 MySQL 5.7，請使用 Percona XtraBackup 2.4。

若要遷移 MySQL 8.0，請使用 Percona XtraBackup 8.0。請確定 Percona XtraBackup 版本與來源資料庫的引擎版本相容。

### 所需的許可
<a name="AuroraMySQL.Migrating.ExtMySQL.S3.Prereqs.Permitting"></a>

若要將 MySQL 資料遷移至 Amazon Aurora MySQL 資料庫叢集，需要具備幾種許可：
+ 請求 Aurora 從 Amazon S3 儲存貯體建立新叢集的使用者必須具有列出您 AWS 帳戶儲存貯體的許可。您可以使用 AWS Identity and Access Management (IAM) 政策授予使用者此許可。
+ Aurora 需要許可來代表您存取 Amazon S3 儲存貯體，其中存放用來建立 Amazon Aurora MySQL 資料庫叢集的檔案。您需要使用 IAM 服務角色將必要許可授予 Aurora。
+ 提出請求的使用者也必須具備許可才能列出 AWS 帳戶的 IAM 角色。
+ 如果提出請求的使用者想要建立 IAM 服務角色，或要求 Aurora 建立 IAM 服務角色 (使用主控台)，則該使用者必須具備許可才能為您的 AWS 帳戶建立 IAM 角色。
+ 如果您計劃在遷移過程中加密資料，請更新將執行遷移之使用者的 IAM 政策，以授予 RDS 對 AWS KMS keys 用於加密備份的 的存取權。如需說明，請參閱[建立 IAM 政策以存取 AWS KMS資源](AuroraMySQL.Integrating.Authorizing.IAM.KMSCreatePolicy.md)。

例如，下列 IAM 政策將最低必要許可授予使用者，讓使用者可利用主控台來列出 IAM 角色、建立 IAM 角色、列出您帳戶的 Amazon S3 儲存貯體，以及列出 KMS 金鑰。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:ListRoles",
                "iam:CreateRole",
                "iam:CreatePolicy",
                "iam:AttachRolePolicy",
                "s3:ListBucket",
                "kms:ListKeys"
            ],
            "Resource": "*"
        }
    ]
}
```

------

此外，若要讓使用者將 IAM 角色與 Amazon S3 儲存貯體相關聯，IAM 使用者必須具備該 IAM 角色的 `iam:PassRole` 許可。此許可允許管理員限制使用者可將哪些 IAM 角色與 Amazon S3 儲存貯體建立關聯。

例如，下列 IAM 政策可讓使用者將名為 `S3Access` 的角色與 Amazon S3 儲存貯體建立關聯。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {
            "Sid":"AllowS3AccessRole",
            "Effect":"Allow",
            "Action":"iam:PassRole",
            "Resource":"arn:aws:iam::123456789012:role/S3Access"
        }
    ]
}
```

------

如需 IAM 使用者許可的詳細資訊，請參閱 [使用政策管理存取權](UsingWithRDS.IAM.md#security_iam_access-manage)。

### 建立 IAM 服務角色
<a name="AuroraMySQL.Migrating.ExtMySQL.S3.Prereqs.CreateRole"></a>

您可以選擇建立新角色選項，讓 AWS 管理主控台 為您**建立角色** （本主題稍後顯示）。如果您選取此選項並指定新角色的名稱，Aurora 會建立必要的 IAM 服務角色，讓 Aurora 能夠存取您提供其名稱的 Amazon S3 儲存貯體。

或者，您也可以使用下列程序來手動建立角色。

**為 Aurora 建立 IAM 角色以存取 Amazon S3**

1. 完成「[建立 IAM 政策來存取 Amazon S3 資源](AuroraMySQL.Integrating.Authorizing.IAM.S3CreatePolicy.md)」中的步驟。

1. 完成「[建立 IAM 角色以允許 Amazon Aurora 存取 AWS 服務](AuroraMySQL.Integrating.Authorizing.IAM.CreateRole.md)」中的步驟。

1. 完成「[將 IAM 角色與 Amazon Aurora MySQL 資料庫叢集建立關聯](AuroraMySQL.Integrating.Authorizing.IAM.AddRoleToDBCluster.md)」中的步驟。

## 備份要還原為 Amazon Aurora MySQL 資料庫叢集的檔案
<a name="AuroraMySQL.Migrating.ExtMySQL.S3.Backup"></a>

您可以使用 Percona XtraBackup 來建立 MySQL 資料庫檔案的完整備份，然後將備份檔案上傳至 Amazon S3 儲存貯體。或者，如果您已使用 Percona XtraBackup 來備份 MySQL 資料庫檔案，您可以將現有的完整和增量備份目錄及檔案上傳至 Amazon S3 儲存貯體。

**Topics**
+ [使用 Percona XtraBackup 來建立完整備份](#AuroraMySQL.Migrating.ExtMySQL.S3.Backup.Full)
+ [透過 Percona XtraBackup 來使用增量備份](#AuroraMySQL.Migrating.ExtMySQL.S3.Backup.Incr)
+ [備份考量](#AuroraMySQL.Migrating.ExtMySQL.S3.Backup.Considerations)

### 使用 Percona XtraBackup 來建立完整備份
<a name="AuroraMySQL.Migrating.ExtMySQL.S3.Backup.Full"></a>

若要建立 MySQL 資料庫檔案的完整備份，以便能夠從 Amazon S3 還原來建立 Aurora MySQL 資料庫叢集，請使用 Percona XtraBackup 公用程式 (`xtrabackup`) 來備份資料庫。

例如，下列命令會建立 MySQL 資料庫的備份，並將檔案存放在 `/on-premises/s3-restore/backup` 資料夾中。

```
xtrabackup --backup --user=<myuser> --password=<password> --target-dir=</on-premises/s3-restore/backup>
```

如果要將備份壓縮成單一檔案 (需要時可以分割)，您可以使用 `--stream` 選項將備份儲存為下列其中一種格式：
+ Gzip (.gz)
+ tar (.tar)
+ Percona xbstream (.xbstream)

下列命令建立 MySQL 資料庫的備份，並分割成多個 Gzip 檔案。

```
xtrabackup --backup --user=<myuser> --password=<password> --stream=tar \
   --target-dir=</on-premises/s3-restore/backup> | gzip - | split -d --bytes=500MB \
   - </on-premises/s3-restore/backup/backup>.tar.gz
```

下列命令建立 MySQL 資料庫的備份，並分割成多個 tar 檔案。

```
xtrabackup --backup --user=<myuser> --password=<password> --stream=tar \
   --target-dir=</on-premises/s3-restore/backup> | split -d --bytes=500MB \
   - </on-premises/s3-restore/backup/backup>.tar
```

下列命令建立 MySQL 資料庫的備份，並分割成多個 xbstream 檔案。

```
xtrabackup --backup --user=<myuser> --password=<password> --stream=xbstream \
   --target-dir=</on-premises/s3-restore/backup> | split -d --bytes=500MB \
   - </on-premises/s3-restore/backup/backup>.xbstream
```

**注意**  
如果您看到下列錯誤，可能是因為在命令中混合檔案格式所致：  

```
ERROR:/bin/tar: This does not look like a tar archive
```

使用 Percona XtraBackup 公用程式來備份 MySQL 資料庫之後，您可以將備份目錄和檔案複製到 Amazon S3 儲存貯體。

如需有關建立檔案並上傳至 Amazon S3 儲存貯體的資訊，請參閱 *Amazon S3 入門指南*中的 [Amazon Simple Storage Service 入門](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html)。

### 透過 Percona XtraBackup 來使用增量備份
<a name="AuroraMySQL.Migrating.ExtMySQL.S3.Backup.Incr"></a>

Amazon Aurora MySQL 支援使用 Percona XtraBackup 所建立的完整和增量備份。如果您已使用 Percona XtraBackup 來執行 MySQL 資料庫檔案的完整和增量備份，則不需要建立完整備份並將備份檔案上傳至 Amazon S3。反之，您可以將完整和增量備份的現有備份目錄及檔案複製到 Amazon S3 儲存貯體，以節省大量時間。如需詳細資訊，請參閱 Percona 網站上的 [Create an incremental backup](https://docs.percona.com/percona-xtrabackup/8.0/create-incremental-backup.html) (建立增量備份)。

將現有的完整和增量備份檔案複製到 Amazon S3 儲存貯體時，您必須遞迴複製基本目錄的內容。這些內容包括完整備份，以及所有增量備份目錄和檔案。此副本必須保留 Amazon S3 儲存貯體中的目錄結構。Aurora 會逐一查看所有檔案和目錄。Aurora 使用包含在每個增量備份中的 `xtrabackup-checkpoints` 檔案，以識別基本目錄，以及依記錄序號 (LSN) 範圍來排序增量備份。

如需有關建立檔案並上傳至 Amazon S3 儲存貯體的資訊，請參閱 *Amazon S3 入門指南*中的 [Amazon Simple Storage Service 入門](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html)。

### 備份考量
<a name="AuroraMySQL.Migrating.ExtMySQL.S3.Backup.Considerations"></a>

Aurora 不支援使用 Percona XtraBackup 所建立的局部備份。當您備份資料庫的來源檔案時，您無法使用 `--tables`、`--tables-exclude`、`--tables-file`、`--databases`、`--databases-exclude` 或 `--databases-file` 選項來建立局部備份。

如需使用 Percona XtraBackup 備份資料庫的詳細資訊，請參閱 Percona 網站上的 [Percona XtraBackup - Documentation](https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html) (Percona XtraBackup - 文件) 和 [Work with binary logs](https://docs.percona.com/percona-xtrabackup/8.0/working-with-binary-logs.html) (使用二進位日誌)。

Aurora 支援使用 Percona XtraBackup 所建立的增量備份。如需詳細資訊，請參閱 Percona 網站上的 [Create an incremental backup](https://docs.percona.com/percona-xtrabackup/8.0/create-incremental-backup.html) (建立增量備份)。

Aurora 根據檔案名稱來取用備份檔案。務必根據檔案格式，以適當副檔案名稱來命名備份檔案 — 例如，使用 Percona xbstream 格式儲存的檔案應該採用 `.xbstream` 副檔案名稱。

Aurora 依字母順序和自然數順序來取用備份檔案。發出 `split` 命令時，一律使用 `xtrabackup` 選項，以確保依適當順序寫入和命名備份檔案。

Amazon S3 將上傳至 Amazon S3 儲存貯體的檔案大小限制為 5 TB。如果資料庫的備份資料超過 5 TB，請使用 `split` 命令將備份檔案分割成多個小於 5 TB 的檔案。

Aurora 將上傳至 Amazon S3 儲存貯體的來源檔案數量限制為 1 百萬個檔案。在某些情況下，資料庫的備份資料 (包括所有完整和增量備份) 可能包含大量檔案。在這些情況下，請使用 tarball (.tar.gz) 檔案將完整和增量備份檔案存放在 Amazon S3 儲存貯體中。

當您將檔案上傳至 Amazon S3 儲存貯體時，您可以使用伺服器端加密將資料加密。您之後就可以從這些加密的檔案還原 Amazon Aurora MySQL 資料庫叢集。Amazon Aurora MySQL 可以使用經過以下幾種伺服器端加密來還原有加密檔案的資料庫叢集：
+ 伺服器端加密搭配 Amazon S3 管理的金鑰 (SSE-S3) – 以採用強式多重因素加密的唯一金鑰來加密每個物件。
+ 伺服器端加密搭配 AWS KMS受管金鑰 (SSE-KMS) – 類似於 SSE-S3，但您可以選擇自行建立和管理加密金鑰，以及其他差異。

如需將檔案上傳至 Amazon S3 儲存貯體時使用伺服器端加密的相關資訊，請參閱《Amazon S3 開發人員指南》**中的[使用伺服器端加密保護資料](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)。

## 從 Amazon S3 儲存貯體還原 Amazon Aurora MySQL 資料庫叢集
<a name="AuroraMySQL.Migrating.ExtMySQL.S3.Restore"></a>

您可以使用 Amazon RDS 主控台，從 Amazon S3 儲存貯體還原備份檔案，以建立新的 Amazon Aurora MySQL 資料庫叢集。

**從 Amazon S3 儲存貯體上的檔案還原 Amazon Aurora MySQL 資料庫叢集**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在 Amazon RDS 主控台的右上角，選擇要建立資料庫叢集 AWS 的區域。選擇與包含資料庫備份的 Amazon S3 儲存貯體相同的 AWS 區域。

1. 在導覽窗格中，選擇 **Databases** (資料庫)，然後選擇 **Restore from S3** (從 S3 還原)。

1. 選擇 **Restore From S3 (從 S3 還原)**。

   系統會顯示 **Create database by restoring from S3** (從 S3 還原以建立資料庫) 頁面。  
![\[您可以在該頁面上指定從 S3 還原資料庫叢集的詳細資訊\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/AuroraUserGuide/images/AuroraMigrateS3_01.png)

1. 在 **S3 目的地** 下：

   1. 選擇包含備份檔案的 **S3 儲存貯體**。

   1. (選用) 在 **S3 folder path prefix (S3 資料夾路徑字首)** 中，針對存放在 Amazon S3 儲存貯體中的檔案，輸入檔案路徑字首。

      如果不指定字首，RDS 會使用 S3 儲存貯體之根資料夾中的所有檔案和資料夾來建立資料庫執行個體。如果指定字首，RDS 會使用 S3 儲存貯體中的檔案和資料夾來建立資料庫執行個體，而且檔案的路徑以指定的字首開頭。

      例如，假設您將備份檔案儲存在 S3 中的一個名為 backups 的子資料夾，而且有多組備份檔案，各存放於自己的目錄中 (gzip\$1backup1、gzip\$1backup2 等等)。在此例子中，指定字首 backups/gzip\$1backup1，即可從 gzip\$1backup1 資料夾中的檔案還原。

1. 在 **Engine options (引擎選項)**：

   1. 針對 **Engine type** (引擎類型)，請選擇 **Amazon Aurora**。

   1. 針對 **Version** (版本)，請為已還原的資料庫執行個體選擇 Aurora MySQL 引擎版本。

1. 針對 **IAM Role (IAM 角色)**，您可以選擇現有的 IAM 角色。

1. (選用) 您也可以選擇 **Create a new role** (建立新角色)，讓系統為您建立新的 IAM 角色。若是如此：

   1. 請輸入 **IAM role name** (IAM 角色名稱)。

   1.  請選擇是否 **Allow access to KMS key** (允許存取 KMS 金鑰)：
      + 如果您未加密備份檔案，請選擇 **No (否)**。
      + 如果您將備份檔案上傳送至 Amazon S3 時以 AES-256 (SSE-S3) 加密，請選擇 **No (否)**。在此情況下，資料會自動解密。
      + 如果您在將備份檔案上傳至 Amazon S3 時，使用 AWS KMS (SSE-KMS) 伺服器端加密來加密備份檔案，請選擇**是**。接下來，為 **AWS KMS key**選擇正確的 KMS 金鑰。

         AWS 管理主控台 會建立 IAM 政策，讓 Aurora 能夠解密資料。

      如需詳細資訊，請參閱《Amazon S3 開發人員指南》**中的[使用伺服器端加密保護資料](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)。

1. 選擇資料庫叢集的設定，例如資料庫叢集儲存組態、資料庫執行個體類別、資料庫叢集識別符，以及登入憑證。如需每項設定的相關資訊，請參閱 [Aurora 資料庫叢集的設定](Aurora.CreateInstance.md#Aurora.CreateInstance.Settings)。

1. 視需為您的 Aurora MySQL 資料庫叢集自訂其他設定。

1. 選擇 **Create database** (建立資料庫)，以啟動 Aurora 資料庫執行個體。

在 Amazon RDS 主控台上，新的資料庫執行個體會顯示在資料庫執行個體清單中。在資料庫執行個體建立完成且可供使用之前，資料庫執行個體會處於 **Creating (建立中)** 狀態。狀態變更為 **Available** (可用) 時，您便能連接到資料庫叢集的主執行個體。視資料庫執行個體類別和分配的存放區而定，新的執行個體可能需要幾分鐘才能使用。

若要檢視新建立的叢集，請在 Amazon RDS 主控台中選擇 **Databases** (資料庫) 檢視，然後選擇資料庫叢集。如需更多詳細資訊，請參閱 [檢視 Amazon Aurora 資料庫叢集](accessing-monitoring.md#Aurora.Viewing)。

![\[Amazon Aurora 資料庫執行個體清單\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/AuroraUserGuide/images/AuroraLaunch04.png)


請記下資料庫叢集的連接埠和寫入器端點。您可以針對任何會執行寫入或讀取操作的應用程式，在 JDBC 和 ODBC 連線字串中使用資料庫叢集的寫入器端點和連接埠。

## 使用複寫來同步 Amazon Aurora MySQL 資料庫叢集與 MySQL 資料庫
<a name="AuroraMySQL.Migrating.ExtMySQL.S3.RepSync"></a>

若要在遷移過程中將停機情況降到最低或完全不停機，您可以將 MySQL 資料庫上已認可的交易複寫至 Aurora MySQL 資料庫叢集。複寫可讓資料庫叢集與遷移期間在 MySQL 資料庫上發生的交易達到同步。當資料庫叢集完全同步時，您就可以停止複寫，完成遷移至 Aurora MySQL。

**Topics**
+ [針對加密複寫來設定外部 MySQL 資料庫和 Aurora MySQL 資料庫叢集](#AuroraMySQL.Migrating.ExtMySQL.S3.RepSync.ConfigureEncryption)
+ [同步 Amazon Aurora MySQL 資料庫叢集與外部 MySQL 資料庫](#AuroraMySQL.Migrating.ExtMySQL.S3.RepSync.Synchronizing)

### 針對加密複寫來設定外部 MySQL 資料庫和 Aurora MySQL 資料庫叢集
<a name="AuroraMySQL.Migrating.ExtMySQL.S3.RepSync.ConfigureEncryption"></a>

若要安全地複寫資料，您可以使用加密複寫。

**注意**  
如果不需要使用加密複寫，您可以略過這些步驟，並前往[同步 Amazon Aurora MySQL 資料庫叢集與外部 MySQL 資料庫](#AuroraMySQL.Migrating.ExtMySQL.S3.RepSync.Synchronizing)中的指示。

下列是使用加密複寫的先決條件：
+ 必須在外部 MySQL 主要資料庫上啟用 Secure Sockets Layer (SSL)。
+ 必須為 Aurora MySQL 資料庫叢集準備用戶端金鑰和用戶端憑證。

在加密複寫期間，Aurora MySQL 資料庫叢集充當 MySQL 資料庫伺服器的用戶端。Aurora MySQL 用戶端的憑證和金鑰位於 .pem 格式的檔案中。

**針對加密複寫來設定外部 MySQL 資料庫和 Aurora MySQL 資料庫叢集**

1. 確保您已準備好進行加密複寫：
   + 如果您在外部 MySQL 主要資料庫上未啟用 SSL，也沒有準備用戶端金鑰和用戶端憑證，請在 MySQL 資料庫伺服器上啟用 SSL，並產生所需的用戶端金鑰和用戶端憑證。
   + 如果外部主要資料庫上已啟用 SSL，請為 Aurora MySQL 資料庫叢集提供用戶端金鑰和憑證。如果您沒有這些資料，請為 Aurora MySQL 資料庫叢集產生新的金鑰和憑證。若要簽署用戶端憑證，您必須有用於外部 MySQL 主要資料庫上設定 SSL 的憑證授權單位金鑰。

   如需詳細資訊，請參閱 MySQL 文件中的[使用 openssl 建立 SSL 憑證和金鑰](https://dev.mysql.com/doc/refman/5.6/en/creating-ssl-files-using-openssl.html)。

   您需要憑證授權單位憑證、用戶端金鑰和用戶端憑證。

1. 使用 SSL 以主要使用者的身分連接至 Aurora MySQL 資料庫叢集。

   如需以 SSL 連接至 Aurora MySQL 資料庫叢集的相關資訊，請參閱[Aurora MySQL 資料庫叢集的 TLS 連線](AuroraMySQL.Security.md#AuroraMySQL.Security.SSL)。

1. 執行 [mysql.rds\$1import\$1binlog\$1ssl\$1material](mysql-stored-proc-replicating.md#mysql_rds_import_binlog_ssl_material) 預存程序將 SSL 資訊匯入 Aurora MySQL 資料庫叢集。

   對於 `ssl_material_value` 參數，將 Aurora MySQL 資料庫叢集之 .pem 格式檔案中的資訊，插入正確的 JSON 承載中。

   下列範例將 SSL 資訊匯入 Aurora MySQL 資料庫叢集。在 .pem 格式檔案中，內文程式碼通常比範例所示的內文程式碼更長。

   ```
   call mysql.rds_import_binlog_ssl_material(
   '{"ssl_ca":"-----BEGIN CERTIFICATE-----
   AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V
   hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr
   lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ
   qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb
   BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE
   -----END CERTIFICATE-----\n","ssl_cert":"-----BEGIN CERTIFICATE-----
   AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V
   hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr
   lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ
   qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb
   BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE
   -----END CERTIFICATE-----\n","ssl_key":"-----BEGIN RSA PRIVATE KEY-----
   AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V
   hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr
   lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ
   qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb
   BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE
   -----END RSA PRIVATE KEY-----\n"}');
   ```

   如需詳細資訊，請參閱[mysql.rds\$1import\$1binlog\$1ssl\$1material](mysql-stored-proc-replicating.md#mysql_rds_import_binlog_ssl_material)及[Aurora MySQL 資料庫叢集的 TLS 連線](AuroraMySQL.Security.md#AuroraMySQL.Security.SSL)。
**注意**  
執行程序之後，密碼會儲存在檔案中。若稍後要清除這些檔案，您可以執行 [mysql.rds\$1remove\$1binlog\$1ssl\$1material](mysql-stored-proc-replicating.md#mysql_rds_remove_binlog_ssl_material) 預存程序。

### 同步 Amazon Aurora MySQL 資料庫叢集與外部 MySQL 資料庫
<a name="AuroraMySQL.Migrating.ExtMySQL.S3.RepSync.Synchronizing"></a>

您可以使用複寫來同步 Amazon Aurora MySQL 資料庫叢集與 MySQL 資料庫。

**使用複寫來同步 Aurora MySQL 資料庫叢集與 MySQL 資料庫**

1. 請確定外部 MySQL 資料庫的 /etc/my.cnf 檔案有相關的項目。

   如果不需要加密複寫，則啟動外部 MySQL 資料庫時，務必啟用二進位日誌 (binlog) 並停用 SSL。下列是未加密資料 /etc/my.cnf 檔案中的相關項目。

   ```
   log-bin=mysql-bin
   server-id=2133421
   innodb_flush_log_at_trx_commit=1
   sync_binlog=1
   ```

   如果需要加密複寫，則啟動外部 MySQL 資料庫時，務必啟用 SSL 和 binlog。/etc/my.cnf 檔案中的項目包括 MySQL 資料庫伺服器的 .pem 檔案位置。

   ```
   log-bin=mysql-bin
   server-id=2133421
   innodb_flush_log_at_trx_commit=1
   sync_binlog=1
   
   # Setup SSL.
   ssl-ca=/home/sslcerts/ca.pem
   ssl-cert=/home/sslcerts/server-cert.pem
   ssl-key=/home/sslcerts/server-key.pem
   ```

   您可以使用下列命令確認 SSL 已啟用。

   ```
   mysql> show variables like 'have_ssl';
   ```

   輸出類似如下。

   ```
   +~-~-~-~-~-~-~-~-~-~-~-~-~-~--+~-~-~-~-~-~--+
   | Variable_name | Value |
   +~-~-~-~-~-~-~-~-~-~-~-~-~-~--+~-~-~-~-~-~--+
   | have_ssl      | YES   |
   +~-~-~-~-~-~-~-~-~-~-~-~-~-~--+~-~-~-~-~-~--+
   1 row in set (0.00 sec)
   ```

1. 決定複寫的二進位日誌起始位置。在後續步驟中，您需要指定此位置來開始複寫。

   **使用 AWS 管理主控台**

   1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

   1. 在導覽窗格中，選擇 **Events** (事件)。

   1. 在 **Events (事件)** 清單中，記下 **Recovered from Binary log filename (已從二進位日誌檔案名稱還原)** 事件的位置。  
![\[檢視 MySQL 主要資料庫\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/AuroraUserGuide/images/aurora-mysql-rep-binary-log-position.png)

   **使用 AWS CLI**

   您也可以使用 [describe-events](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-events.html) AWS CLI 命令取得 binlog 檔案名稱和位置。以下顯示命令範例 `describe-events` 命令。

   ```
   PROMPT> aws rds describe-events
   ```

   在輸出中，識別顯示 binlog 位置的事件。

1. 在已連接外部 MySQL 資料庫的情況下，建立用於複寫的使用者。此帳戶只供複寫作業使用，務必限制其存取您的網域，以提升安全性。以下是範例。

   ```
   mysql> CREATE USER '<user_name>'@'<domain_name>' IDENTIFIED BY '<password>';
   ```

   使用者需要 `REPLICATION CLIENT` 和 `REPLICATION SLAVE` 權限。授予這些權限給該使用者。

   ```
   GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '<user_name>'@'<domain_name>';
   ```

   如果需要使用加密複寫，請對複寫使用者要求 SSL 連接。例如，您可以使用以下陳述式要求使用者帳戶 `<user_name>`.

   ```
   GRANT USAGE ON *.* TO '<user_name>'@'<domain_name>' REQUIRE SSL;
   ```
**注意**  
如果未包含 `REQUIRE SSL`，則複寫連線可能會以無訊息方式回復為未加密的連線。

1. 在 Amazon RDS 主控台中，將託管外部 MySQL 資料庫之伺服器的 IP 地址，新增至 Aurora MySQL 資料庫叢集的 VPC 安全群組。如需有關修改 VPC 安全群組的詳細資訊，請參閱《Amazon Virtual Private Cloud 使用者指南》**中的 [VPC 安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)。

   您可能還需要設定本機網路，以允許來自 Aurora MySQL 資料庫叢集之 IP 地址的連線，使其能與外部 MySQL 資料庫通訊。若要找出 Aurora MySQL 資料庫叢集的 IP 地址，請使用 `host` 命令。

   ```
   host <db_cluster_endpoint>
   ```

   主機名稱是來自 Aurora MySQL 資料庫叢集端點的 DNS 名稱。

1. 執行 [mysql.rds\$1reset\$1external\$1master (Aurora MySQL 第 2 版)](mysql-stored-proc-replicating.md#mysql_rds_reset_external_master) 或 [mysql.rds\$1reset\$1external\$1source (Aurora MySQL 第 3 版)](mysql-stored-proc-replicating.md#mysql_rds_reset_external_source) 預存程序以啟用二進位日誌複寫。此儲存的程序採用下列語法。

   ```
   CALL mysql.rds_set_external_master (
     host_name
     , host_port
     , replication_user_name
     , replication_user_password
     , mysql_binary_log_file_name
     , mysql_binary_log_file_location
     , ssl_encryption
   );
   
   CALL mysql.rds_set_external_source (
     host_name
     , host_port
     , replication_user_name
     , replication_user_password
     , mysql_binary_log_file_name
     , mysql_binary_log_file_location
     , ssl_encryption
   );
   ```

   如需有關參數的詳細資訊，請參閱 [mysql.rds\$1reset\$1external\$1master (Aurora MySQL 第 2 版)](mysql-stored-proc-replicating.md#mysql_rds_reset_external_master) 和 [mysql.rds\$1reset\$1external\$1source (Aurora MySQL 第 3 版)](mysql-stored-proc-replicating.md#mysql_rds_reset_external_source)。

   在 `mysql_binary_log_file_name` 和 `mysql_binary_log_file_location` 中，使用您稍早在 **Recovered from Binary log filename (已從二進位日誌檔案名稱還原)** 事件中記下的位置。

   如果 Aurora MySQL 資料庫叢集的資料未加密，則 `ssl_encryption` 參數必須設為 `0`。如果資料已加密，則 `ssl_encryption` 參數必須設為 `1`。

   下列範例對具有加密資料的 Aurora MySQL 資料庫叢集執行此程序。

   ```
   CALL mysql.rds_set_external_master(
     'Externaldb.some.com',
     3306,
     'repl_user'@'mydomain.com',
     'password',
     'mysql-bin.000010',
     120,
     1);
   
   CALL mysql.rds_set_external_source(
     'Externaldb.some.com',
     3306,
     'repl_user'@'mydomain.com',
     'password',
     'mysql-bin.000010',
     120,
     1);
   ```

   此儲存的程序會設定參數，供 Aurora MySQL 資料庫叢集用來連接至外部 MySQL 資料庫和讀取其二進位日誌。如果資料已加密，則它也會將 SSL 憑證授權單位憑證、用戶端憑證和用戶端金鑰下載至本機磁碟。

1. 執行 [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) 儲存的程序以啟動二進位日誌複寫。

   ```
   CALL mysql.rds_start_replication;
   ```

1. 監控 Aurora MySQL 資料庫叢集落後於 MySQL 複寫主要資料庫的程度。若要這麼做，請連接至 Aurora MySQL 資料庫叢集並執行下列命令。

   ```
   Aurora MySQL version 2:
   SHOW SLAVE STATUS;
   
   Aurora MySQL version 3:
   SHOW REPLICA STATUS;
   ```

   在命令輸出中，`Seconds Behind Master` 欄位顯示 Aurora MySQL 資料庫叢集落後於 MySQL 主要資料庫的程度。當此值為 `0` (零) 時，表示 Aurora MySQL 資料庫叢集與主要資料庫已同步，而您可以繼續下一步來停止複寫。

1. 連接至 MySQL 複寫主要資料庫並停止複寫。若要這樣做，請執行 [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) 預存程序。

   ```
   CALL mysql.rds_stop_replication;
   ```

# 縮短實體遷移到 Amazon Aurora MySQL 的時間
<a name="AuroraMySQL.Migrating.ExtMySQL.Prechecks"></a>

您可以進行以下資料庫修改來加快將資料庫遷移至 Amazon Aurora MySQL 的程序。

**重要**  
請務必對生產資料庫的副本進行這些更新，而不是直接更新生產資料庫。接著您可以備份副本並將它還原至 Aurora MySQL 資料庫叢集，以避免生產資料庫發生任何服務中斷的情況。

## 不支援的資料表類型
<a name="AuroraMySQL.Migrating.ExtMySQL.Prechecks.Tables"></a>

Aurora MySQL 針對資料庫資料表僅支援 InnoDB 引擎。如果您的資料庫中有 MyISAM 資料表，這些資料表必須先轉換，再遷移至 Aurora MySQL。在遷移過程中，轉換程序需要額外的空間將 MyISAM 轉換為 InnoDB。

若要盡可能避免空間不足，或想要加速遷移程序，請先將所有 MyISAM 資料表轉換成 InnoDB 資料表再遷移。產生的 InnoDB 資料表大小相當於 Aurora MySQL 針對該資料表所需的大小。若要將 MyISAM 資料表轉換成 InnoDB，請執行下列命令：

```
ALTER TABLE schema.table_name engine=innodb, algorithm=copy;
```

Aurora MySQL 不支援壓縮的資料表或頁面 (也就是以 `ROW_FORMAT=COMPRESSED` 或 `COMPRESSION = {"zlib"|"lz4"}` 建立的資料表)。

若要盡可能避免空間不足，或想要加速遷移程序，請將 `ROW_FORMAT` 設為 `DEFAULT`、`COMPACT`、`DYNAMIC` 或 `REDUNDANT`，以展開壓縮資料表。對於壓縮的頁面，請設定 `COMPRESSION="none"`。

如需詳細資訊，請參閱 MySQL 文件中的 [InnoDB 資料列格式](https://dev.mysql.com/doc/refman/8.0/en/innodb-row-format.html)和 [InnoDB 資料表與頁面壓縮](https://dev.mysql.com/doc/refman/8.0/en/innodb-compression.html)。

您可以在現有的 MySQL 資料庫執行個體上使用下列 SQL 指令碼，以列出資料庫中的 MyISAM 資料表或壓縮資料表。

```
-- This script examines a MySQL database for conditions that block
-- migrating the database into Aurora MySQL.
-- It must be run from an account that has read permission for the
-- INFORMATION_SCHEMA database.

-- Verify that this is a supported version of MySQL.

select msg as `==> Checking current version of MySQL.`
from
  (
  select
    'This script should be run on MySQL version 5.6 or higher. ' +
    'Earlier versions are not supported.' as msg,
    cast(substring_index(version(), '.', 1) as unsigned) * 100 +
      cast(substring_index(substring_index(version(), '.', 2), '.', -1)
      as unsigned)
    as major_minor
  ) as T
where major_minor <> 506;


-- List MyISAM and compressed tables. Include the table size.

select concat(TABLE_SCHEMA, '.', TABLE_NAME) as `==> MyISAM or Compressed Tables`,
round(((data_length + index_length) / 1024 / 1024), 2) "Approx size (MB)"
from INFORMATION_SCHEMA.TABLES
where
  ENGINE <> 'InnoDB'
  and
  (
    -- User tables
    TABLE_SCHEMA not in ('mysql', 'performance_schema',
                         'information_schema')
    or
    -- Non-standard system tables
    (
      TABLE_SCHEMA = 'mysql' and TABLE_NAME not in
        (
          'columns_priv', 'db', 'event', 'func', 'general_log',
          'help_category', 'help_keyword', 'help_relation',
          'help_topic', 'host', 'ndb_binlog_index', 'plugin',
          'proc', 'procs_priv', 'proxies_priv', 'servers', 'slow_log',
          'tables_priv', 'time_zone', 'time_zone_leap_second',
          'time_zone_name', 'time_zone_transition',
          'time_zone_transition_type', 'user'
        )
    )
  )
  or
  (
    -- Compressed tables
       ROW_FORMAT = 'Compressed'
  );
```

## 具有不支援權限的使用者帳戶
<a name="AuroraMySQL.Migrating.ExtMySQL.Prechecks.Users"></a>

具有 Aurora MySQL 不支援之權限的使用者帳戶在匯出時，不支援的權限不會一起匯出。如需支援的權限清單，請參閱 [角色型權限模型](AuroraMySQL.Compare-80-v3.md#AuroraMySQL.privilege-model)。

您可以在來源資料庫上執行下列 SQL 查詢，以列出具有不支援權限的使用者帳戶。

```
SELECT
    user,
    host
FROM
    mysql.user
WHERE
    Shutdown_priv = 'y'
    OR File_priv = 'y'
    OR Super_priv = 'y'
    OR Create_tablespace_priv = 'y';
```

## Aurora MySQL 第 3 版中的動態權限
<a name="AuroraMySQL.Migrating.ExtMySQL.Prechecks.Dynamic"></a>

不會匯入動態權限。Aurora MySQL 第 3 版支援以下動態權限。

```
'APPLICATION_PASSWORD_ADMIN',
'CONNECTION_ADMIN',
'REPLICATION_APPLIER',
'ROLE_ADMIN',
'SESSION_VARIABLES_ADMIN',
'SET_USER_ID',
'XA_RECOVER_ADMIN'
```

以下範例指令碼會將支援的動態權限授予 Aurora MySQL 資料庫叢集中的使用者帳戶。

```
-- This script finds the user accounts that have Aurora MySQL supported dynamic privileges 
-- and grants them to corresponding user accounts in the Aurora MySQL DB cluster.

/home/ec2-user/opt/mysql/8.0.26/bin/mysql -uusername -pxxxxx -P8026 -h127.0.0.1 -BNe "SELECT
  CONCAT('GRANT ', GRANTS, ' ON *.* TO ', GRANTEE ,';') AS grant_statement
  FROM (select GRANTEE, group_concat(privilege_type) AS GRANTS FROM information_schema.user_privileges 
      WHERE privilege_type IN (
        'APPLICATION_PASSWORD_ADMIN',
        'CONNECTION_ADMIN',
        'REPLICATION_APPLIER',
        'ROLE_ADMIN',
        'SESSION_VARIABLES_ADMIN',
        'SET_USER_ID',
        'XA_RECOVER_ADMIN')
      AND GRANTEE NOT IN (\"'mysql.session'@'localhost'\",\"'mysql.infoschema'@'localhost'\",\"'mysql.sys'@'localhost'\") GROUP BY GRANTEE)
      AS PRIVGRANTS; " | /home/ec2-user/opt/mysql/8.0.26/bin/mysql -u master_username -p master_password -h DB_cluster_endpoint
```

## 使用「rdsadmin'@'localhost」作為 DEFINER 的預存物件
<a name="AuroraMySQL.Migrating.ExtMySQL.Prechecks.Objects"></a>

不會匯入使用 `'rdsadmin'@'localhost'` 作為 DEFINER 的函數、程序、檢視、事件和觸發。

您可以在來源 MySQL 資料庫上使用以下 SQL 指令碼列出具有不支援 DEFINER 的預存物件。

```
-- This SQL query lists routines with `rdsadmin`@`localhost` as the definer.

SELECT
    ROUTINE_SCHEMA,
    ROUTINE_NAME
FROM
    information_schema.routines
WHERE
    definer = 'rdsadmin@localhost';

-- This SQL query lists triggers with `rdsadmin`@`localhost` as the definer.

SELECT
    TRIGGER_SCHEMA,
    TRIGGER_NAME,
    DEFINER
FROM
    information_schema.triggers
WHERE
    DEFINER = 'rdsadmin@localhost';

-- This SQL query lists events with `rdsadmin`@`localhost` as the definer.

SELECT
    EVENT_SCHEMA,
    EVENT_NAME
FROM
    information_schema.events
WHERE
    DEFINER = 'rdsadmin@localhost';

-- This SQL query lists views with `rdsadmin`@`localhost` as the definer.
SELECT
    TABLE_SCHEMA,
    TABLE_NAME
FROM
    information_schema.views
WHERE
    DEFINER = 'rdsadmin@localhost';
```

# 使用 mysqldump 從 MySQL 到 Amazon Aurora 的邏輯遷移
<a name="AuroraMySQL.Migrating.ExtMySQL.mysqldump"></a>

因為 Amazon Aurora MySQL 是 MySQL 相容資料庫，您可以使用 `mysqldump` 公用程式，從 MySQL 資料庫或 `mariadb-dump` 公用程式複製資料，將 MariaDB 資料庫的資料複製到現有的 Aurora MySQL 資料庫叢集。

如需如何使用非常大的 MySQL 或 MariaDB 資料庫進行討論，請參閱《Amazon Relational Database Service 使用者指南》**中的下列主題：
+ MySQL – [將資料匯入至 Amazon RDS for MySQL 資料庫，並減少停機時間](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/mysql-importing-data-reduced-downtime.html)
+ MariaDB – [將資料匯入至 Amazon RDS for MariaDB 資料庫，並減少停機時間](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/mariadb-importing-data-reduced-downtime.html)

對於資料量較少的 MySQL 或 MariaDB 資料庫，請參閱《Amazon Relational Database Service 使用者指南》**中的下列主題：
+ MySQL – [從外部 MySQL 資料庫將資料匯入 Amazon RDS for MySQL 資料庫執行個體](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/mysql-importing-data-external-database.html)
+ MariaDB – [從外部 MariaDB 資料庫將資料匯入 Amazon RDS for MariaDB 資料庫執行個體](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/mariadb-importing-data-external-database.html)

# 將資料從 RDS for MySQL 資料庫執行個體遷移到 Amazon Aurora MySQL 資料庫叢集
<a name="AuroraMySQL.Migrating.RDSMySQL"></a>

您可以將資料從 RDS for MySQL 資料庫執行個體遷移 (複製) 至 Amazon Aurora MySQL 資料庫叢集。

**Topics**
+ [將 RDS for MySQL 快照遷移至 Aurora](AuroraMySQL.Migrating.RDSMySQL.Snapshot.md)
+ [使用 Aurora 讀取複本，從 RDS for MySQL 資料庫執行個體將資料遷移至 Amazon Aurora MySQL 資料庫叢集](AuroraMySQL.Migrating.RDSMySQL.Replica.md)

**注意**  
因為 Amazon Aurora MySQL 與 MySQL 相容，您可以在 MySQL 資料庫和 Amazon Aurora MySQL 資料庫叢集之間設定複寫，以便從 MySQL 資料庫遷移資料。如需詳細資訊，請參閱[以 Amazon Aurora 進行複寫](Aurora.Replication.md)。

# 將 RDS for MySQL 快照遷移至 Aurora
<a name="AuroraMySQL.Migrating.RDSMySQL.Snapshot"></a>

您可以遷移 RDS for MySQL 資料庫執行個體的資料庫快照，以建立 Aurora MySQL 資料庫叢集。新的 Aurora MySQL 資料庫叢集會使用來自原始 RDS for MySQL 資料庫執行個體的資料填入。資料庫快照必須是從執行 MySQL 版本 (與 Aurora MySQL 相容) 的 Amazon RDS 資料庫執行個體建立。

您可以遷移手動或自動資料庫快照。建立資料庫叢集之後，您就可以建立選用的 Aurora 複本。

**注意**  
您也可以建立來源 RDS for MySQL 資料庫執行個體的 Aurora 僅供讀取複本，以便將 RDS for MySQL 資料庫執行個體遷移至 Aurora MySQL 資料庫叢集。如需詳細資訊，請參閱[使用 Aurora 讀取複本，從 RDS for MySQL 資料庫執行個體將資料遷移至 Amazon Aurora MySQL 資料庫叢集](AuroraMySQL.Migrating.RDSMySQL.Replica.md)。  
您無法從某些舊版 MySQL 8.0 版本 (包括 8.0.11、8.0.13 和 8.0.15) 遷移到 Aurora MySQL 版本 3.05 及更高版本。建議您在遷移之前，先升級至 MySQL 8.0.28 版。

您必須採取的一般步驟如下：

1. 決定要佈建給 Aurora MySQL 資料庫叢集的空間數量。如需詳細資訊，請參閱[我需要多少空間？](#AuroraMySQL.Migrating.RDSMySQL.Space)

1. 使用 主控台在 Amazon RDS MySQL 執行個體所在的 AWS 區域中建立快照。如需建立資料庫快照的相關資訊，請參閱[建立資料庫快照](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html)。

1. 如果資料庫快照與您的資料庫叢集不在同一個 AWS 區域中，請使用 Amazon RDS 主控台將資料庫快照複製到該 AWS 區域。如需複製資料庫快照的相關資訊，請參閱[複製資料庫快照](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html)。

1. 使用主控台來遷移資料庫快照，並使用與原始 MySQL 資料庫執行個體相同的資料庫建立 Aurora MySQL 資料庫叢集。

**警告**  
Amazon RDS 會限制每個 AWS 帳戶一次一個快照複製到每個 AWS 區域。

## 我需要多少空間？
<a name="AuroraMySQL.Migrating.RDSMySQL.Space"></a>

當您將 MySQL 資料庫執行個體的快照遷移至 Aurora MySQL 資料庫叢集時，Aurora 在遷移快照之前，將會先使用 Amazon Elastic Block Store (Amazon EBS) 磁碟區來格式化快照中的資料。在某些情況下，需要額外的空間以格式化準備遷移的資料。

如果資料表不是 MyISAM 資料表且未壓縮，則最大為 16 TB。如果您有 MyISAM 資料表，則 Aurora 必須使用磁碟區中額外的空間，將資料表轉換成與 Aurora MySQL 相容。如果您有壓縮的資料表，則 Aurora 必須使用磁碟區中額外的空間將這些資料表解壓縮，再存放於 Aurora 叢集磁碟區。由於需要此額外空間，請確定要從 MySQL 資料庫執行個體遷移的 MyISAM 和壓縮資料表的大小皆未超過 8 TB。

## 減少將資料遷移至 Amazon Aurora MySQL 所需的空間量
<a name="AuroraMySQL.Migrating.RDSMySQL.PreImport"></a>

您可能想要先修改資料庫結構描述再遷移至 Amazon Aurora。在下列情況中，如此修改可能相當實用：
+ 您想要加快遷移程序的速度。
+ 您不確定必須佈建多少空間。
+ 您已嘗試遷移資料，但因為佈建的空間不足導致遷移失敗。

您可以進行下列變更，以改善將資料庫移遷移至 Amazon Aurora 的程序。

**重要**  
務必在從生產資料庫的快照所還原的新資料庫執行個體上執行這些更新，而非在生產執行個體上。然後，您可以從新資料庫執行個體的快照將資料遷移至 Aurora 資料庫叢集，以避免生產資料庫上的任何服務中斷。


| 資料表類型 | 限制或指導方針 | 
| --- | --- | 
|  MyISAM 資料表  |  Aurora MySQL 僅支援 InnoDB 資料表。如果您的資料庫中有 MyISAM 資料表，這些資料表必須先轉換再遷移至 Aurora MySQL。在遷移過程中，轉換程序需要額外的空間將 MyISAM 轉換為 InnoDB。 若要盡可能避免空間不足，或想要加速遷移程序，請先將所有 MyISAM 資料表轉換成 InnoDB 資料表再遷移。產生的 InnoDB 資料表大小相當於 Aurora MySQL 針對該資料表所需的大小。若要將 MyISAM 資料表轉換成 InnoDB，請執行下列命令： `alter table <schema>.<table_name> engine=innodb, algorithm=copy;`   | 
|  壓縮資料表  |  Aurora MySQL 不支援壓縮資料表 (即以 `ROW_FORMAT=COMPRESSED` 建立的資料表)。 若要盡可能避免空間不足，或想要加速遷移程序，請將 `ROW_FORMAT` 設為 `DEFAULT`、`COMPACT`、`DYNAMIC` 或 `REDUNDANT`，以展開壓縮資料表。如需詳細資訊，請參閱 MySQL 文件中的 [InnoDB 資料列格式](https://dev.mysql.com/doc/refman/8.0/en/innodb-row-format.html)。  | 

您可以在現有的 MySQL 資料庫執行個體上使用下列 SQL 指令碼，以列出資料庫中的 MyISAM 資料表或壓縮資料表。

```
-- This script examines a MySQL database for conditions that block
-- migrating the database into Amazon Aurora.
-- It needs to be run from an account that has read permission for the
-- INFORMATION_SCHEMA database.

-- Verify that this is a supported version of MySQL.

select msg as `==> Checking current version of MySQL.`
from
  (
  select
    'This script should be run on MySQL version 5.6 or higher. ' +
    'Earlier versions are not supported.' as msg,
    cast(substring_index(version(), '.', 1) as unsigned) * 100 +
      cast(substring_index(substring_index(version(), '.', 2), '.', -1)
      as unsigned)
    as major_minor
  ) as T
where major_minor <> 506;


-- List MyISAM and compressed tables. Include the table size.

select concat(TABLE_SCHEMA, '.', TABLE_NAME) as `==> MyISAM or Compressed Tables`,
round(((data_length + index_length) / 1024 / 1024), 2) "Approx size (MB)"
from INFORMATION_SCHEMA.TABLES
where
  ENGINE <> 'InnoDB'
  and
  (
    -- User tables
    TABLE_SCHEMA not in ('mysql', 'performance_schema',
                         'information_schema')
    or
    -- Non-standard system tables
    (
      TABLE_SCHEMA = 'mysql' and TABLE_NAME not in
        (
          'columns_priv', 'db', 'event', 'func', 'general_log',
          'help_category', 'help_keyword', 'help_relation',
          'help_topic', 'host', 'ndb_binlog_index', 'plugin',
          'proc', 'procs_priv', 'proxies_priv', 'servers', 'slow_log',
          'tables_priv', 'time_zone', 'time_zone_leap_second',
          'time_zone_name', 'time_zone_transition',
          'time_zone_transition_type', 'user'
        )
    )
  )
  or
  (
    -- Compressed tables
       ROW_FORMAT = 'Compressed'
  );
```

指令碼產生的輸出類似於下列範例中的輸出。範例顯示兩個必須從 MyISAM 轉換成 InnoDB 的資料表。輸出也包含每個資料表的大約大小 (以 MB 為單位)。

```
+---------------------------------+------------------+
| ==> MyISAM or Compressed Tables | Approx size (MB) |
+---------------------------------+------------------+
| test.name_table                 |          2102.25 |
| test.my_table                   |            65.25 |
+---------------------------------+------------------+
2 rows in set (0.01 sec)
```

## 將 RDS for MySQL 資料庫快照遷移至 Aurora MySQL 資料庫叢集
<a name="migrate-snapshot-ams-cluster"></a>

您可以使用 AWS 管理主控台 或 遷移 RDS for MySQL 資料庫執行個體的資料庫快照，以建立 Aurora MySQL 資料庫叢集 AWS CLI。新的 Aurora MySQL 資料庫叢集會使用來自原始 RDS for MySQL 資料庫執行個體的資料填入。如需建立資料庫快照的相關資訊，請參閱[建立資料庫快照](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html)。

如果資料庫快照不在您要尋找資料的 AWS 區域中，請將資料庫快照複製到該 AWS 區域。如需複製資料庫快照的相關資訊，請參閱[複製資料庫快照](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html)。

### 主控台
<a name="AuroraMySQL.Migrating.RDSMySQL.Import.Console"></a>

當您使用 遷移資料庫快照時 AWS 管理主控台，主控台會採取僅建立資料庫叢集所需的動作。

您也可以選擇使用 AWS KMS key，為新的 Aurora MySQL 資料庫叢集進行靜態加密。

**使用 遷移 MySQL 資料庫快照 AWS 管理主控台**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 從 MySQL 資料庫執行個體或從快照來開始遷移：

   從資料庫執行個體開始遷移：

   1. 在導覽窗格中，選擇 **Databases** (資料庫)，然後選取 MySQL 資料庫執行個體。

   1. 在 **Actions** (動作) 中，選擇 **Migrate latest snapshot** (遷移最新的快照)。

   若要從快照開始遷移，請執行以下操作：

   1. 選擇 **Snapshots (快照)**。

   1. 在 **Snapshots (快照)** 頁面上，選擇您要遷移至 Aurora MySQL 資料庫叢集的快照。

   1. 選擇 **Snapshot Actions (快照動作)**，然後選擇 **Migrate Snapshot (遷移快照)**。

   **Migrate Database (遷移資料庫)** 頁面隨即出現。

1. 在 **Migrate Database (遷移資料庫)** 頁面上設定下列值：
   + **Migrate to DB Engine (遷移至資料庫引擎)**：選取 `aurora`。
   + **DB Engine Version (資料庫引擎版本)**：選取 Aurora MySQL 資料庫叢集的資料庫引擎版本。
   + **DB Instance Class** (資料庫執行個體類別)：為您的資料庫選取具有所需儲存體和容量的資料庫執行個體類別，例如 `db.r3.large`。Aurora 叢集磁碟區會隨著您的資料庫中的資料數量增加自動成長。Aurora 叢集磁碟區的大小最多可增長至 128 tebibytes (TiB)。因此，您只需選擇滿足目前儲存體需求的資料庫執行個體。如需詳細資訊，請參閱[Amazon Aurora 儲存體的概觀](Aurora.Overview.StorageReliability.md#Aurora.Overview.Storage)。
   + **資料庫執行個體識別符**：輸入您所選 AWS 區域中帳戶唯一的資料庫叢集名稱。此識別符用於資料庫叢集內執行個體的端點位址。您可以選擇將一些智慧新增至名稱，例如包含您選取的 AWS 區域和資料庫引擎，例如 **aurora-cluster1**。

     該資料庫執行個體識別符有下列限制：
     + 必須包含 1 到 63 個英數字元或連字號。
     + 第一個字元必須是字母。
     + 不能以一個連字號結尾或是連續包含兩個連字號。
     + 每個 AWS 區域每個 AWS 帳戶的所有資料庫執行個體都必須是唯一的。
   + **Virtual Private Cloud (VPC)**：如果具有現有的 VPC，您可以選取 VPC 識別符，例如 `vpc-a464d1c1`，將該 VPC 用於 Aurora MySQL 資料庫叢集。如需建立 VPC 的詳細資訊，請參閱 [教學課程：建立要與資料庫叢集搭配使用的 VPC (僅限 IPv4)](CHAP_Tutorials.WebServerDB.CreateVPC.md)。

     否則，您可以選擇由 Aurora 為您建立 VPC，方法為選取 **Create a new VPC (建立新的 VPC)**。
   + **DB Subnet group** (資料庫子網路群組)：如果具有現有的子網路群組，您可以選取子網路群組識別符，例如 `gs-subnet-group1`，將該子網路群組用於 Aurora MySQL 資料庫叢集。

     否則，您可以選擇由 Aurora 為您建立子網路群組，方法為選取 **Create a new subnet group (建立新的子網路群組)**。
   + **Public a ccessibility (公開存取性)**：選擇 **No (否)**，以指定資料庫叢集中的執行個體只能由 VPC 內的資源存取。選取 **Yes (是)**，以指定公有網路上的資源可以存取資料庫叢集內的執行個體。預設值為 **Yes (是)**。
**注意**  
生產資料庫叢集可能不必位於公有子網路中，因為只有應用程式伺服器才需要存取資料庫叢集。如果您的資料庫叢集不必位於公有子網路中，將 **Publicly Accessible (公開存取性)** 設為 **No (否)**。
   + **Availability zone (可用區域)**：選取可用區域以託管 Aurora MySQL 資料庫叢集的主要執行個體。若要讓 Aurora 為您選擇可用區域，請選取 **No Preference (無偏好設定)**。
   + **Database Port (資料庫連接埠)**：輸入要在連接至 Aurora MySQL 資料庫叢集中的執行個體時使用的預設連接埠。預設值為 `3306`。
**注意**  
您可能在公司防火牆的後方，而此防火牆不允許存取預設連接埠，例如 MySQL 預設連接埠 3306。在此情況下，提供公司防火牆允許的連接埠值。稍後連線至 Aurora MySQL 資料庫叢集時，請記住該連接埠值。
   + **Encryption (加密)**：選擇 **Enable Encryption (啟用加密)**，對新的 Aurora MySQL 資料庫叢集進行靜態加密。如果您選擇 **Enable Encryption** (啟用加密)，則必須選擇 KMS 金鑰作為 **AWS KMS key**值。

     如果資料庫快照未加密，請指定加密金鑰，以便對資料庫叢集進行靜態加密。

     如果資料庫快照已加密，請指定加密金鑰，以使用指定的加密金鑰對資料庫叢集進行靜態加密。您可以指定資料庫快照所使用的加密金鑰，或不同的金鑰。您無法從已加密的資料庫快照來建立未加密的資料庫叢集。
   + **Auto Minor Version Upgrade (自動次要版本升級)**：此設定不適用於 Aurora MySQL 資料庫叢集。

     如需 Aurora MySQL 引擎更新的詳細資訊，請參閱 [Amazon Aurora MySQL 的資料庫引擎更新Amazon Aurora MySQL 的長期支援 (LTS) 和 Beta 版](AuroraMySQL.Updates.md)。

1. 選擇 **Migrate (遷移)** 以遷移您的資料庫快照。

1. 選擇 **Instances (執行個體)**，然後選擇箭頭圖示以顯示資料庫叢集詳細資訊並監控遷移進度。在詳細資訊頁面上，您可以找到用於連接至資料庫叢集之主要執行個體的叢集端點。如需連接至 Aurora MySQL 資料庫叢集的詳細資訊，請參閱[連接至 Amazon Aurora 資料庫叢集](Aurora.Connecting.md)。

### AWS CLI
<a name="USER_ImportAuroraCluster.CLI"></a>

您可以使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-from-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-from-snapshot.html) 命令和下列參數，從 RDS for MySQL 資料庫執行個體的資料庫快照來建立 Aurora 資料庫叢集：
+ `--db-cluster-identifier` – 要建立的資料庫叢集名稱。
+ `--engine aurora-mysql` – 適用於 MySQL 5.7 相容或 8.0 相容的資料庫叢集。
+ `--kms-key-id` – AWS KMS key 選擇性地使用 加密資料庫叢集，取決於您的資料庫快照是否已加密。
  + 如果資料庫快照未加密，請指定加密金鑰，以便對資料庫叢集進行靜態加密。否則，資料庫叢集不會加密。
  + 如果資料庫快照已加密，請指定加密金鑰，以使用指定的加密金鑰對資料庫叢集進行靜態加密。否則會使用資料庫快照的加密金鑰，對資料庫叢集進行靜態加密。
**注意**  
您無法從已加密的資料庫快照來建立未加密的資料庫叢集。
+ `--snapshot-identifier` – 要遷移之資料庫快照的 Amazon 資源名稱 (ARN)。如需 Amazon RDS ARN 的詳細資訊，請參閱 [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-rds)。

當您使用 `RestoreDBClusterFromSnapshot` 命令來遷移資料庫快照時，此命令會建立資料庫叢集和主要執行個體。

在此範例中，您從 ARN 設為 *mydbsnapshotARN* 的資料庫快照，建立 MySQL 5.7 相容的資料庫叢集，名為 *mydbcluster*。

對於 Linux、macOS 或 Unix：

```
aws rds restore-db-cluster-from-snapshot \
    --db-cluster-identifier mydbcluster \
    --snapshot-identifier mydbsnapshotARN \
    --engine aurora-mysql
```

在 Windows 中：

```
aws rds restore-db-cluster-from-snapshot ^
    --db-cluster-identifier mydbcluster ^
    --snapshot-identifier mydbsnapshotARN ^
    --engine aurora-mysql
```

在此範例中，您從 ARN 設為 *mydbsnapshotARN* 的資料庫快照，建立 MySQL 5.7 相容的資料庫叢集，名為 *mydbcluster*。

對於 Linux、macOS 或 Unix：

```
aws rds restore-db-cluster-from-snapshot \
    --db-cluster-identifier mydbcluster \
    --snapshot-identifier mydbsnapshotARN \
    --engine aurora-mysql
```

在 Windows 中：

```
aws rds restore-db-cluster-from-snapshot ^
    --db-cluster-identifier mydbcluster ^
    --snapshot-identifier mydbsnapshotARN ^
    --engine aurora-mysql
```

# 使用 Aurora 讀取複本，從 RDS for MySQL 資料庫執行個體將資料遷移至 Amazon Aurora MySQL 資料庫叢集
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica"></a>

Aurora 使用 MySQL 資料庫引擎的二進位日誌複寫功能，為來源 RDS for MySQL 資料庫執行個體建立一種特殊類型的資料庫叢集，稱為 Aurora 讀取複本。對來源 RDS for MySQL 資料庫執行個體進行的更新會以非同步方式複寫至 Aurora 讀取複本。

我們建議使用此功能建立來源 RDS for MySQL 資料庫執行個體的 Aurora 讀取複本，以便從 RDS for MySQL 資料庫執行個體遷移至 Aurora MySQL 資料庫叢集。當 RDS for MySQL 資料庫執行個體和 Aurora 讀取複本之間的複本延遲為 0 時，您可以將用戶端應用程式引導至 Aurora 讀取複本，然後停止複寫，使 Aurora 讀取複本變成獨立的 Aurora MySQL 資料庫叢集。遷移需要一段時間，每個一兆位元組 (TiB) 資料大約需要幾個小時，請做好準備。

如需可使用 Aurora 的區域清單，請參閱 *AWS 一般參考* 中的 [Amazon Aurora](https://docs.aws.amazon.com/general/latest/gr/rande.html#aurora)。

當您建立 RDS for MySQL 資料庫執行個體的 Aurora 讀取複本時，Amazon RDS 會建立來源 RDS for MySQL 資料庫執行個體的資料庫快照 (為 Amazon RDS 私有，不會產生費用)。然後 Amazon RDS 會將資料從資料庫快照遷移至 Aurora 僅供讀取複本。當資料庫快照的資料遷移至新的 Aurora MySQL 資料庫叢集之後，Amazon RDS 會開始在 RDS for MySQL 資料庫執行個體和 Aurora MySQL 資料庫叢集之間複寫。如果 RDS for MySQL 資料庫執行個體中有資料表使用 InnoDB 以外的儲存引擎，或使用壓縮資料列格式，則在建立 Aurora 讀取複本之前，您可以更改這些資料表來使用 InnoDB 儲存引擎和動態資料列格式，使建立 Aurora 讀取複本的程序加快。如需將 MySQL 資料庫快照複製到 Aurora MySQL 資料庫叢集之程序的詳細資訊，請參閱[將資料從 RDS for MySQL 資料庫執行個體遷移到 Amazon Aurora MySQL 資料庫叢集](AuroraMySQL.Migrating.RDSMySQL.md)。

一個 RDS for MySQL 資料庫執行個體只能有一個 Aurora 讀取複本。

**注意**  
由於 Aurora MySQL 與 RDS for MySQL 資料庫執行個體 (複寫主節點) 的 MySQL 資料庫引擎版本之間的功能差異，複寫可能會出現問題。如果您遇到錯誤，您可以在 [Amazon RDS 社群論壇](https://forums.aws.amazon.com/forum.jspa?forumID=60)或聯絡 找到說明 AWS 支援。  
如果 RDS for MySQL 資料庫執行個體已是跨區域讀取複本的來源，您就無法建立 Aurora 讀取複本。  
您無法從某些較舊的 RDS for MySQL 8.0 版本 (包括 8.0.11、8.0.13 和 8.0.15) 遷移到 Aurora MySQL 版本 3.05 及更高版本。建議您在遷移之前，先升級至 RDS for MySQL 8.0.28 版。

如需 MySQL 僅供讀取複本的詳細資訊，請參閱[使用 MariaDB、MySQL 及 PostgreSQL DB 執行個體的僅供讀取複本](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html)。

## 建立 Aurora 僅供讀取複本
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica.Create"></a>

您可以使用 主控台 AWS CLI、 或 RDS API，為 RDS for MySQL 資料庫執行個體建立 Aurora 僅供讀取複本。

### 主控台
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica.Create.Console"></a>

**從來源 RDS for MySQL 資料庫執行個體建立 Aurora 讀取複本**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇要作為 Aurora 僅供讀取複本來源的 MySQL 資料庫執行個體。

1. 在 **Actions** (動作) 中選擇 **Create Aurora read replica** (建立僅供讀取複本)。

1. 選擇要用於 Aurora 僅供讀取複本的資料庫叢集規格，如下表所述。    
<a name="aurora_read_replica_param_advice"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Migrating.RDSMySQL.Replica.html)

1. 選擇 **Create read replica (建立僅供讀取複本)**。

### AWS CLI
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica.Create.CLI"></a>

若要從來源 RDS for MySQL 資料庫執行個體建立 Aurora 僅供讀取複本，請使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html)和 [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) AWS CLI 命令建立新的 Aurora MySQL 資料庫叢集。當您呼叫 `create-db-cluster` 命令時，請加上 `--replication-source-identifier` 參數，以識別來源 MySQL 資料庫執行個體的 Amazon Resource Name (ARN)。如需 Amazon RDS ARN 的詳細資訊，請參閱 [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-rds)。

請勿指定主要使用者名稱、主要密碼或資料庫名稱，因為 Aurora 僅供讀取複本會使用與來源 MySQL 資料庫執行個體相同的主要使用者名稱、主要密碼、資料庫名稱。

對於 Linux、macOS 或 Unix：

```
aws rds create-db-cluster --db-cluster-identifier sample-replica-cluster --engine aurora \
    --db-subnet-group-name mysubnetgroup --vpc-security-group-ids sg-c7e5b0d2 \
    --replication-source-identifier arn:aws:rds:us-west-2:123456789012:db:primary-mysql-instance
```

在 Windows 中：

```
aws rds create-db-cluster --db-cluster-identifier sample-replica-cluster --engine aurora ^
    --db-subnet-group-name mysubnetgroup --vpc-security-group-ids sg-c7e5b0d2 ^
    --replication-source-identifier arn:aws:rds:us-west-2:123456789012:db:primary-mysql-instance
```

如果您使用主控台建立 Aurora 僅供讀取複本，則 Aurora 會為您的資料庫叢集 Aurora 僅供讀取複本自動建立主要執行個體。如果您使用 AWS CLI 建立 Aurora 僅供讀取複本，則必須明確建立資料庫叢集的主要執行個體。主要執行個體是資料庫叢集內第一個建立的執行個體。

您可以使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) AWS CLI 命令搭配下列參數，為您的資料庫叢集建立主要執行個體。
+ `--db-cluster-identifier`

  資料庫叢集的名稱。
+ `--db-instance-class`

  要用於主要執行個體的執行個體類別名稱。
+ `--db-instance-identifier`

  主要執行個體的名稱。
+ `--engine aurora`

在此範例中，您會使用在 *myinstanceclass* 中指定的資料庫執行個體類別，為 *myreadreplicacluster* 資料庫叢集建立主要執行個體 *myreadreplicainstance*。

**Example**  
對於 Linux、macOS 或 Unix：  

```
aws rds create-db-instance \
    --db-cluster-identifier myreadreplicacluster \
    --db-instance-class myinstanceclass \
    --db-instance-identifier myreadreplicainstance \
    --engine aurora
```
在 Windows 中：  

```
aws rds create-db-instance ^
    --db-cluster-identifier myreadreplicacluster ^
    --db-instance-class myinstanceclass ^
    --db-instance-identifier myreadreplicainstance ^
    --engine aurora
```

### RDS API
<a name="Aurora.Migration.RDSMySQL.Create.API"></a>

若要從來源 RDS for MySQL 資料庫執行個體建立 Aurora 讀取複本，請使用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html) 和 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) Amazon RDS API 命令建立新的 Aurora 資料庫叢集和主要執行個體。請勿指定主要使用者名稱、主要密碼或資料庫名稱，因為 Aurora 讀取複本會使用與來源 RDS for MySQL 資料庫執行個體相同的主要使用者名稱、主要密碼、資料庫名稱。

您可以使用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html) Amazon RDS API 命令搭配以下參數，從來源 RDS for MySQL 資料庫執行個體為 Aurora 讀取複本建立新的 Aurora 資料庫叢集：
+ `DBClusterIdentifier`

  要建立的資料庫叢集名稱。
+ `DBSubnetGroupName`

  要與此資料庫叢集關聯之資料庫子網路群組的名稱。
+ `Engine=aurora`
+ `KmsKeyId`

   AWS KMS key 選擇性地使用 加密資料庫叢集，取決於您的 MySQL 資料庫執行個體是否已加密。
  + 如果 MySQL 資料庫執行個體未加密，請指定加密金鑰，以便對資料庫叢集進行靜態加密。否則會使用您的帳戶的預設加密金鑰，對資料庫叢集進行靜態加密。
  + 如果 MySQL 資料庫執行個體已加密，請指定加密金鑰，以使用指定的加密金鑰對資料庫叢集進行靜態加密。否則會使用 MySQL 資料庫執行個體的加密金鑰，對資料庫叢集進行靜態加密。
**注意**  
您無法從已加密的 MySQL 資料庫執行個體來建立未加密的資料庫叢集。
+ `ReplicationSourceIdentifier`

  來源 MySQL 資料庫執行個體的 Amazon Resource Name (ARN)。如需 Amazon RDS ARN 的詳細資訊，請參閱 [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-rds)。
+ `VpcSecurityGroupIds`

  要與此資料庫叢集關聯的 EC2 VPC 安全群組的清單。

在此範例中，您會從來源 MySQL 資料庫執行個體建立資料庫叢集 *myreadreplicacluster*，此來源的 ARN 設為 *mysqlprimaryARN*，並與 *mysubnetgroup* 資料庫子網路群組及 *mysecuritygroup* VPC 安全群組相關聯。

**Example**  

```
https://rds.us-east-1.amazonaws.com/
    ?Action=CreateDBCluster
    &DBClusterIdentifier=myreadreplicacluster
    &DBSubnetGroupName=mysubnetgroup
    &Engine=aurora
    &ReplicationSourceIdentifier=mysqlprimaryARN
    &SignatureMethod=HmacSHA256
    &SignatureVersion=4
    &Version=2014-10-31
    &VpcSecurityGroupIds=mysecuritygroup
    &X-Amz-Algorithm=AWS4-HMAC-SHA256
    &X-Amz-Credential=AKIADQKE4SARGYLE/20150927/us-east-1/rds/aws4_request
    &X-Amz-Date=20150927T164851Z
    &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
    &X-Amz-Signature=6a8f4bd6a98f649c75ea04a6b3929ecc75ac09739588391cd7250f5280e716db
```

如果您使用主控台建立 Aurora 僅供讀取複本，則 Aurora 會為您的資料庫叢集 Aurora 僅供讀取複本自動建立主要執行個體。如果您使用 AWS CLI 建立 Aurora 僅供讀取複本，則必須明確建立資料庫叢集的主要執行個體。主要執行個體是資料庫叢集內第一個建立的執行個體。

您可以使用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) Amazon RDS API 命令搭配以下參數來建立資料庫叢集的主要執行個體：
+ `DBClusterIdentifier`

  資料庫叢集的名稱。
+ `DBInstanceClass`

  要用於主要執行個體的執行個體類別名稱。
+ `DBInstanceIdentifier`

  主要執行個體的名稱。
+ `Engine=aurora`

在此範例中，您會使用在 *myinstanceclass* 中指定的資料庫執行個體類別，為 *myreadreplicacluster* 資料庫叢集建立主要執行個體 *myreadreplicainstance*。

**Example**  

```
https://rds.us-east-1.amazonaws.com/
    ?Action=CreateDBInstance
    &DBClusterIdentifier=myreadreplicacluster
    &DBInstanceClass=myinstanceclass
    &DBInstanceIdentifier=myreadreplicainstance
    &Engine=aurora
    &SignatureMethod=HmacSHA256
    &SignatureVersion=4
    &Version=2014-09-01
    &X-Amz-Algorithm=AWS4-HMAC-SHA256
    &X-Amz-Credential=AKIADQKE4SARGYLE/20140424/us-east-1/rds/aws4_request
    &X-Amz-Date=20140424T194844Z
    &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date
    &X-Amz-Signature=bee4aabc750bf7dad0cd9e22b952bd6089d91e2a16592c2293e532eeaab8bc77
```

## 檢視 Aurora 僅供讀取複本
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica.View"></a>

您可以使用 AWS 管理主控台 或 AWS CLI，以檢視 Aurora MySQL 資料庫叢集的 MySQL 至 Aurora MySQL 複寫關係。

### 主控台
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica.View.Console"></a>

**檢視 Aurora 僅供讀取複本的主要 MySQL 資料庫執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇 Aurora 僅供讀取複本的資料庫叢集，以顯示其詳細資訊。主要 MySQL 資料庫執行個體資訊在 **Replication source** (複寫來源) 欄位中。  
![\[檢視 MySQL 主要資料庫\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/AuroraUserGuide/images/aurora-repl6.png)

### AWS CLI
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica.View.CLI"></a>

若要使用 檢視 Aurora MySQL 資料庫叢集的 MySQL 對 Aurora MySQL 複寫關係 AWS CLI，請使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html)和 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html)命令。

若要判斷哪個 MySQL 資料庫執行個體是主節點，請使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html)，並在 `--db-cluster-identifier` 選項中指定 Aurora 僅供讀取複本的叢集識別符。請查閱輸出中的 `ReplicationSourceIdentifier` 元素，以取得做為複寫主節點之資料庫執行個體的 ARN。

若要判斷哪個資料庫叢集是 Aurora 僅供讀取複本，請使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html)，並在 `--db-instance-identifier` 選項中指定 MySQL 資料庫執行個體的執行個體識別符。請參閱輸出中的 `ReadReplicaDBClusterIdentifiers` 元素，以取得 Aurora 僅供讀取複本的資料庫叢集識別符。

**Example**  
對於 Linux、macOS 或 Unix：  

```
aws rds describe-db-clusters \
    --db-cluster-identifier myreadreplicacluster
```

```
aws rds describe-db-instances \
    --db-instance-identifier mysqlprimary
```
在 Windows 中：  

```
aws rds describe-db-clusters ^
    --db-cluster-identifier myreadreplicacluster
```

```
aws rds describe-db-instances ^
    --db-instance-identifier mysqlprimary
```

## 提升 Aurora 僅供讀取複本
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica.Promote"></a>

遷移完成後，您可以使用 AWS 管理主控台 或 將 Aurora 僅供讀取複本提升為獨立的資料庫叢集 AWS CLI。

接著您可以將用戶端應用程式導向 Aurora 僅供讀取複本的端點。如需 Aurora 端點的詳細資訊，請參閱 [Amazon Aurora 端點連線](Aurora.Overview.Endpoints.md)。提升應該會很快完成，而且您在提升期間可以讀取和寫入 Aurora 僅供讀取複本。但在此期間，您無法刪除主要 MySQL 資料庫執行個體，或解除資料庫執行個體與 Aurora 僅供讀取複本之間的連結。

在提升 Aurora 僅供讀取複本之前，請先停止任何交易寫入來源 MySQL 資料庫執行個體，並等待 Aurora 僅供讀取複本的複本延遲達到 0。您可以檢視 Aurora 僅供讀取複本的複本延遲，方法是在您的 Aurora 僅供讀取複本上呼叫 `SHOW SLAVE STATUS` (Aurora MySQL 第 2 版) 或 `SHOW REPLICA STATUS` (Aurora MySQL 第 3 版) 命令。檢查 **Seconds behind master** 值。

當交易停止寫入主節點且複本延遲為 0 之後，您就可以開始寫入 Aurora 僅供讀取複本。如果您在此之前寫入 Aurora 僅供讀取複本，且修改 MySQL 主節點上也正在修改的資料表，則可能會中斷複寫至 Aurora 的作業。如果發生這種情況，您必須刪除並重新建立 Aurora 僅供讀取複本。

### 主控台
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica.Promote.Console"></a>

**將 Aurora 僅供讀取複本提升為 Aurora 資料庫叢集**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇 Aurora 僅供讀取複本的資料庫叢集。

1. 針對 **Actions** (動作)，選擇 **Promote** (提升)。

1. 選擇 **Promote Read Replica** (提升僅供讀取複本)。

升級後，請使用下列程序確認提升已完成。

**確認已提升 Aurora 僅供讀取複本**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Events** (事件)。

1. 在 **Events** (事件) 頁面上，確認您提升的叢集有 `Promoted Read Replica cluster to a stand-alone database cluster` 事件。

提升完成後，主要 MySQL 資料庫執行個體與 Aurora 僅供讀取複本會解除連結，您可以安心地刪除資料庫執行個體 (如果想要這麼做)。

### AWS CLI
<a name="AuroraMySQL.Migrating.RDSMySQL.Replica.Promote.CLI"></a>

若要將 Aurora 僅供讀取複本提升為獨立資料庫叢集，請使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica-db-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica-db-cluster.html) AWS CLI 命令。

**Example**  
對於 Linux、macOS 或 Unix：  

```
aws rds promote-read-replica-db-cluster \
    --db-cluster-identifier myreadreplicacluster
```
在 Windows 中：  

```
aws rds promote-read-replica-db-cluster ^
    --db-cluster-identifier myreadreplicacluster
```