AI数据准备功能支持将MySQL数据库的数据传输到AnalyticDB PostgreSQL版实例。本文以源库为RDS MySQL实例为例,为您介绍操作步骤。
此功能正在邀测中,仅部分用户可以使用。您可以通过功能交流钉钉群(群号:79690034672)或DTS数据准备功能试用申请表单,获取体验资格。
前提条件
- 已创建存储空间大于源RDS MySQL实例已占用存储空间的目标AnalyticDB PostgreSQL版实例。 说明- 引擎版本需选择7.0 标准版、节点规格(segment)需选择4C16G及以上规格、AI节点开关需选择开启、AI节点数量至少为1个。 
- 创建方法,请参见创建实例。 
 
- 目标AnalyticDB PostgreSQL版实例已开启向量检索引擎优化。 
- 已在目标AnalyticDB PostgreSQL版实例中创建用于接收数据的数据库、Schema、具有主键的表。更多信息,请参见SQL语法和数据类型映射关系。 说明- 建议目标AnalyticDB PostgreSQL版实例中的表名和列名与源库中的一致。 
注意事项
源库限制
- 带宽要求:源库所属的服务器需具备足够的出口带宽(大于等于100 Mb/s),否则将影响数据传输的速率。 
- Binlog日志要求: - RDS MySQL实例默认已开启Binlog,您需确保 - binlog_row_image的值为- full,否则预检查阶段提示报错,且无法成功启动数据准备任务。参数设置方法,请参见设置实例参数。重要- 若源实例为自建MySQL,则需开启Binlog,并将 - binlog_format设置为- row,且将- binlog_row_image设置为- full。
- 若源实例自建MySQL是双主集群(两者互为主从),为保障DTS能获取全部的Binlog日志,则您需开启参数 - log_slave_updates。具体操作请参见为自建MySQL创建账号并设置binlog。
 
- RDS MySQL实例的本地Binlog日志需保留3天及以上(建议保留7天),自建MySQL数据库的本地Binlog日志需保留7天及以上。否则DTS可能会因无法获取Binlog而导致数据准备任务失败,极端情况下甚至可能会导致数据不一致或数据丢失。由于您所设置的Binlog日志保存时间低于DTS要求的时间而导致的问题,不在DTS的SLA保障范围内。 说明- RDS MySQL实例的本地Binlog日志保留时长的设置方法,请参见自动删除本地日志。 
 
- 传输对象限制: - 不记录Binlog的变更操作所产生的数据(例如通过物理备份功能恢复、级联操作等产生的数据),不会被传输到目标库。 
- 不支持VARBIT、GEOMETRY、ARRAY、UUID、TSQUERY、TSVECTOR、TXID_SNAPSHOT、POINT类型的数据。 
- 暂不支持传输前缀索引。 
- 若待传输的对象为表级别,且需进行编辑(如表列名映射),则单个数据准备任务仅支持至多1000张表。当超出表数量限制时,建议您拆分为多个数据准备任务,或者配置整库的数据准备任务。 
- 若源库待传输的数据中存在日期类型的数据 - 0000-00-00 00:00:00,则可能会导致数据准备任务失败。说明- DTS将该日期数据传输到目标库时会转换为 - null。您可以临时将源库数据修改为- 0001-01-01 00:00:00,或者将目标库对应字段设置为可空。
- 若源库为8.0.23及更高版本的MySQL数据库,且待传输的数据中包含不可见的隐藏列,则可能会因为无法获取该列的数据而导致数据丢失。 说明- 您可以使用 - ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;命令,将该隐藏列设置为可见。更多信息,请参见Invisible Columns。
- 无主键的表会自动生成不可见的隐藏主键,您也需要将该隐藏主键设置为可见。更多信息,请参见Generated Invisible Primary Keys。 
 
 
- 源库的操作限制: - 若源库为自建MySQL且进行了主备切换,将会导致数据准备任务失败。 
- 在数据准备任务运行期间,请勿执行修改主键和添加注释的DDL操作(如 - ALTER TABLE table_name COMMENT='表的注释';),否则可能会导致该DDL执行失败。
 
