本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 My SQL相容資料庫做為 的目標 AWS Database Migration Service
您可以從 AWS DMS 支援的任何來源資料引擎 AWS DMS,使用 將資料遷移至任何 My SQL相容資料庫。如果您要遷移至內部部署 My SQL相容資料庫,則 AWS DMS 需要您的來源引擎位於 AWS 生態系統中。引擎可以採用 AWS受管服務,例如 Amazon RDS、Amazon Aurora 或 Amazon S3。或者,引擎可以在 Amazon 上的自我管理資料庫上EC2。
您可以使用 SSL 來加密 My SQL相容端點與複寫執行個體之間的連線。如需使用 SSL搭配 My SQL相容端點的詳細資訊,請參閱 SSL 搭配 使用 AWS Database Migration Service。
如需 AWS DMS 支援做為目標的 MySQL 版本資訊,請參閱 的目標 AWS DMS。
您可以使用下列 My SQL相容資料庫做為 的目標 AWS DMS:
-
我的SQL Community Edition
-
我的SQL標準版本
-
我的SQL Enterprise Edition
-
我的SQL叢集電信業者等級版本
-
MariaDB Community Edition
-
MariaDB Enterprise Edition
-
MariaDB 資料行存放區
-
Amazon Aurora MySQL
注意
無論來源儲存引擎為何 (我的MEMORY、 等)ISAM AWS DMS , 預設都會將 My SQL相容的目標資料表建立為 InnoDB 資料表。
如果您需要 InnoDB 以外的儲存引擎中的資料表,您可以在 My SQL相容目標上手動建立資料表,並使用不執行任何動作選項來遷移資料表。如需詳細資訊,請參閱完全載入任務設定。
如需使用 My SQL相容資料庫做為 目標的其他詳細資訊 AWS DMS,請參閱下列章節。
主題
使用任何 My SQL相容資料庫做為 的目標 AWS Database Migration Service
在您開始使用 My SQL相容資料庫做為 的目標之前 AWS DMS,請確定您已完成下列先決條件:
-
提供 AWS DMS 具有 My SQL相容資料庫讀取/寫入權限的使用者帳戶給 。若要建立必要的權限,請執行下列命令。
CREATE USER '<user acct>'@'%' IDENTIFIED BY '<user password>'; GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT ON <schema>.* TO '<user acct>'@'%'; GRANT ALL PRIVILEGES ON awsdms_control.* TO '<user acct>'@'%';
-
在完全載入遷移階段,您必須停用您目標資料表的外部索引鍵。若要在完全載入期間停用 My SQL相容資料庫上的外部金鑰檢查,您可以將下列命令新增至目標端點 AWS DMS 主控台的額外連線屬性區段。
Initstmt=SET FOREIGN_KEY_CHECKS=0;
-
設定資料庫參數
local_infile = 1
以讓 AWS DMS 將資料載入目標資料庫。 -
如果您使用 My SQL特定預遷移評估,請授予下列權限。
grant select on mysql.user to <dms_user>; grant select on mysql.db to <dms_user>; grant select on mysql.tables_priv to <dms_user>; grant select on mysql.role_edges to <dms_user> #only for MySQL version 8.0.11 and higher
使用 My SQL相容資料庫做為 目標的限制 AWS Database Migration Service
使用 MySQL 資料庫做為目標時, AWS DMS 不支援下列項目:
-
資料定義語言 (DDL) 陳述式 TRUNCATE PARTITION、 DROP TABLE和 RENAME TABLE。
-
使用
ALTER TABLE
陳述式將資料欄新增至資料表的開頭或中間。table_name
ADD COLUMNcolumn_name
-
在完全載入任務中將資料載入至與 My SQL相容的目標時, AWS DMS 不會報告任務日誌中的限制條件所造成的錯誤,這可能會導致重複的金鑰錯誤或與記錄數量不相符。這是因為 MySQL 使用
LOAD DATA
命令處理本機資料的方式所致。在完全載入階段,請務必執行下列操作:停用限制
使用 AWS DMS 驗證來確保資料一致。
-
當您將資料欄的值更新為現有值時,與 My SQL相容的資料庫會傳回
0 rows affected
警告。雖然在技術上此行為不算錯誤,但這和其他資料庫引擎處理此情況的方法不同。例如,Oracle 會執行一個資料列的更新。對於與 My SQL相容的資料庫, 會在 awsdms_apply_exceptions 控制資料表中 AWS DMS 產生項目,並記錄下列警告。Some changes from the source database had no impact when applied to the target database. See awsdms_apply_exceptions table for details.
Aurora Serverless 可作為 Amazon Aurora 第 2 版的目標,與 MySQL 第 5.7 版相容。(選取 Aurora MySQL 2.07.1 版,以便能夠將 Aurora Serverless 與 MySQL 5.7 相容。) 如需 Aurora Serverless 的詳細資訊,請參閱《Amazon Aurora 使用者指南》中的使用 Aurora Serverless v2。
AWS DMS 不支援使用 Aurora 或 Amazon 的讀取器端點RDS,除非執行個體處於可寫入模式,也就是
read_only
和innodb_read_only
參數設定為0
或OFF
。如需使用 Amazon RDS和 Aurora 做為目標的詳細資訊,請參閱下列內容:
使用 My SQL相容資料庫做為 目標時的端點設定 AWS DMS
您可以使用端點設定來設定 My SQL相容目標資料庫,類似於使用額外連線屬性。當您使用 AWS DMS 主控台或使用 中的 create-endpoint
命令搭配 --my-sql-settings '{"
JSON 語法來建立目標端點時AWS CLI,您可以指定設定。EndpointSetting"
: "value"
, ...
}'
下表顯示您可以將 與 MySQL 搭配使用做為目標的端點設定。
名稱 | 描述 |
---|---|
|
指定來源資料表遷移的目標位置,單一資料庫或多個資料庫。如果您指定 預設值: 有效值:{ 範例: |
|
改善將資料載入 My SQL相容目標資料庫時的效能。指定要用來將資料載入 My SQL相容目標資料庫的執行緒數量。設定大量執行緒會對資料庫效能造成負面影響,因為每個執行緒都需要單獨的連線。 預設值:1 有效值:1–5 範例: |
|
指定 AWS DMS 連線到端點後立即執行的指令碼。 例如,您可以指定 My SQL相容目標應將收到的陳述式轉換為 latin1 字元集,這是資料庫的預設編譯字元集。此參數通常會改善從UTF8用戶端轉換時的效能。 範例: |
|
指定用於將資料傳輸到 My SQL相容資料庫之任何 .csv 檔案的大小上限 (KB)。 預設值:32,768 KB (32 MB) 有效值:1–1,048,576
|
您也可以使用額外的連線屬性來設定 My SQL相容目標資料庫。
下表顯示您可以搭配 MySQL 做為目標使用的額外連線屬性。
名稱 | 描述 |
---|---|
|
停用外部索引鍵檢查。 範例: |
|
指定目標 My SQL相容資料庫的時區。 預設值:UTC 有效值:目標 MySQL 資料庫中可用的時區名稱。 範例: |
或者,您可以使用 --my-sql-settings
命令的 AfterConnectScript
參數,來停用外部索引鍵檢查,並指定資料庫的時區。
My 的目標資料類型SQL
下表顯示使用 時支援的我的SQL資料庫目標資料類型, AWS DMS 以及來自 AWS DMS 資料類型的預設映射。
如需 AWS DMS 資料類型的詳細資訊,請參閱 AWS Database Migration Service 的資料類型。
AWS DMS 資料類型 |
我的SQL資料類型 |
---|---|
BOOLEAN |
BOOLEAN |
BYTES |
如果長度從 1 到 65,535,則使用 VARBINARY(長度)。 如果長度從 65,536 到 2,147,483,647,則使用 LONGLOB。 |
DATE |
DATE |
TIME |
TIME |
TIMESTAMP |
「如果擴展為 => 0 且 =< 6,則:DATETIME(擴展) 如果擴展 => 7 且 =< 9,則:VARCHAR(37)" |
INT1 |
TINYINT |
INT2 |
SMALLINT |
INT4 |
INTEGER |
INT8 |
BIGINT |
NUMERIC |
DECIMAL (p,s) |
REAL4 |
FLOAT |
REAL8 |
DOUBLE PRECISION |
STRING |
如果長度從 1 到 21,845,則使用 VARCHAR(長度)。 如果長度從 21,846 到 2,147,483,647,則使用 LONGTEXT。 |
UINT1 |
UNSIGNED TINYINT |
UINT2 |
UNSIGNED SMALLINT |
UINT4 |
UNSIGNED INTEGER |
UINT8 |
UNSIGNED BIGINT |
WSTRING |
如果長度從 1 到 32,767,則使用 VARCHAR(長度)。 如果長度介於 32,768 到 2,147,483,647 之間,請使用 LONGTEXT。 |
BLOB |
如果長度從 1 到 65,535,則使用 BLOB。 如果長度從 65,536 到 2,147,483,647,則使用 LONGBLOB。 如果長度為 0,則使用 LONGBLOB(完全LOB支援)。 |
NCLOB |
如果長度從 1 到 65,535,則使用 TEXT。 如果長度從 65,536 到 2,147,483,647,則使用 LONGTEXT 搭配 ucs2 for CHARACTER SET。 如果長度為 0,則針對 CHARACTER 使用 LONGTEXT(完整LOB支援) 搭配 ucs2SET。 |
CLOB |
如果長度從 1 到 65,535,則使用 TEXT。 如果長度從 65,536 到 2147483647,請使用 LONGTEXT。 如果長度為 0,則使用 LONGTEXT(完全LOB支援)。 |