

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

# 從外部 MySQL 資料庫將資料匯入至 Amazon RDS for MySQL 資料庫執行個體
<a name="mysql-importing-data-external-database"></a>

您可將資料從現有的 MySQL 資料庫匯入至 RDS for MySQL 資料庫執行個體。方法是以 [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html) 命令複製資料庫，然後直接傳輸到 RDS for MySQL 資料庫執行個體。`mysqldump` 命令列公用程式普遍用於製作備份，以及將資料從 MySQL 伺服器傳輸至另一個伺服器。MySQL 用戶端軟體隨附這個程式。

**注意**  
如果您要使用 MySQL 資料庫執行個體匯入或匯出大量資料，使用 `xtrabackup` 備份檔案和 Amazon S3 將資料移入和移出 Amazon RDS，會更加可靠且更快速。如需詳細資訊，請參閱[將備份還原至 Amazon RDS for MySQL 資料庫執行個體](MySQL.Procedural.Importing.md)。

典型的 `mysqldump` 命令會將資料從外部資料庫移入 Amazon RDS 資料庫執行個體，如下列範例所示。將值取代為您自己的資訊。

```
mysqldump -u {{local_user}} \
    --databases {{database_name}} \
    --single-transaction \
    --compress \
    --order-by-primary  \
    --routines=0 \
    --triggers=0 \
    --events=0 \
    -p{{local_password}} | mysql -u {{RDS_user}} \
        --port={{port_number}} \
        --host={{host_name}} \
        -p{{RDS_password}}
```

**重要**  
切勿在 `-p` 選項與輸入的密碼間插入空白。  
指定此範例中所顯示提示以外的憑證，作為安全最佳實務。

請確認您了解下列建議和注意事項：
+ 從傾印檔案中排除下列結構描述：
  + `sys`
  + `performance_schema`
  + `information_schema`

  `mysqldump` 公用程式已預設排除這些結構描述。
+ 如需遷移使用者與權限，建議您使用可產生資料控制語言 (DCL) 以重建使用者與權限的工具，例如 [pt-show-grants](https://www.percona.com/doc/percona-toolkit/LATEST/pt-show-grants.html) 公用程式。
+ 若要執行匯入，請確認執行此程序的使用者能夠存取資料庫執行個體。如需詳細資訊，請參閱 [使用安全群組控制存取](Overview.RDSSecurityGroups.md)。

使用的參數如下：
+ `-u {{local_user}}` – 用來指定使用者名稱。首次使用此參數時，需在 `--databases` 參數所識別的本機 MySQL 資料庫中指定使用者帳戶名稱。
+ `--databases {{database_name}}` – 在您要匯入至 Amazon RDS 的本機 MySQL 執行個體上，指定資料庫名稱。
+ `--single-transaction` – 確保從本機資料庫負載的所有資料均與單一時間點一致。如有其他程序在 `mysqldump` 讀取資料時變更資料，使用此參數有助於維持資料完整性。
+ `--compress` – 在本機資料庫的資料傳送到 Amazon RDS 前先完成壓縮，以減少耗用的網路頻寬。
+ `--order-by-primary` – 以資料的主索引鍵排序各資料表的資料，以減少載入時間。
+ `--routines` – 如果預存程序或函數等常式存在於您要複製的資料庫中，則應使用。將參數設定為 `0`，這會在匯入程序期間排除常式。然後，在 Amazon RDS 資料庫中手動重新建立常式。
+ `--triggers` – 如果觸發程序存在於您要複製的資料庫中，則應使用。將參數設定為 `0`，這會在匯入程序期間排除觸發程序。然後，在 Amazon RDS 資料庫中手動重新建立觸發程序。
+ `--events` – 如果事件存在於您要複製的資料庫中，則應使用。將參數設定為 `0`，這會在匯入程序期間排除事件。然後，在 Amazon RDS 資料庫中手動重新建立事件。
+ `-p{{local_password}}` – 用來指定密碼。首次使用此參數時，請指定您以第一個 `-u` 參數識別的使用者帳戶的密碼。
+ `-u {{RDS_user}}` – 用來指定使用者名稱。第二次使用此參數時，需在 `--host` 參數所識別的 MySQL 資料庫執行個體的預設資料庫上，指定使用者帳戶名稱。
+ `--port {{port_number}}` – 用於指定 MySQL 資料庫執行個體的連接埠。預設值為 3306，除非您在建立資料庫執行個體時另行變更。
+ `--host {{host_name}}` – 用來指定 Amazon RDS 資料庫執行個體端點的網域名稱系統 (DNS) 名稱，例如 。`myinstance.123456789012.us-east-1.rds.amazonaws.com`您可在 Amazon RDS 主控台的資料庫執行個體詳細資訊中找到端點值。
+ `-p{{RDS_password}}` – 用來指定密碼。第二次使用此參數時，需指定第二個 `-u` 參數所識別的使用者帳戶密碼。

必須在 Amazon RDS 資料庫中手動建立預存程序、觸發程序、函數或事件。如果您正在複製的資料庫中存有上述物件，則請在執行 `mysqldump` 時排除這些物件。為此，請在 `mysqldump` 命令中包含下列參數：
+ `--routines=0`
+ `--triggers=0`
+ `--events=0`

**範例**

下列範例會將本機主機上的 `world` 範例資料庫複製到 RDS for MySQL 資料庫執行個體。將值取代為您自己的資訊。

針對 Linux、macOS 或 Unix：

```
sudo mysqldump -u {{local_user}} \
    --databases {{world}} \
    --single-transaction \
    --compress \
    --order-by-primary  \
    --routines=0 \
    --triggers=0 \
    --events=0 \
    -p{{local_password}} | mysql -u {{rds_user}} \
        --port={{3306}} \
        --host={{my_instance.123456789012.us-east-1.rds.amazonaws.com}} \
        -p{{RDS_password}}
```

在 Windows 中：

在命令提示字元中執行下列命令，方法是對 Windows 程式功能表中的**命令提示字元**按一下滑鼠右鍵，然後選擇**以系統管理員身分執行**。將值取代為您自己的資訊。

```
mysqldump -u {{local_user}} ^
    --databases {{world}} ^
    --single-transaction ^
    --compress ^
    --order-by-primary  ^
    --routines=0 ^
    --triggers=0 ^
    --events=0 ^
    -p{{local_password}} | mysql -u {{RDS_user}} ^
        --port={{3306}} ^
        --host={{my_instance.123456789012.us-east-1.rds.amazonaws.com}} ^
        -p{{RDS_password}}
```

**注意**  
指定此範例中所顯示提示以外的憑證，作為安全最佳實務。