

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

# 在 中使用 MySQL 相容資料庫做為同質資料遷移的來源 AWS DMS
<a name="dm-data-providers-source-mysql"></a>

您可以使用與 MySQL 相容的資料庫 (MySQL 或 MariaDB) 作為 AWS DMS中 [同質資料遷移](data-migrations.md) 的來源。在這種情況下，您的來源資料提供者可以是內部部署、Amazon EC2、RDS for MySQL 或 MariaDB 資料庫。

若要執行同質資料遷移，您的資料庫使用者必須具有複製所有來源資料表和次要物件的 `SELECT` 權限。對於變更資料擷取 (CDC) 任務，此使用者也必須擁有 `REPLICATION CLIENT` (MariaDB 10.5.2 以上版本的 `BINLOG MONITOR`) 和 `REPLICATION SLAVE` 權限。對於完全載入的資料遷移，您不需要這兩個權限。

使用以下指令碼在 MySQL 資料庫中建立具有所需許可的資料庫使用者。為您遷移到的所有資料庫執行`GRANT`查詢 AWS。

```
CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_password';

GRANT REPLICATION SLAVE, REPLICATION CLIENT  ON *.* TO 'your_user'@'%';
GRANT SELECT, RELOAD, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON *.* TO 'your_user'@'%';

GRANT BACKUP_ADMIN ON *.* TO 'your_user'@'%';
```

在上述範例中，將每個*使用者輸入預留位置*取代為您自己的資訊。如果您的來源 MySQL 資料庫版本低於 8.0，則可以跳過該 `GRANT BACKUP_ADMIN` 命令。

使用以下指令碼在 MariaDB 資料庫中建立具有所需許可的資料庫使用者。為您遷移到的所有資料庫執行 GRANT 查詢 AWS。

```
CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_password';
GRANT SELECT, RELOAD, LOCK TABLES, REPLICATION SLAVE, BINLOG MONITOR, SHOW VIEW ON  *.* TO 'your_user'@'%';
```

在上述範例中，將每個*使用者輸入預留位置*取代為您自己的資訊。

下列各節說明自我管理和 AWS管理 MySQL 資料庫的特定組態先決條件。