其他限制
- 目标表暂不支持AO表。 
- 若待传输的表存在主键,则目标表的主键列需与源表一致;若待传输的表不存在主键,则目标表的主键列需与分布键保持一致。 
- 目标表的唯一键(含主键列)必须包含分布键的所有列。 
- 在创建数据准备任务前需评估源库和目标库的性能,同时建议在业务低峰期启动数据准备任务。 
- DTS会在源库定时执行CREATE DATABASE IF NOT EXISTS `test`命令以推进Binlog位点。 
- 若目标表的结构与源表不一致,则可能会导致数据丢失或任务失败。 
- DTS会尝试恢复七天之内运行失败的数据准备任务。因此在业务切换至目标实例前,请务必结束或释放该任务,或者用 - revoke命令回收DTS访问目标实例账号的写权限。避免该任务被自动恢复后,源端数据覆盖目标实例的数据。
- 由于DTS增量任务的延迟时间是根据写入到目标库最后一条数据的时间戳和当前时间戳对比得出,源库长时间未执行更新操作可能导致延迟信息不准确。如果数据准备任务显示的延迟时间过大,您可以在源库执行一个更新操作来更新延迟信息。 
- 若实例运行失败,DTS技术支持人员将在8小时内尝试恢复该实例。在恢复失败实例的过程中,可能会对该实例进行重启、调整参数等操作。 说明- 在调整参数时,仅会修改DTS实例的参数,不会对数据库中的参数进行修改。可能修改的参数,包括但不限于修改实例参数中的参数。 
费用说明
详情请参见AI数据准备计费方式。
支持的SQL操作
| 操作类型 | SQL操作语句 | 
| DML | INSERT、UPDATE、DELETE | 
数据库账号的权限要求
| 数据库 | 所需权限 | 账号创建及授权方法 | 
| 源RDS MySQL实例 | 待传输数据的读写权限。 | |
| 目标AnalyticDB PostgreSQL版实例 | 目标库的读写权限。 | 说明  您可以使用初始账号或具备RDS_SUPERUSER权限的账号。 | 
若您使用的源库账号不是通过RDS MySQL控制台创建且授权,您需确保该账号具备REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW和SELECT权限。
操作步骤
- 进入目标地域的数据准备任务列表页面。 - 登录数据传输服务DTS控制台。 
- 在左侧导航栏,单击数据准备。 
- 在页面左上角,选择数据准备实例所属地域。 
- 可选:单击数据准备任务页签。 
 
- 单击创建任务,进入任务配置页面。 
- 配置源库及目标库信息。 - 类别 - 配置 - 说明 - 无 - 任务名称 - DTS会自动生成一个任务名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。 - 源库信息 - 选择已有连接信息 - 若您需要使用已录入系统(新建或保存)的数据库实例,请在下拉列表中选择所需的数据库实例,下方的数据库信息将自动进行配置。 
- 若您未将数据库实例录入到系统,或无需使用已录入系统的数据库实例,则需要手动配置下方的数据库信息。 
 - 数据库类型 - 选择MySQL。 - 接入方式 - 选择云实例。 - 实例地区 - 选择源RDS MySQL实例所属地域。 - 是否跨阿里云账号 - 本示例使用当前阿里云账号下的数据库实例,需选择不跨账号。 - RDS实例ID - 选择源RDS MySQL实例ID。 - 数据库账号 - 填入源RDS MySQL实例的数据库账号。权限要求,请参见数据库账号的权限要求。 - 数据库密码 - 填入该数据库账号对应的密码。 - 连接方式 - 根据数据库实际情况选择非加密连接或SSL安全连接。 说明- RDS MySQL实例的SSL加密功能,请参见使用云端证书快速开启SSL链路加密。 - 目标库信息 - 选择已有连接信息 - 若您需要使用已录入系统(新建或保存)的数据库实例,请在下拉列表中选择所需的数据库实例,下方的数据库信息将自动进行配置。 
- 若您未将数据库实例录入到系统,或无需使用已录入系统的数据库实例,则需要手动配置下方的数据库信息。 
 - 数据库类型 - 选择AnalyticDB PostgreSQL。 - 接入方式 - 选择云实例。 - 实例地区 - 选择目标AnalyticDB PostgreSQL版实例所属的地域。 - 实例ID - 选择目标AnalyticDB PostgreSQL版实例的名ID。 - 数据库名称 - 填入目标AnalyticDB PostgreSQL版实例中用于接收数据的数据库名称。 - 数据库账号 - 填入目标AnalyticDB PostgreSQL版实例的数据库账号。权限要求,请参见数据库账号的权限要求。 - 数据库密码 - 填入该数据库账号对应的密码。 
