本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将与 MySQL 兼容的数据库作为 Amazon Database Migration Service 的目标
您可以使用 Amazon DMS,将数据从 Amazon DMS 支持的任一源数据引擎迁移到与 MySQL 兼容的任何数据库。如果您要迁移到本地 MySQL 兼容数据库,则Amazon DMS要求您的源引擎位于生态系统中。Amazon该引擎可以位于Amazon托管服务上,例如亚马逊 RDS、亚马逊 Aurora 或 Amazon S3。或者引擎可以位于 Amazon EC2 上的自管数据库上。
您可以使用 SSL 来加密 MySQL 兼容终端节点与复制实例之间的连接。有关将 SSL 用于 MySQL 兼容终端节点的更多信息,请参阅将 SSL 与 Amazon Database Migration Service 配合使用。
有关Amazon DMS支持作为目标的 MySQL 版本的信息,请参阅Amazon DMS 的目标。
您可以使用以下与 MySQL 兼容的数据库作为 Amazon DMS 的目标:
-
MySQL Community Edition
-
MySQL Standard Edition
-
MySQL Enterprise Edition
-
MySQL Cluster Carrier Grade Edition
-
MariaDB Community Edition
-
MariaDB Enterprise Edition
-
MariaDB Column Store
-
Amazon Aurora MySQL
注意
无论使用什么源存储引擎(MyISAM、MEMORY 等),默认情况下,Amazon DMS 都会创建与 MySQL 兼容的目标表作为 InnoDB 表。
如果您需要 InnoDB 之外的存储引擎中的表,则可以在与 MySQL 兼容的目标上手动创建表,然后使用 Do nothing (不执行任何操作) 选项来迁移表。有关更多信息,请参阅完全加载任务设置:
有关将与 MySQL 兼容的数据库作为 Amazon DMS 的目标的更多详细信息,请参阅以下章节。
主题
使用任何与 MySQL 兼容的数据库作为 Amazon Database Migration Service 的目标
在使用与 MySQL 兼容的数据库作为 Amazon DMS 的目标之前,请确保完成以下先决条件:
-
为 Amazon DMS 提供一个用户账户,该账户具有对与 MySQL 兼容的数据库的读取/写入权限。要创建所需的权限,请运行以下命令。
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>'@'%';
-
在完全加载迁移阶段,您必须禁用目标表上的外键。要在满载期间禁用对 MySQL 兼容数据库的外键检查,可以将以下命令添加到目标终端节点Amazon DMS控制台的 “额外连接属性” 部分。
Initstmt=SET FOREIGN_KEY_CHECKS=0;
-
设置数据库参数
local_infile = 1
以启用 Amazon DMS,以便将数据加载到目标数据库。
将与 MySQL 兼容的数据库作为 Amazon Database Migration Service 目标的限制
使用 MySQL 数据库作为目标时,Amazon DMS 不支持以下内容:
-
数据定义语言 (DDL) 语句 TRUNCATE PARTITION、DROP TABLE 和 RENAME TABLE。
-
使用
ALTER TABLE
语句将列添加到表的开头或中间。table_name
ADD COLUMNcolumn_name
-
在满负荷任务中将数据加载到与 MySQL 兼容的目标时,Amazon DMS不会在任务日志中报告重复的密钥错误。这是因为 MySQL 处理 CSV 加载数据的方式。
-
当您将列值更新为其现有值时,与 MySQL 兼容的数据库会返回
0 rows affected
警告。尽管此行为在技术上没有错误,但它与其他数据库引擎应对这种情况的方式不同。例如,Oracle 执行一个行的更新。对于与 MySQL 兼容的数据库,Amazon DMS 在 awsdms_apply_exceptions 控制表中生成一个条目,并记录以下警告。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 MySQL 版本 1 的目标,具备 MySQL 5.6 兼容性。Aurora Serverless 版本包括直至 Amazon Aurora MySQL 版本 2 的目标,具备 MySQL 5.7 兼容性。(选择 MAurora SQL 版本 2.07.1,即可使用具Aurora MySQL 5.7 兼容性。) 有关 Aurora Serverless 的更多信息,请参阅 A mazon Aurora Amazon Aurora a Serverless 。
Amazon DMS不支持对 Aurora 或 Amazon RDS 使用读取器终端节点,除非实例处于可写模式,即
read_only
和innodb_read_only
参数设置为0
或OFF
。有关 Amazon RDS 和 Aurora RDS 和 Aurora RDS 和 Aurora Rds
使用与 MySQL 兼容的数据库作为目标时的端点设置 Amazon DMS
您可以使用终端节点设置来配置与 MySQL 兼容的目标数据库,类似于使用额外的连接属性。在使用Amazon DMS控制台创建目标终端节点时指定设置,或者使用中的create-endpoint
Amazon CLI命令使用 --my-sql-settings '{"
JSON 语法。EndpointSetting"
:
"value"
, ...
}'
下表显示了可以将 MySQL 用作目标的端点设置。
名称 | 描述 |
---|---|
|
指定将目标上的源表迁移到的位置 (单个数据库或多个数据库)。如果指定 默认值: 有效值:{ 示例: |
|
改进了将数据加载到与 MySQL 兼容的目标数据库时的性能。指定用于将数据加载到与 MySQL 兼容的目标数据库中的线程的数目。设置大量线程可能会对数据库性能产生不利影响,因为每个线程均需要一个单独的连接。 默认值:1 有效值:1—5 示例: |
|
指定脚本在 Amazon DMS 连接到终端节点后立即运行。 例如,您可以指定与 MySQL 兼容的目标应将收到的语句转换为 latin1 字符集,这是数据库的默认编译字符集。此参数通常可在从 UTF8 客户端转换时提高性能。 示例: |
|
指定用于将数据传输到与 MySQL 兼容的数据库的任何 .csv 文件的最大大小(以 KB 为单位)。 默认值:32768 KB (32 MB) 值:1—104.84.84.84.84.84.84.8
|
|
出现不匹配情况时在复制实例上清除并重新创建表元数据信息。例如,对表运行更改 DDL 语句可能会产生有关在复制实例中缓存的表的不同信息。布尔值。 默认值: 示例: |
您还可以使用额外的连接属性来配置与 MySQL 兼容的目标数据库。
下表显示了可以将 MySQL 用作目标的额外连接属性。
名称 | 描述 |
---|---|
|
禁用外键检查。 示例: |
|
指定与 MySQL 兼容的目标数据库的时区。 默认值:UTC 有效值:目标 MySQL 数据库中可用的时区名称。 示例: |
或者,您可以使用--my-sql-settings
命令的AfterConnectScript
参数禁用外键检查并为数据库指定时区。
MySQL 的目标数据类型
下表列出了使用 Amazon DMS 时支持的 MySQL 数据库目标数据类型以及来自 Amazon DMS 数据类型的默认映射。
有关 Amazon DMS 数据类型的其他信息,请参阅Database MigratiAmazon on Service 数据类型。
Amazon DMS 数据类型 |
MySQL 数据类型 |
---|---|
BOOLEAN |
BOOLEAN |
BYTES |
如果长度介于 1 和 65535 之间,请使用 VARBINARY (length)。 如果长度介于 65536 和 2147483647 之间,请使用 LONGLOB。 |
DATE |
DATE |
TIME |
TIME |
TIMESTAMP |
“如果小数位数 => 0 且 <= 6,请使用 DATETIME (Scale) 如果小数位数 => 7 且 <= 9,请使用 VARCHAR (37)” |
INT1 |
TINYINT |
INT2 |
SMALLINT |
INT4 |
INTEGER |
INT8 |
BIGINT |
NUMERIC |
DECIMAL (p,s) |
REAL4 |
FLOAT |
REAL8 |
DOUBLE PRECISION |
STRING |
如果长度介于 1 和 21845 之间,请使用 VARCHAR (length)。 如果长度介于 21846 和 2147483647 之间,请使用 LONGTEXT。 |
UINT1 |
UNSIGNED TINYINT |
UINT2 |
UNSIGNED SMALLINT |
UINT4 |
UNSIGNED INTEGER |
UINT8 |
UNSIGNED BIGINT |
WSTRING |
如果长度介于 1 和 32767 之间,请使用 VARCHAR (length)。 如果长度介于 32768 和 2147483647 之间,请使用 LONGTEXT。 |
BLOB |
如果长度介于 1 和 65535 之间,请使用 BLOB。 如果长度介于 65536 和 2147483647 之间,请使用 LONGBLOB。 如果长度为 0,请使用 LONGBLOB (完全 LOB 支持)。 |
NCLOB |
如果长度介于 1 和 65535 之间,请使用 TEXT。 如果长度介于 65536 和 2147483647 之间,请将 LONGTEXT 与 ucs2 一起用于 CHARACTER SET。 如果长度为 0,请将 LONGTEXT (完全 LOB 支持) 与 ucs2 一起用于 CHARACTER SET。 |
CLOB |
如果长度介于 1 和 65535 之间,请使用 TEXT。 如果长度介于 65,536 和 2147483647 之间,请使用 LONGTEXT。 如果长度为 0,请使用 LONGTEXT (完全 LOB 支持)。 |