**Topics**
+ [

## 使用自我管理的 MySQL 相容資料庫作為同質資料遷移
](#dm-data-providers-source-mysql-sm)
+ [

## 使用 AWS管理的 MySQL 相容資料庫做為 中同質資料遷移的來源 AWS DMS
](#dm-data-providers-source-mysql-aws)
+ [

## 使用 MySQL 相容資料庫作為同質資料遷移來源的限制
](#dm-data-providers-source-mysql-limitations)

## 使用自我管理的 MySQL 相容資料庫作為同質資料遷移
<a name="dm-data-providers-source-mysql-sm"></a>

本節說明如何設定在內部部署或 Amazon EC2 執行個體上託管的 MySQL 相容資料庫。

檢查來源 MySQL 或 MariaDB 資料庫的版本。請確定 AWS DMS 支援來源 MySQL 或 MariaDB 資料庫版本，如中所述[DMS 同質資料遷移的來源](CHAP_Introduction.Sources.md#CHAP_Introduction.Sources.HomogeneousDataMigrations)。

若要使用 CDC，請確保有啟用二進位記錄。若要啟用二進位記錄，您必須在 MySQL 或 MariaDB 資料庫的 `my.ini` (Windows) 或 `my.cnf` (UNIX) 檔案中設定以下參數。


| 參數 | Value | 
| --- | --- | 
| `server-id` | 將此參數值設為 1 或更大。 | 
| `log-bin` | 將路徑設定到二進位日誌檔，例如 `log-bin=E:\MySql_Logs\BinLog`。不要包含副檔名。 | 
| `binlog_format` | 將此參數設為 `ROW`。我們建議在複寫期間進行此設定，因為在某些情況下，當 `binlog_format` 設定為 `STATEMENT` 時，可能會導致資料複製到目標時產生不一致。當 `binlog_format` 設定為 `MIXED` 時，由於資料庫引擎會自動切換到 `STATEMENT` 型記錄，因此資料庫引擎也會將類似的不一致資料寫入目標。 | 
| `expire_logs_days` | 將此參數值設為 1 或更大。為避免過度使用磁碟空間，建議您不要使用預設值 0。 | 
| `binlog_checksum` | 將此參數設為 `NONE`。 | 
| `binlog_row_image` | 將此參數設為 `FULL`。 | 
| `log_slave_updates` | 如果您使用 MySQL 或 MariaDB 複寫作為來源，請將此參數設為 `TRUE`。 | 

## 使用 AWS管理的 MySQL 相容資料庫做為 中同質資料遷移的來源 AWS DMS
<a name="dm-data-providers-source-mysql-aws"></a>

本節說明如何設定您的 Amazon RDS for MySQL 和 Amazon RDS for MariaDB 資料庫執行個體。

當您使用 AWS受管 MySQL 或 MariaDB 資料庫做為同質資料遷移的來源時 AWS DMS，請確定您有下列 CDC 的先決條件：
+ 若要啟用適用於 RDS for MySQL 和 MariaDB 的二進位日誌，請在執行個體層級啟用自動備份。若要為 Aurora MySQL 叢集啟用二進位日誌，請變更參數群組中 `binlog_format` 的變數。您無需啟用 Aurora MySQL 叢集的自動備份。

  接下來將 `binlog_format` 參數設為 `ROW`。

  如需設定自動備份的詳細資訊，請參閱《*Amazon RDS 使用者指南*》的「[啟用自動備份](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.Enabling)」。

  如需有關為 Amazon RDS for MySQL 或 MariaDB 資料庫設定二進位日誌的詳細資訊，請參閱《*Amazon RDS 使用者指南*》中的「[設定二進位日誌格式](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.MySQL.BinaryFormat.html)」。

  如需為 Aurora MySQL 叢集設定二進位日誌的詳細資訊，請參閱[如何開啟 Amazon Aurora MySQL 叢集的二進位記錄？](https://aws.amazon.com/premiumsupport/knowledge-center/enable-binary-logging-aurora/) 。
+ 確保二進位日誌可供 使用 AWS DMS。由於 AWS受管 MySQL 和 MariaDB 資料庫會盡快清除二進位日誌，因此您應該增加日誌保持可用的時間長度。例如，執行下列命令將日誌保留期增加為 24 小時。

  ```
  call mysql.rds_set_configuration('binlog retention hours', 24);
  ```
+ 將 `binlog_row_image` 參數設為 `Full`。
+ 將 `binlog_checksum` 參數設為 `NONE`。
+ 如果您使用 Amazon RDS MySQL 或 MariaDB 複本作為來源，請在讀取複本上啟用備份，並確保將 `log_slave_updates` 參數設為 `TRUE`。

## 使用 MySQL 相容資料庫作為同質資料遷移來源的限制
<a name="dm-data-providers-source-mysql-limitations"></a>

使用 MySQL 相容資料庫作為同質資料遷移的來源時，存在下列限制：
+ 同質遷移任務不支援 MariaDB 物件 (例如序列)。
+ 從 MariaDB 遷移到 Amazon RDS MySQL/ Aurora MySQL 可能會因不相容的物件差異而失敗。
+ 用於連線到資料來源的使用者名稱具有以下限制：
  + 長度可有 2 到 64 個字元。
  + 不能有空格。
  + 可以包含以下字元：a-z、A-Z、0-9 和底線 (\$1)。
  + 必須以 a-z 或 A-Z 開頭。
+ 您用來連線到資料來源的密碼具有以下限制：
  + 長度可有 1 到 128 個字元。
  + 不能包含下列任何項目：單引號 (')、雙引號 (「)、分號 (;) 或空格。
+ AWS DMS 同質資料遷移會在目標 Amazon RDS 執行個體上建立未加密的 MySQL 和 MariaDB 物件，即使來源物件已加密。RDS for MySQL 不支援加密物件所需的 MySQL keyring\$1aws AWS Keyring 外掛程式。請參閱《Amazon RDS 使用者指南》中的 [MySQL Keyring 外掛程式不支援的文件](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.KnownIssuesAndLimitations.html#MySQL.Concepts.Limits.KeyRing) 
+ AWS DMS 即使來源資料包含資料， 也不會使用 的全域交易識別符 (GTIDs) 進行資料複寫。