- 配置完成后,在页面下方单击测试连接以进行下一步。 说明- 请确保DTS服务的IP地址段能够被自动或手动添加至源库和目标库的安全设置中,以允许DTS服务器的访问。更多信息,请参见添加DTS服务器的IP地址段。 
- 若源库或目标库为自建数据库(接入方式不是云实例),则还需要在弹出的DTS服务器访问授权对话框单击测试连接。 
 
- 配置任务对象。 - 在对象配置区域,配置待传输的对象。 - 配置 - 说明 - 任务步骤 - 根据业务需求进行选择,支持全量同步和增量同步。 - 实例级别选择所需同步的DDL和DML - 您可以按实例级别选择需要增量传输的SQL操作。 - 目标已存在表的处理模式 - 无需配置,保持默认即可。 - 源库对象 - 在源库对象框中单击待传输的对象,然后单击  将其移动到已选择对象框。说明 将其移动到已选择对象框。说明- 若目标库中的表名和列名与源库完全一致,则对象选择的粒度支持为整库和表。否则,对象选择的粒度仅支持为表。 - 已选择对象 - 在已选择对象框中,右键单击从源库对象中移动过来的数据库。 
- 在弹出的编辑库对话框中,将目标库名修改为目标AnalyticDB PostgreSQL版实例中用于接收数据的Schema名称。 
- 单击确定。 
 
- 在映射列区域配置映射列信息,以存储数据准备操作生成的向量数据。 - 单击添加映射列。 
- 在源 (库/表/列)列中,按层级关系选择源库中需要映射的列。 - DTS会将您在源 (库/表/列)中选择的库、表、列,填充至目标 (库/表)和目标映射列。 
- 可选:根据实际情况,将目标 (库/表)和目标映射列的信息,修改为目标AnalyticDB PostgreSQL版实例中用于存储向量数据的库名、表名、列名。 
- 可选:重复上述步骤,添加多个映射列。 
 
- 单击下一步向量配置。 - 如需为映射列配置解析、Chunk及Embedding策略,请执行以下操作。 - 在目标映射列的所在行,单击操作列的修改配置。 
- 在弹出的修改配置面板,选择对应策略区域的推荐策略。 
- 修改推荐策略。 - 策略名称 - 参数名称 - 说明 - 解析策略 - 保留元素 - 以元素为粒度对映射列的数据进行过滤(包含需保留和需排除的元素),将符合要求的数据传输至目标AnalyticDB PostgreSQL版实例的映射列。 说明- 多个元素以英文逗号(,)分隔。 - 排除元素 - Chunk策略 - Chunk 算法 - 将文本切分为Chunk时,使用的算法。 - 每个 Chunk 块最大字符数 - 将文本切分为Chunk时,每个Chunk中最多能包含的字符数(ChunkSize)。 - 两个 Chunk 块间最大重叠字符数 - 将文本切分为Chunk时,两个相邻Chunk之间最大允许重叠的字符数(ChunkOverlap)。 - 保留 Chunk 原文 - 若您需要保留Chunk原文,则还需填写目标AnalyticDB PostgreSQL版实例中用于存储Chunk原文的列名。 - 保留 Chunk ID - 若您需要保留Chunk ID,则还需填写目标AnalyticDB PostgreSQL版实例中用于存储Chunk ID的列名。 - Embedding策略 - 选择 Embedding 模型 - 默认为AnalyticDB-PostgreSQL,且不支持修改。 
- 配置完成后,单击确定。 
 
