HybridDB for MySQL原生支持直接从RDS实时同步数据,用户可以快速地构建起RDS到HybridDB for MySQL的同步关系,轻松实现数据流转和复杂查询加速。
前提条件
- 必须使用阿里云主账户执行该操作。
- 该操作只支持阿里云RDS for MySQL(5.6版本)数据源,网络类型可以是经典网络或者专有网络。不支持自建MySQL。
- 考虑到数据的绝对精确,目前仅支持主键表的同步,不支持非主键表的同步。
- 一个RDS实例推荐只创建一个同步通道,同步过程需要使具有SELECT权限的RDS实例用户。
- 实例必须是高性能计算规格实例,并且实例状态为运行中。
- 源RDS实例已经创建了只读账户。
- HybridDB for MySQL节点资源会限制最大同步任务数,双节点实例最多不要超过64个同步任务;支持一个任务同步多个表,节省资源。如果实例节点数较少,而同步任务数较多时,可能出现同步任务不运行的情况。
操作步骤
- 在HybridDB for MySQL控制台开启引擎内部监控,操作如下:
- 登录 HybridDB for MySQL管理控制台。
- 找到目标实例,单击实例右侧的管理选项。
- 在左侧导航栏中,单击引擎详情。
说明 只有分析引擎CStore的实例才会出现该导航选项。
- 在引擎详情页点击开启引擎内部监控。
- 开通后,根据当前访问IP是否在内部控制台访问白名单内,引擎详情出现不同的选项。
- 页面出现内部引擎控制详情按键,请跳转至步骤 i。
- 页面出现修改内部控制台白名单按键,请跳转至下一步。
- 单击修改内部控制台白名单,系统弹出对话框。
- 删除网络访问白名单中的
127.0.0.1
,填入引擎详情页下方显示的当前访问IP,单击确认。 - 单击内部引擎控制详情,跳转至HybridDB for MySQL控制台(内部),如下图所示。
-
使用HybridDB for MySQL实例的账号和密码登录HybridDB for MySQL内部控制台。
-
在左侧导航中,选择DataSync。
-
在Data Sync页的DataSource页签中单击创建数据同步通道。
- 在创建数据同步通道页中,填入参数后,单击下一步,等待几分钟即可完成同步通道创建。
必填参数说明:
同步通道名称
:根据源实例的用途填写,支持英文字母或数字,长度控制在128个字符,可以与RDS实例名称一样。RDS实例名称
:需要进行同步的源RDS实例名称。账号
:全量同步时访问源RDS实例的账号。密码
:全量同步时访问源RDS实例的账号密码。
可选参数(一般不用填写,如果RDS实例为只读实例时请必填):
RDS实例所在Region
:源RDS实例所在地域,不配置会默认是源实例所在位置。备库URL
:可选。RDS实例从库实例名称
:可选,指定RDS从库的实例名称。如果配置了该参数,系统从指定的备库同步而不从主库同步。
- 回到DataSync首页,点击同步任务列表中的同步表结构。
- 在表同步结构页,在左侧选择栏选择源RDS实例的表结构,通过向右箭头将其选入右侧目标栏。如需撤回,可以选择右侧的目标表,单击向左箭头将其撤回。
目前支持三种同步模式的表定义类型,以适应多库多表的同步场景:
- 目标表名需要源表schema作为前缀:目标表自动加上原表schema作为前缀,可以用于多库同步到中心库,但对表名敏感的应用有侵入。
- 多实例多库相同表同步至单表:目标表自动增加一个source_schema字段放在第一列,该字段存储通道信息、库信息、表信息,并作为联合主键,防止多实例多库分库分表同步到一个目标表出现主键冲突。如果确定同步不会出现主键冲突,可以不使用这个模式。
- 多实例单库相同表同步至单表:目标表自动增加一个source字段放在第一列,该字段存储通道信息、表信息,并作为联合主键,防止多实例单库分库分表同步到一个目标表出现主键冲突。如果确定同步不会出现主键冲突,可以不使用这个模式。
- 单击预览目标表进入如下页面:
针对特定场景的表结构,需要仔细审核。如需修改建表语句,有两种操作方式可供选择。
- 在对应表记录左侧操作列中,单击修改表结构进入如下页面:
上方的RDS Table DDL为源表的DDL,不可编辑;下方的HDB Table DDL为HybridDB for MySQL表的DDL,可编辑。完成编辑后,单击保存修改返回原页面。
- 如果是多张分库分表同步到一张HybridDB for MySQL目标表,点击页面下方的批量修改表结构进入如下页面:
在左侧选择栏选中具有相同表结构的源表,在右侧输入框中输入目标表名后按回车,即可以编辑右下方的HDB表结构内的DDL,完成修改后,单击保存修改返回原页面。
- 在对应表记录左侧操作列中,单击修改表结构进入如下页面:
- 在表结构同步页,单击开始建表,开始表结构同步。
如出现失败信息,请修改表结构后,再继续执行。
说明 同步表结构过程中涉及到DDL修改,容易出现错误,如有问题请随时联系阿里云客服获取技术支持。 -
在创建同步任务页,选择同步类型和数据源表结构,然后单击下一步。
两种同步类型:
全量同步
:数据以SELECT的方式全量写入HybridDB for MySQL。增量同步
:数据以binlog的方式从RDS同步到HybridDB for MySQL。
参数:
起始时间
:指定增量同步的开始时间,可以指定(一般无需指定)从哪个时间点开始同步数据。注意 由于MySQL的binlog采用的是UTC时间,在操作时,该参数时间为当前浏览器的时间,后台会自动将浏览器的时间转换成UTC格式的时间。起始offset
:指定增量同步的日志起点,只用于引擎内部,用户无需关心。批量表大小
:指定增量同步并发同步的表数量,一般推荐20张表并发同步,这样可以提升同步性能,如果需要同步大量的表,可以将该参数设置得大一些。监听种类
:默认为Insert、Update和Delete。
-
在如下页面,单击开始同步,启动同步任务。
注意 在创建同步任务时,如果同时勾选了全量迁移和增量同步,系统执行时会自动以先全量后增量的方式进行同步。 - 查看任务状态。
可在DataSync的DataSync Jobs页签查看任务状态。
- 如果,任务状态正常,请跳过该步骤。如任务无法正常执行,用户可以取消任务,然后重新执行上述操作,执行新的同步任务。
在DataSync Jobs页签中,选择对应任务的Operation列,选择取消。
RDS MySQ同步到HybridDB for MySQL的SQL兼容性
DML支持情况
操作 | 支持 | 备注 |
---|---|---|
REPLACE | 是 | 对应HybridDB for MySQL的REPLACE |
INSERT | 是 | 对应HybridDB for MySQL的REPLACE |
UPDATE | 是 | 对应HybridDB for MySQL的REPALCE |
DELETE | 是 | 对应HybridDB for MySQL的DELETE,用户在配置任务时可选择是否同步源端的DELETE,默认为同步 |
对于不支持的DDL,均忽略不处理。
操作 | 支持 | 备注 |
---|---|---|
CREATE TABLE | 否 | 用户需使用表结构同步功能迁移表结构,进而建立同步任务 |
DROP TABLE | 否 | 忽略不处理 |
TRUNCATE TABLE | 否 | 忽略不处理 |
RENAME TABLE | 否 | 忽略不处理 |
OPTIMIZE TABLE | 否 | 忽略不处理 |
ALTER TABLE ADD COLUMN | 是 | 会忽略源表列的NOT NULL 属性 |
ALTER TABLE DROP COLUMN | 否 | 此列在HybridDB for MySQL的表中仍然存在。若此列没有NOT NULL属性,不影响同步任务 |
ALTER TABLE RENAME COLUMN | 否 | 可能导致同步任务失败 |
ALTER TABLE MODIFY COLUMN | 否 | 可能导致同步任务失败 |
所有索引DDL | 否 | HybridDB for MySQL提供了全部列索引 |