本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 My SQL相容的資料庫作為 的來源 AWS DMS
您可以使用資料庫遷移 AWS 服務從任何SQL與 My 相容的資料庫遷移資料 (我的 、SQLMariaDB 或 Amazon Aurora My SQL)。
如需有關 AWS DMS 支援作為來源的 MySQL 版本的資訊,請參閱 的來源 AWS DMS。
您可以使用 SSL 加密 My SQL相容端點與複寫執行個體之間的連線。如需SSL搭配使用 My SQL相容的端點的詳細資訊,請參閱 使用 SSL 搭配使用 AWS Database Migration Service。
在下列各節中,「自我管理」一詞適用於在內部部署或 Amazon 上安裝的任何資料庫EC2。術語「AWS受管」適用於 Amazon RDS、Amazon Aurora 或 Amazon S3 上的任何資料庫。
如需使用 My SQL相容的資料庫和 的其他詳細資訊 AWS DMS,請參閱下列章節。
主題
使用 從 MySQL 遷移至 MySQL AWS DMS
對於異質遷移,當您從 MySQL 以外的資料庫引擎遷移到 MySQL 資料庫時, AWS DMS 幾乎總是使用的最佳遷移工具。但是,對於您要從我的SQL資料庫遷移至我的SQL資料庫的同質遷移,我們建議您使用同質資料遷移專案。同質資料遷移使用原生資料庫工具,以提供比 更好的資料遷移效能和準確性 AWS DMS。
使用任何 My SQL相容的資料庫作為 的來源 AWS DMS
在您開始使用我的SQL資料庫做為 的來源之前 AWS DMS,請確定您有下列先決條件。這些先決條件適用於自我管理或 AWS管理的來源。
您必須擁有具有複寫管理員角色 AWS DMS 的帳戶。此角色需要以下權限:
-
REPLICATION CLIENT – 只有CDC任務需要此權限。換句話說, full-load-only任務不需要此權限。
-
REPLICATION SLAVE – 只有CDC任務需要此權限。換句話說, full-load-only任務不需要此權限。
-
SUPER – 只有 5.6.6 之前的我的SQL版本才需要此權限。
AWS DMS 使用者也必須擁有指定用於複寫的來源資料表SELECT的權限。
如果您使用 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 DMS
您可以使用下列自我管理的 My SQL相容的資料庫作為 的來源 AWS DMS:
-
我的SQL Community Edition
-
我的SQL標準版本
-
我的SQL Enterprise Edition
-
我的SQL Cluster Carrier 等級版本
-
MariaDB Community Edition
-
MariaDB Enterprise Edition
-
MariaDB 資料行存放區
若要使用 CDC,請務必啟用二進位記錄。若要啟用二進位記錄,必須在我的 SQLmy.ini
(Windows) 或 my.cnf
(UNIX) 檔案中設定下列參數。
參數 |
Value |
---|---|
|
將此參數值設為 1 或更大。 |
|
將路徑設定到二進位日誌檔,例如 |
|
將此參數設為 |
|
將此參數值設為 1 或更大。為避免過度使用磁碟空間,建議您不要使用預設值 0。 |
|
針對 |
|
將此參數設為 |
|
|
如果您使用 MySQL 或 MariaDB 僅供讀取複本作為使用遷移現有資料的DMS遷移任務來源,並複寫進行中的變更模式,則可能會遺失資料。 DMS 不會在完全載入期間或在CDC下列情況下寫入交易:
在DMS任務開始之前,交易已提交至主要執行個體。
在DMS任務開始之前,交易尚未遞交給複本,因為主要執行個體與複本之間存在延遲。
主要執行個體與複本之間的延遲越長,資料遺失的可能性就越大。
如果您的來源使用 NDB(叢集式) 資料庫引擎,則必須設定下列參數,以便在使用該儲存引擎的資料表CDC上啟用 。在我的 SQLmy.ini
(Windows) 或 my.cnf
(UNIX) 檔案中新增這些變更。
參數 |
Value |
---|---|
|
將此參數設為 |
|
將此參數設為 |
|
將此參數設為 |
使用 AWS受管 My SQL相容的資料庫作為 的來源 AWS DMS
您可以使用下列 AWS受管 My SQL相容的資料庫作為 的來源 AWS DMS:
-
我的SQL Community Edition
-
MariaDB Community Edition
-
Amazon Aurora My SQL-Compatible Edition
使用 AWS受管 My SQL相容的資料庫作為 的來源時 AWS DMS,請確定您有下列 先決條件CDC:
-
若要為 RDS MySQL 啟用二進位日誌,以及為 MariaDB 啟用 RDS ,請在執行個體層級啟用自動備份。若要啟用 Aurora MySQL 叢集的二進位日誌,請變更參數群組
binlog_format
中的變數。如需設定自動備份的詳細資訊,請參閱 Amazon RDS使用者指南 中的使用自動備份。
如需為 Amazon RDS for MySQL 資料庫設定二進位記錄的詳細資訊,請參閱 Amazon RDS使用者指南 中的設定二進位記錄格式。
如需設定 Aurora MySQL 叢集的二進位記錄的詳細資訊,請參閱如何開啟 Amazon Aurora MySQL 叢集的二進位記錄?
-
如果您計劃使用 CDC,請開啟二進位記錄。如需為 Amazon RDS for MySQL 資料庫設定二進位記錄的詳細資訊,請參閱 Amazon RDS使用者指南 中的設定二進位記錄格式。
-
確保二進位日誌可供 使用 AWS DMS。由於 AWS受管 My SQL相容的資料庫會盡快清除二進位日誌,因此您應該增加日誌保持可用的時間長度。例如,執行下列命令將日誌保留期增加為 24 小時。
call mysql.rds_set_configuration('binlog retention hours', 24);
-
將
binlog_format
參數設為"ROW"
。注意
在 MySQL 或 MariaDB 上,
binlog_format
是動態參數,因此您不需要重新啟動,新值才會生效。不過,新值只會套用至新的工作階段。如果您為了複寫目的而將binlog_format
切換到ROW
,如果那些工作階段在您變更值之前已開始,則資料庫仍然可以使用MIXED
格式建立後續的二進位日誌。這可能會 AWS DMS 阻止 正確擷取來源資料庫中的所有變更。當您變更 MariaDB 或 MySQL 資料庫上的binlog_format
設定時,請務必重新啟動資料庫以關閉所有現有的工作階段,或重新啟動任何執行 DML(資料處理語言) 操作的應用程式。強制資料庫在變更binlog_format
參數 後重新啟動所有工作階段,ROW
可確保資料庫使用正確的格式寫入所有後續來源資料庫變更,以便 AWS DMS 能夠正確擷取這些變更。 -
將
binlog_row_image
參數設為"Full"
。 -
將 3.4.7 版或更舊
"NONE"
DMS版本的binlog_checksum
參數設定為 。如需在 Amazon RDS My 中設定參數的詳細資訊SQL,請參閱 Amazon RDS使用者指南 中的使用自動備份。 -
如果您使用 Amazon RDS MySQL 或 Amazon RDS MariaDB 僅供讀取複本作為來源,請在僅供讀取複本上啟用備份,並確保
log_slave_updates
參數設定為TRUE
。
使用 MySQL 資料庫作為 來源的限制 AWS DMS
使用 MySQL 資料庫作為來源時,請考慮下列事項:
-
Amazon RDS MySQL 5.5 或更低版本不支援變更資料擷取 (CDC)。對於 Amazon RDS My SQL,您必須使用 5.6、5.7 或 8.0 版來啟用 CDC。CDC 支援自我管理的 MySQL 5.5 來源。
-
對於 CDC、
ADD COLUMN
、CREATE TABLE
和DROP COLUMN
變更資料欄資料類型,renaming a column
支援 和 。但是,不支援DROP TABLE
、RENAME TABLE
和對其他屬性 (例如資料欄預設值、資料欄可為 Null 性、字元集等) 進行的更新。 -
對於來源上的分割資料表,當您將目標資料表準備模式設定為在目標 上捨棄資料表時, 會 AWS DMS 建立簡單的資料表,而我的SQL目標上沒有任何分割區。若要將分割資料表遷移至目標上的分割資料表,請在目標我的SQL資料庫上預先建立分割資料表。
-
不支援使用
ALTER TABLE
陳述式將資料欄新增至資料表的開頭 (FIRST) 或中間 (AFTER)。資料行一律新增到資料表結尾處。table_name
ADD COLUMNcolumn_name
-
CDC 當資料表名稱包含大寫和小寫字元,且來源引擎託管在具有不區分大小寫檔案名稱的作業系統上時,則不支援 。例如使用 HFS+ 的 Microsoft Windows 或 OS X。
-
您可以使用 Aurora My SQL-Compatible Edition Serverless v1 進行完整載入,但無法將其用於 CDC。這是因為您無法為我的 啟用先決條件SQL。如需詳細資訊,請參閱參數群組和 Aurora Serverless 第 1 版。
Aurora My SQL-Compatible Edition Serverless v2 支援 CDC。
-
資料欄上的 AUTO_INCREMENT 屬性不會遷移至目標資料庫資料欄。
-
當二進位日誌不儲存在標準區塊儲存時,不支援擷取變更。例如,當二進位日誌存放在 Amazon S3 上時, CDC無法運作。
-
AWS DMS 預設會使用 InnoDB 儲存引擎建立目標資料表。如果您需要使用 InnoDB 以外的儲存引擎,您必須手動建立資料表,並使用 do nothing (不執行任何動做) 模式遷移到它。
-
除非DMS遷移任務模式是遷移現有資料, AWS DMS 否則您無法將 Aurora MySQL 複本用作 的來源 — 僅限完整載入。
-
如果在完全載入期間停止 My SQL相容的來源,任務 AWS DMS 不會因錯誤而停止。任務成功結束,但目標與來源可能不同步。如果發生這種情況,請重新啟動任務或重新載入受影響的資料表。
-
不遷移建立在部分資料行值的索引。例如,不會在目標上建立索引 CREATE INDEX first_ten_chars ON 客戶 (name(10))。
-
在某些情況下,任務設定為不複寫 LOBs(任務設定中的「SupportLobs」為 false,或在任務主控台中選擇不包含LOB資料欄)。在這些情況下, AWS DMS 不會將任何 MEDIUMBLOB、LONGBLOB、 MEDIUMTEXT和 LONGTEXT資料欄遷移至目標。
BLOB、TEXT、 TINYBLOB和 TINYTEXT資料欄不受影響,且會遷移至目標。
-
MariaDB 來源和目標資料庫上不支援暫時時間資料表或系統版本控制的資料表。
-
如果在兩個 Amazon RDS Aurora MySQL 叢集之間遷移,RDSAurora MySQL 來源端點必須是讀取/寫入執行個體,而不是複本執行個體。
-
AWS DMS 目前不支援 MariaDB 的檢視遷移。
-
AWS DMS 不支援對我的 的分割資料表進行DDL變更SQL。若要略過 期間分割區DDL變更的資料表暫停CDC,請將
skipTableSuspensionForPartitionDdl
設定為true
。 -
AWS DMS 僅支援 3.5.0 版和更新版本的 XA 交易。舊版不支援 XA 交易。 AWS DMS 不支援 MariaDB 10.6 版中的 XA 交易。如需詳細資訊,請參閱下列 支援 XA 交易。
-
AWS DMS 即使來源資料包含它們, 也不會GTIDs用於複寫。
-
AWS DMS 不支援 Aurora MySQL 增強的二進位日誌。
-
AWS DMS 不支援二進位日誌交易壓縮。
-
AWS DMS 不會使用 InnoDB 儲存引擎傳播我的SQL資料庫的 ON DELETECASCADE和 ON UPDATECASCADE事件。對於這些事件,MySQL 不會產生 binlog 事件,以反映子資料表上的串聯操作。因此, AWS DMS 無法將對應的變更複寫至子資料表。如需詳細資訊,請參閱未遷移的索引、外部索引鍵或梯級更新或刪除。
-
AWS DMS 不會擷取對計算 (
VIRTUAL
和GENERATED ALWAYS
) 資料欄的變更。若要解決這個限制,您可以執行以下操作:在目標資料庫中預先建立目標資料表,並使用
DO_NOTHING
或TRUNCATE_BEFORE_LOAD
完全載入任務設定建立 AWS DMS 任務。新增轉換規則,以從任務範圍移除計算資料欄。如需轉型規則的詳細資訊,請參閱 轉換規則與動作。
支援 XA 交易
延伸架構 (XA) 交易是這種交易,可用來將來自多個交易資源的一系列操作分組為單一、可靠的全域交易。XA 交易使用兩階段遞交通訊協定。一般而言,存在開啟 XA 交易時擷取變更可能會導致資料遺失。如果資料庫不使用 XA 交易,您可以使用預設值 TRUE
忽略此許可和組態 IgnoreOpenXaTransactionsCheck
。若要從具有 XA 交易的來源開始複寫,請執行下列動作:
確保 AWS DMS 端點使用者具有下列許可:
grant XA_RECOVER_ADMIN on *.* to 'userName'@'%';
將端點設定
IgnoreOpenXaTransactionsCheck
設為false
。
注意
AWS DMS 不支援 MariaDB Source 資料庫 10.6 版上的 XA 交易。
使用 MySQL 作為 來源時的端點設定 AWS DMS
您可以使用端點設定來設定我的SQL來源資料庫,類似於使用額外的連線屬性。使用 AWS DMS 主控台或使用 中的 create-endpoint
命令搭配 --my-sql-settings '{"
JSON語法AWS CLI,在建立來源端點時指定設定。EndpointSetting"
: "value"
, ...
}'
下表顯示您可以搭配 MySQL 作為來源使用的端點設定。
名稱 | 描述 |
---|---|
EventsPollInterval |
指定資料庫閒置時,二進位日誌之新變更/事件的檢查頻率。 預設值:5 有效值:1-60 範例: 在此範例中,每五秒 AWS DMS 檢查二進位日誌中的變更。 |
ExecuteTimeout |
對於 3.4.7 版和更新 AWS DMS 版本, 會以秒為單位設定我的SQL來源端點的用戶端陳述式逾時。 預設值:60 範例: |
ServerTimezone |
指定來源我的SQL資料庫的時區。 範例: |
AfterConnectScript |
指定連線至端點後立即執行 AWS DMS 的指令碼。無論SQL陳述式成功還是失敗,遷移任務都會繼續執行。 有效值:一或多個有效SQL陳述式,由分號開頭。 範例: |
CleanSrcMetadataOnMismatch
|
發生不相符時,清除和重新建立複寫執行個體的資料表中繼資料資訊。例如,在資料表DDL上執行變更時,可能會導致複寫執行個體中快取的資料表資訊不同。布林值。 預設值: 範例: |
skipTableSuspensionForPartitionDdl
|
AWS DMS 不支援對我的 的分割資料表進行DDL變更SQL。對於 3.4.6 版和更新 AWS DMS 版本,請將此設定為 預設值: 範例: |
IgnoreOpenXaTransactionsCheck
|
對於 3.5.0 版和更新 AWS DMS 版本,指定任務是否應該在啟動時忽略開啟的 XA 交易。如果來源具有 XA 交易,請將此設為 預設值: 範例: |
My 的來源資料類型SQL
下表顯示使用 時支援的我的SQL資料庫來源資料類型, AWS DMS 以及來自 AWS DMS 資料類型的預設映射。
如需如何檢視從目標映射的資料類型資訊,請參閱您要使用的目標端點一節。
如需 AWS DMS 資料類型的詳細資訊,請參閱 AWS Database Migration Service 的資料類型。
我的SQL資料類型 |
AWS DMS 資料類型 |
---|---|
INT |
INT4 |
BIGINT |
INT8 |
MEDIUMINT |
INT4 |
TINYINT |
INT1 |
SMALLINT |
INT2 |
UNSIGNED TINYINT |
UINT1 |
UNSIGNED SMALLINT |
UINT2 |
UNSIGNED MEDIUMINT |
UINT4 |
UNSIGNED INT |
UINT4 |
UNSIGNED BIGINT |
UINT8 |
DECIMAL(10) |
NUMERIC (10,0) |
BINARY |
BYTES(1) |
BIT |
BOOLEAN |
BIT(64) |
BYTES(8) |
BLOB |
BYTES(65535) |
LONGBLOB |
BLOB |
MEDIUMBLOB |
BLOB |
TINYBLOB |
BYTES(255) |
DATE |
DATE |
DATETIME |
DATETIME DATETIME 沒有括號值的複寫不會有毫秒。DATETIME 括號值為 1 到 5 (例如 複寫DATETIME資料欄時,時間在目標上保持不變。它不會轉換為 UTC。 |
TIME |
STRING |
TIMESTAMP |
DATETIME 複寫TIMESTAMP資料欄時,時間會在目標UTC上轉換為 。 |
YEAR |
INT2 |
DOUBLE |
REAL8 |
FLOAT |
REAL(DOUBLE) 如果FLOAT值不在下列範圍內,請使用轉換來映射FLOAT到 STRING。如需轉型的詳細資訊,請參閱 轉換規則與動作。 支援FLOAT的範圍為 -1.79E+308 至 -2.23E-308、0 和 2.23E-308 至 1.79E+308 |
VARCHAR (45) |
WSTRING (45) |
VARCHAR (2000 年) |
WSTRING (2000 年) |
VARCHAR (4000) |
WSTRING (4000) |
VARBINARY (4000) |
BYTES (4000) |
VARBINARY (2000 年) |
BYTES (2000 年) |
CHAR |
WSTRING |
TEXT |
WSTRING |
LONGTEXT |
NCLOB |
MEDIUMTEXT |
NCLOB |
TINYTEXT |
WSTRING(255) |
GEOMETRY |
BLOB |
POINT |
BLOB |
LINESTRING |
BLOB |
POLYGON |
BLOB |
MULTIPOINT |
BLOB |
MULTILINESTRING |
BLOB |
MULTIPOLYGON |
BLOB |
GEOMETRYCOLLECTION |
BLOB |
ENUM |
WSTRING ( 在此, |
SET |
WSTRING ( 在此, |
JSON |
CLOB |
注意
在某些情況下,您可以指定具有 "zero" 值的 DATETIME和 TIMESTAMP 資料類型 (即 0000-00-00)。如果是,請確定複寫任務中的目標資料庫支援 DATETIME和 TIMESTAMP 資料類型的「零」值。否則,這些值在目標上會記錄為 null。