- 单击下一步高级配置,进行高级参数配置。 - 配置 - 说明 - 源库、目标库无法连接后的重试时间 - 在数据准备任务启动后,若源库或目标库连接失败则DTS会报错,并会立即进行持续的重试连接,默认持续重试时间为720分钟,您也可以在取值范围(10~1440分钟)内自定义重试时间,建议设置30分钟以上。如果DTS在设置的重试时间内重新连接上源库、目标库,数据准备任务将自动恢复。否则,数据准备任务将会失败。 说明- 针对同源或者同目标的多个DTS实例,如DTS实例A和DTS实例B,设置网络重试时间时A设置30分钟,B设置60分钟,则重试时间以低的30分钟为准。 
- 由于连接重试期间,DTS将收取任务运行费用,建议您根据业务需要自定义重试时间,或者在源和目标库实例释放后尽快释放DTS实例。 
 - 源库、目标库出现其他问题后的重试时间 - 在数据准备任务启动后,若源库或目标库出现非连接性的其他问题(如DDL或DML执行异常),则DTS会报错并会立即进行持续的重试操作,默认持续重试时间为10分钟,您也可以在取值范围(1~1440分钟)内自定义重试时间,建议设置10分钟以上。如果DTS在设置的重试时间内相关操作执行成功,数据准备任务将自动恢复。否则,数据准备任务将会失败。 重要- 源库、目标库出现其他问题后的重试时间的值需要小于源库、目标库无法连接后的重试时间的值。 - 是否限制增量同步速率 - 您也可以根据实际情况,选择是否对增量任务进行限速设置(设置每秒增量同步的行数RPS和每秒增量同步的数据量(MB)BPS),以缓解目标库的压力。 - 为目标对象添加引号 - 选择是否需要为目标对象添加引号。 - 选择是:若源库存在以下情况,DTS会在增量数据传输阶段,自动为符合要求的Schema、表或列名添加半角单引号(')或半角双引号(")。 - 源库所属的业务环境对大小写敏感且大小写混用。 
- 源表名不是以字母开头,且包含字母、数字或特殊字符以外的字符。 说明- 特殊字符仅支持下划线(_),井号(#)和美元符号($)。 
- 待传输的Schema、表或列名称是目标库的关键字、保留字或非法字符。 
 
- 选择否:DTS不会为目标对象添加引号。 
 - 是否去除正反向任务的心跳表sql - 根据业务需求选择是否在DTS实例运行时,在源库中写入心跳SQL信息。 - 是:不在源库中写入心跳SQL信息,DTS实例可能会显示有延迟。 
- 否:在源库中写入心跳SQL信息,可能会影响源库的物理备份和克隆等功能。 
 - 环境标签 - 您可以根据实际情况,选择用于标识实例的环境标签。本示例无需选择。 - 配置ETL功能 - 监控告警 - 是否设置告警,当数据准备任务失败或延迟超过阈值后,将通知告警联系人。 - 不设置:不设置告警。 
- 设置:设置告警,您还需要设置告警阈值和告警联系人。更多信息,请参见在配置任务过程中配置监控告警。 
 
 
- 保存任务并进行预检查。 - 若您需要查看调用API接口配置该实例时的参数信息,请将鼠标光标移动至下一步保存任务并预检查按钮上,然后单击气泡中的预览OpenAPI参数。 
- 若您无需查看或已完成查看API参数,请单击页面下方的下一步保存任务并预检查。 
 说明- 在数据准备任务正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动数据准备任务。 
- 如果预检查失败,请单击失败检查项后的查看详情,并根据提示修复后重新进行预检查。 
- 如果预检查产生警告: - 对于不可以忽略的检查项,请单击失败检查项后的查看详情,并根据提示修复后重新进行预检查。 
- 对于可以忽略无需修复的检查项,您可以依次单击点击确认告警详情、确认屏蔽、确定、重新进行预检查,跳过告警检查项重新进行预检查。如果选择屏蔽告警检查项,可能会导致数据不一致等问题,给业务带来风险。 
 
 
- 购买实例。 - 预检查通过率显示为100%时,单击下一步购买。 
- 在购买页面,选择数据准备实例的计费方式、链路规格,详细说明请参见下表。 - 类别 - 参数 - 说明 - 信息配置 - 资源组配置 - 实例所属的资源组,默认为default resource group。更多信息,请参见什么是资源管理。 - 链路规格 - 默认为large,且不支持修改。 
- 配置完成后,阅读并勾选《数据传输(按量付费)服务条款》。 
- 单击购买并启动,并在弹出的确认对话框,单击确定。 - 您可在数据准备页面查看具体任务进度。