DTS支持从MySQL将数据实时同步到AnalyticDB for PostgreSQL,用户可以很方便的搭建起MySQL到AnalyticDB for PostgreSQL的数据同步,轻松实现数据的流转和复杂查询的优化。
前提条件
- 要求同步的数据表,必须建有主键(通过主键来保证源端和目标端表记录一致性)。
- 支持(INSERT/UPDATE/DELETE)语句的数据同步,及ALTER TABLE ADD/DROP/RENAME COLUM 的DDL语句同步,不支持 CREATE/DROP TABLE等其它 DDL 语句同步。
操作步骤
1、由于暂时不支持数据结构的迁移,所以需要先在AnalyticDB for PostgreSQL中创建对应的database、schema、table结构。
2、创建DTS同步任务
- 进入DTS产品详情页,点击“立即购买”
- 售卖页上进行各种配置,配置项说明如下表
配置项 | 说明 |
---|---|
功能 | 数据同步 |
源实例 | MySQL |
源实例地域 | 本例选择华东1(杭州) |
目标实例 | AnalyticDB for PostgreSQL |
目标实例地域 | 本例选择华东1(杭州) |
同步拓扑 | 单向同步 |
网络类型 | 专线 |
同步链路规格 | 本例选择large |
在确认订单页面,勾选《数据传输服务(按量付费)服务协议》,根据提示完成支付流程。
3、配置同步链路
- 登录DTS控制台
- 在数据传输页面,单击左侧导航栏中的数据同步
- 选择地域
- 在同步作业列表中,单击目标实例右侧的配置同步链路,在选择同步通道的源及目标实例页面进行参数配置
- 完成上述配置,单击授权白名单并进入下一步
-
进入选择同步对象页面,完成下面步骤配置后
- 如果需要全量数据初始化,则选上全量数据初始化
-
对于目标表中已经存在数据的处理,有三种:
- 预检查并报错拦截(检查发现目标表中已有数据,则直接报错停止);
- 清空目标表数据(检查发现目标表中已有数据,做清空表数据操作);
- 无操作(无论目标表是否有数据,不做任何操作跳过)
- 针对OLAP类型的需求,用户可以选择同步的操作类型,默认全部同步(INSERT、UPDATE、DELETE、ALTER(目前支持add column/drop column/rename column/alter column type))
- 源库对象和目标库对象的对应关系为:MySQL的database.table,对应到AnalyticDB for PostgreSQL中的层级是schema.table,因此选择源库对象后,需要在已选择对象框中做对应修改,主要是MySQL的database对应到AnalyticDB for PostgreSQL的schema(不是database)!如下图
-
完成上述操作后,单击预检查并启动,弹出预检查页面
- 如果预检查显示失败,可以根据提示DTS预检查进行排错处理
- 预检查全部成功后,单击关闭
4、返回DTS控制台,在同步列表中的同步概况中查看同步延时和速度
注意事项
- 配置同步链路过程中,如果目标表中列信息与源表不同,DTS支持字段映射功能。详细步骤参见库表列映射,再次强调MySQL中的database对应到AnalyticDB for PostgreSQL中是schema!
- 因为不支持CREATE TABLE表结构同步,所以在同步启动前,需要在AnalyticDB for PostgreSQL中创建好对应的schema和table;在同步过程中,如果源库有create操作,需要手工在目标库中做对应测create操作,否则同步会报错。
- DTS写入AnalyticDB for PostgreSQL的账号权限要包括SELECT、INSERT、UPDATE、DELETE、COPY、TRUNCATE、ALTER TABLE。
- 不支持JSON、GEOMETRY、CURVE、SURFACE、MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION类型的数据同步