

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

# 將資料遷移至 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 版。