数据传输服务DTS(Data Transmission Service)支持将RDS MySQL迁移至云原生数据仓库AnalyticDB PostgreSQL版。
支持的源数据库
MySQL迁移至云原生数据仓库AnalyticDB PostgreSQL版,支持以下类型的MySQL源数据库。- RDS MySQL实例
- MySQL自建数据库:
- 有公网IP的自建数据库
- ECS上的自建数据库
- 通过数据库网关接入的自建数据库
- 通过云企业网CEN接入的自建数据库
- 通过专线、VPN网关或智能网关接入的自建数据库
前提条件
- 已创建源RDS MySQL实例,创建方式,请参见快速创建RDS MySQL实例。
- 已创建目标AnalyticDB PostgreSQL实例,如未创建请参见创建实例。
- 目标AnalyticDB PostgreSQL实例的存储空间须大于源RDS MySQL实例占用的存储空间。
注意事项
- 在库表结构迁移过程中,DTS会将源数据库中的外键迁移到目标数据库。
- 在全量迁移和增量迁移过程中,DTS会以Session级别暂时禁用约束检查以及外键级联操作。若任务运行时源库存在级联更新、删除操作,可能会导致数据不一致。
类型 | 说明 |
---|---|
源库限制 |
|
其他限制 |
|
特殊情况 | 当源库为自建MySQL时
|
费用说明
迁移类型 | 链路配置费用 | 公网流量费用 |
---|---|---|
结构迁移和全量数据迁移 | 不收费。 | 通过公网将数据迁移出阿里云时将收费,详情请参见计费概述。 |
增量数据迁移 | 收费,详情请参见计费概述。 |
迁移类型说明
- 库表结构迁移
DTS将源库中迁移对象的结构定义迁移到目标库。
说明 此场景属于异构数据库间的数据迁移,DTS在执行结构迁移时数据类型无法完全对应,请谨慎评估数据类型的映射关系对业务的影响,详情请参见异构数据库间的数据类型映射关系。 - 全量迁移
DTS将源库中迁移对象的存量数据,全部迁移到目标库中。
- 增量迁移
DTS在全量迁移的基础上,将源库的增量更新数据同步到目标库中。通过增量数据迁移可以实现在自建应用不停服的情况下,平滑地完成数据迁移。
支持增量迁移的SQL操作
操作类型 | SQL操作语句 |
---|---|
DML | INSERT、UPDATE、DELETE |
DDL | CREATE TABLE、DROP TABLE、RENAME TABLE、TRUNCATE TABLE、ADD COLUMN、DROP COLUMN |
- 在迁移至目标库AnalyticDB PostgreSQL时,源表(例如customer)因字段类型变更而导致迁移任务失败。
- 在AnalyticDB PostgreSQL中创建一个新表(customer_new),表结构与customer表保持一致。
- 通过INSERT INTO SELECT命令,将customer表的数据复制并插入到新创建的customer_new表中,确保两张表的数据保持一致。
- 重命名或删除迁移失败的表customer,然后将customer_new表的名称修改为customer。
- 在DTS控制台,重新启动数据迁移任务。
数据库账号的权限要求
数据库 | 库表结构迁移 | 全量迁移 | 增量迁移 |
---|---|---|---|
RDS MySQL | SELECT权限 | SELECT权限 | REPLICATION SLAVE、REPLICATION CLIENT及待迁移对象的SELECT权限,由DTS自动执行授权。 |
AnalyticDB PostgreSQL | 读写权限 |
操作步骤
- 进入迁移任务的列表页面。
- 登录DMS数据管理服务。
- 在顶部菜单栏中,单击集成与开发(DTS)。
- 在左侧导航栏,选择 。
说明 您也可以登录新版DTS迁移任务的列表页面。 - 在迁移任务右侧,选择迁移实例所属地域。说明 新版DTS迁移任务列表页面,需要在页面左上角选择迁移实例所属地域。
- 单击创建任务,配置源库及目标库信息。
类别 配置 说明 无 任务名称 DTS会自动生成一个任务名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。
源库信息 数据库类型 选择MySQL。 接入方式 选择为云实例。 实例地区 选择源RDS MySQL实例所属地域。 是否跨阿里云账号 本案例为同一阿里云账号间迁移,选择不跨账号。 RDS实例ID 选择源RDS MySQL实例ID。 数据库账号 填入源RDS MySQL实例的数据库账号,权限要求,请参见数据库账号的权限要求。 数据库密码 填入该数据库账号对应的密码。
连接方式 根据需求选择非加密连接或SSL安全连接。如果设置为SSL安全连接,您需要提前开启RDS MySQL实例的SSL加密功能,详情请参见设置SSL加密。
目标库信息 数据库类型 选择AnalyticDB PostgreSQL。 接入方式 选择云实例。 实例地区 选择目标AnalyticDB PostgreSQL实例所属地域。 实例ID 选择目标AnalyticDB PostgreSQL实例ID。 数据库名称 填入目标AnalyticDB PostgreSQL实例中迁移对象所属数据库的名称。 数据库账号 填入目标AnalyticDB PostgreSQL实例的初始账号。 说明 您也可以填入具备RDS_SUPERUSER权限的账号,创建方法请参见用户权限管理。数据库密码 填入该数据库账号对应的密码。
- 配置完成后,单击页面下方的测试连接以进行下一步。如果源或目标数据库是阿里云数据库实例(例如RDS MySQL、云数据库MongoDB版等),DTS会自动将对应地区DTS服务的IP地址添加到阿里云数据库实例的白名单;如果源或目标数据库是ECS上的自建数据库,DTS会自动将对应地区DTS服务的IP地址添到ECS的安全规则中,您还需确保自建数据库没有限制ECS的访问;如果源或目标数据库是IDC自建数据库或其他云数据库,则需要您手动添加对应地区DTS服务的IP地址,以允许来自DTS服务器的访问。DTS服务的IP地址,请参见DTS服务器的IP地址段。警告 DTS自动添加或您手动添加DTS服务的公网IP地址段可能会存在安全风险,一旦使用本产品代表您已理解和确认其中可能存在的安全风险,并且需要您做好基本的安全防护,包括但不限于加强账号密码强度防范、限制各网段开放的端口号、内部各API使用鉴权方式通信、定期检查并限制不需要的网段,或者使用通过内网(专线/VPN网关/智能网关)的方式接入。
- 配置任务对象及高级配置。
- 基础配置
配置 说明 迁移类型 - 如果只需要进行全量迁移,请同时选中库表结构迁移和全量迁移。
- 如果需要进行不停机迁移,请同时选中库表结构迁移、全量迁移和增量迁移。
说明 如果未选择增量迁移,为保障数据一致性,数据迁移期间请勿在源实例中写入新的数据。目标已存在表的处理模式 预检查并报错拦截:检查目标数据库中是否有同名的表。如果目标数据库中没有同名的表,则通过该检查项目;如果目标数据库中有同名的表,则在预检查阶段提示错误,数据迁移任务不会被启动。
说明 如果目标库中同名的表不方便删除或重命名,您可以更改该表在目标库中的名称,请参见库表列名映射 。清空目标表数据:在预检查阶段跳过目标表是否为空的检查项目。全量初始化之前将目标表的数据清空。
- 忽略报错并继续执行:跳过目标数据库中是否有同名表的检查项。 警告 选择为忽略报错并继续执行,可能导致数据不一致,给业务带来风险,例如:
- 表结构一致的情况下,在目标库遇到与源库主键的值相同的记录,则会保留目标库中的该条记录,即源库中的该条记录不会迁移至目标库中。
- 表结构不一致的情况下,可能导致只能迁移部分列的数据或迁移失败。
实例级别选择所需同步的DDL和DML 按实例级别选择增量迁移的SQL操作,支持的操作,请参见支持增量迁移的SQL操作。 说明 如需按库或表级别选择增量迁移的SQL操作,请在已选择对象中右击同步对象,在弹跳框中勾选所需同步的SQL操作。同步对象 在源库对象框中单击待迁移的对象,然后单击
将其移动到已选择对象框。
说明 迁移对象选择的粒度为schema、表、列。若选择的迁移对象为表或列,其他对象(如视图、触发器、存储过程)不会被迁移至目标库。映射名称更改 过滤待迁移数据 支持设置条件过滤数据,详情请参见通过SQL条件过滤任务数据。
增量迁移的SQL操作 选择增量迁移SQL操作,请右击已选择对象中的迁移对象,在弹跳框中选择所需增量迁移的SQL操作。支持的操作,请参见支持增量迁移的SQL操作。 - 高级配置
配置 说明 设置告警 是否设置告警,当迁移失败或延迟超过阈值后,将通知告警联系人。- 不设置:不设置告警。
- 设置:设置告警,您还需要设置告警阈值和告警联系人。更多信息,请参见在配置任务过程中配置监控报警。
复制源表Online DDL工具执行过程的临时表到目标库 若源库使用数据管理DMS(Data Management)或gh-ost执行Online DDL变更,您可以选择是否迁移Online DDL变更产生的临时表数据。重要 DTS任务暂不支持使用pt-online-schema-change等类似工具执行Online DDL变更,否则会导致DTS任务失败。- 是:迁移Online DDL变更产生的临时表数据。说明 Online DDL变更产生的临时表数据过大,可能会导致迁移任务延迟。
- 否,适配DMS Online DDL:不迁移Online DDL变更产生的临时表数据,只迁移源库使用数据管理DMS(Data Management)执行的原始DDL数据。说明 该方案会导致目标库锁表。
- 否,适配gh-ost:不迁移Online DDL变更产生的临时表数据,只迁移源库使用gh-ost执行的原始DDL数据,同时您可以使用默认的或者自行配置gh-ost影子表和无用表的正则表达式。说明 该方案会导致目标库锁表。
源、目标库无法连接重试时间 在迁移任务启动后,若源库或目标库连接失败则DTS会报错,并会立即进行持续的重试连接,默认重试720分钟,您也可以在取值范围(10~1440分钟)内自定义重试时间,建议设置30分钟以上。如果DTS在设置的时间内重新连接上源、目标库,迁移任务将自动恢复。否则,迁移任务将失败。说明- 针对同源或者同目标的多个DTS实例,网络重试时间以后创建任务的设置为准。
- 由于连接重试期间,DTS将收取任务运行费用,建议您根据业务需要自定义重试时间,或者在源和目标库实例释放后尽快释放DTS实例。
为目标对象添加引号 选择是否需要为目标对象添加引号。 - 选择是:若源库存在以下情况,DTS会在库表结构和增量数据迁移阶段,自动为符合要求的schema、表或列名添加半角单引号(')或半角双引号(")。
- 源库所属的业务环境对大小写敏感且大小写混用。
- 源表名不是以字母开头,且包含字母、数字或特殊字符以外的字符。说明 特殊字符仅支持下划线(_),井号(#)和美元符号($)。
- 待迁移的Schema、表或列名称是目标库的关键字、保留字或非法字符。
- 选择否:DTS不会为目标对象添加引号。
配置ETL功能 选择是否配置ETL功能。若您配置ETL功能选择是,需在输入框中按照DSL语法填写数据处理语句,详情请参见在DTS迁移或同步任务中配置ETL。
- 基础配置
- 可选:配置库表字段。设置待迁移的表在目标库AnalyticDB PostgreSQL中的主键列和分布键信息,详情请参见CREATE TABLE。说明 仅配置任务对象时,勾选了库表结构迁移选项才会有该步骤。
- 上述配置完成后,单击页面下方的下一步保存任务并预检查。
您可以将鼠标光标移动至下一步保存任务并预检查按钮上,然后单击气泡中的预览OpenAPI调用,查看该实例使用API接口配置时的参数信息。
说明- 在迁移任务正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动迁移任务。
- 如果预检查失败,请单击失败检查项后的查看详情,并根据提示修复后重新进行预检查。
- 如果预检查产生警告:
- 对于不可以忽略的检查项,请单击失败检查项后的查看详情,并根据提示修复后重新进行预检查。
- 对于可以忽略无需修复的检查项,您可以依次单击点击确认告警详情、确认屏蔽、确定、重新进行预检查,跳过告警检查项重新进行预检查。如果选择屏蔽告警检查项,可能会导致数据不一致等问题,给业务带来风险。
- 预检查通过率显示为100%时,单击下一步购买。
- 在购买页面,选择数据迁移实例的链路规格,详细说明请参见下表。
类别 参数 说明 信息配置 链路规格 DTS为您提供了不同性能的迁移规格,迁移链路规格的不同会影响迁移速率,您可以根据业务场景进行选择,详情请参见数据迁移链路规格说明。
- 配置完成后,阅读并选中《数据传输(按量付费)服务条款》。
- 单击购买并启动,迁移任务正式开始,您可在数据迁移界面查看具体进度。